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?
Nó hoạt động. Cảm ơn sự giúp đỡ của bạn. –
@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
@ 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ự. –