RDFLib

2014-05-07 7 views
5

का उपयोग कर आरडीएफ फ़ाइल में ग्राफ को निर्यात करने के लिए कैसे मैं पाइथन 3.4 में RDFLib का उपयोग करके आरडीएफ डेटा उत्पन्न करने की कोशिश कर रहा हूं।RDFLib

एक न्यूनतम उदाहरण:

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')) 

निम्न त्रुटि में इस कोड को परिणाम:

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

अगर मैं के साथ अंतिम पंक्ति की जगह:

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

मैं नहीं मिलता है त्रुटि, लेकिन परिणाम एक बाइनरी स्ट्रीम (पाठ sta की एक पंक्ति का एक स्ट्रिंग प्रतिनिधित्व है b' के साथ) rting:

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' 

प्रश्न कैसे मैं सही ढंग से एक फ़ाइल में ग्राफ निर्यात करूं?

उत्तर

7

serialize method एक गंतव्य पथ स्वीकार करता है जो एक फ़ाइल पथ है। अपने उदाहरण में, आप का उपयोग करना चाहते हैं:

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

इसके बजाय

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

यह काम करता है। मदद के लिए शुक्रिया। –

+0

@lawlesst: मुझे एक ही समस्या है हालांकि, अगर मैं निर्देशिका को बदलना नहीं चाहता हूं तो serializer ठीक काम करता है लेकिन जैसे ही मैं इसे किसी अन्य ड्राइव में बदलता हूं, यह IOError देता है: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: स्केन/आउटपुट/स्केन/ontolog_output/NVDB_RA1/NVDB_RNO_V5042_RDF.owl। जैसा कि आप देखते हैं कि निर्देशिका नाम गुम है जो urlparse() फ़ंक्शन का उपयोग करने के कारण है। क्या मुझे sth याद आ रही है या क्या यह कोड में एक बग है? – msc87

+0

@ msc87 मुझे इस समस्या का सामना नहीं हुआ है। आरडीएफएलआईबी अन्य पथों पर फाइलों को क्रमबद्ध करने में सक्षम है। मैं इसे नियमित रूप से उपयोग करता हूं। क्या आप पूर्ण फ़ाइल पथ प्रदान कर रहे हैं? मैं कोशिश करता हूँ। अगर आपको एक समान त्रुटि मिलती है तो "/tmp/myfile.owl" जैसे कुछ भी कोशिश करें। –