2014-05-07 16 views
5

Tôi đang cố tạo dữ liệu RDF bằng RDFLib trong Python 3.4.Cách xuất biểu đồ trong tệp RDF bằng RDFLib

Một ví dụ nhỏ:

from rdflib import Namespace, URIRef, Graph 
from rdflib.namespace import RDF, FOAF 

data = Namespace("http://www.example.org#") 

g = Graph() 

g.add((URIRef(data.Alice), RDF.type , FOAF.person)) 
g.add((URIRef(data.Bob), RDF.type , FOAF.person)) 
g.add((URIRef(data.Alice), FOAF.knows, URIRef(data.Bob))) 

#write attempt 
file = open("output.txt", mode="w") 
file.write(g.serialize(format='turtle')) 

Mã này kết quả trong các lỗi sau:

file.write(g.serialize(format='turtle')) 
TypeError : must be str, not bytes 

Nếu tôi thay thế các dòng cuối cùng với:

file.write(str(g.serialize(format='turtle'))) 

Tôi không nhận được lỗi, nhưng kết quả là một biểu diễn chuỗi của một luồng nhị phân (một dòng văn bản duy nhất rting với b'):

b'@prefix ns1: <http://xmlns.com/foaf/0.1/> .\[email protected] rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\[email protected] rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\[email protected] xml: <http://www.w3.org/XML/1998/namespace> .\[email protected] xsd: <http://www.w3.org/2001/XMLSchema#> .\n\n<http://www.example.org#Alice> a ns1:person ;\n ns1:knows <http://www.example.org#Bob> .\n\n<http://www.example.org#Bob> a ns1:person .\n\n' 

Câu hỏi Làm thế nào để đúng xuất khẩu đồ thị vào một tập tin?

Trả lời

7

serialize method chấp nhận từ khóa đích là đường dẫn tệp. Trong ví dụ của bạn, bạn sẽ muốn sử dụng:

g.serialize(destination='output.txt', format='turtle')) 

Thay vì

file = open("output.txt", "w") 
file.write(g.serialize(format='turtle')) 
+0

Nó hoạt động. Cảm ơn sự giúp đỡ của bạn. –

+0

@lawlesst: Tôi gặp vấn đề tương tự tuy nhiên, nếu tôi không muốn thay đổi thư mục serializer hoạt động tốt nhưng ngay sau khi tôi thay đổi nó sang ổ đĩa khác, nó trả về IOError: [Errno 2] Không có tệp hoặc thư mục nào như vậy: Skane/Output/Skane/ontolog_output/NVDB_RA1/NVDB_RNO_V5042_RDF.owl. khi bạn thấy tên thư mục bị thiếu, đó là do sử dụng hàm urlparse(). Tôi có thiếu sth hoặc là một lỗi trong mã? – msc87

+0

@ msc87 Tôi chưa gặp sự cố này. RDFLib có thể tuần tự hóa các tệp thành các đường dẫn khác. Tôi sử dụng thường xuyên. Bạn có cung cấp đường dẫn tệp tuyệt đối không? Tôi sẽ thử điều đó. Cũng thử một cái gì đó như "/ tmp/myfile.owl" và seef nếu bạn nhận được một errorr tương tự. –

Các vấn đề liên quan