2010-08-24 7 views
8

के साथ एक कछुए/एन 3 आरडीएफ फ़ाइल पढ़ना मैं Turtle प्रारूप में कुछ वनस्पति डेटा को एन्कोड करने की कोशिश कर रहा हूं, और RDFLib का उपयोग करके पाइथन से यह डेटा पढ़ रहा हूं। हालांकि, मुझे परेशानी हो रही है, और मुझे यकीन नहीं है कि ऐसा इसलिए है क्योंकि मेरा कछुआ खराब है या मैं misusing RDFLib हूं।पायथन

मेरा परीक्षण डेटा है:

@PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@PREFIX p: <http://www.myplantdomain.com/plant/description> . 
p:description a rdfs:Property . 
p:name a rdfs:Property . 
p:language a rdfs:Property . 
p:value a rdfs:Property . 
p:gender a rdfs:Property . 
p:inforescence a rdfs:Property . 
p:color a rdfs:Property . 
p:sense a rdfs:Property . 
p:type a rdfs:Property . 
p:fruit a rdfs:Property . 
p:flower a rdfs:Property . 
p:dataSource a rdfs:Property . 
p:degree a rdfs:Property . 
p:date a rdfs:Property . 
p:person a rdfs:Property . 
p:c2a7b9a3-c54a-41f5-a3b2-155351b3590f 
    p:description [ 
     p:name [ 
      p:kingdom "Plantae" ; 
      p:division "Pinophyta" ; 
      p:class "Pinopsida" ; 
      p:order "Pinales" ; 
      p:family "Pinaceae" ; 
      p:genus "Abies" ; 
      p:species "A. alba" ; 
      p:language "latin" ; 
      p:given_by [ 
       p:person p:source/Philip_Miller ; 
       p:start_date "1923-1-2"^^<http://www.w3.org/2001/XMLSchema#date> 
      ] 
     ] ; 
     p:name [ 
      p:language "english" ; 
      p:value "silver fir" 
     ] ; 
     p:flower [ 
      p:gender "male"@en ; 
      p:inflorescence "catkin"@en ; 
      p:color "brown"@en ; 
      p:color "yellow"@en ; 
      p:sense "straight"@en 
     ] ; 
     p:flower [ 
      p:gender "female"@en ; 
      p:inflorescence "catkin"@en ; 
      p:color "pink"@en ; 
      p:color "yellow"@en ; 
      p:sense "straight"@en 
     ] ; 
     p:fruit [ 
      p:type "cone"@en ; 
      p:color "brown"@en 
     ] 
    ] . 

और मेरे अजगर है:

import rdflib 
g = rdflib.Graph() 
#result = g.parse('trees.ttl') 
#result = g.parse('trees.ttl', format='ttl') 
result = g.parse('trees.ttl', format='n3') 
print len(g) 
for stmt in g: 
    print stmt 

कौन सा मुझे त्रुटियों देता है:

ValueError: Found @PREFIX when expecting a http://www.w3.org/2000/10/swap/grammar/n3#document . todoStack=[['http://www.w3.org/2000/10/swap/grammar/n3#document', []]] 

मैं पार्स अलग की कोशिश की है() पैरामीटर, लेकिन सब कुछ मुझे एक त्रुटि देता है। मुझे टर्टल को पार्स करने के तरीके पर कोई उदाहरण नहीं मिला है। मैं क्या गलत कर रहा हूं?

उत्तर

10

मुझे लगता है कि पहली समस्या w/अपरकेसPREFIX - यदि आप उन्हें कम करते हैं तो यह उस बिंदु से पहले हो जाता है। सुनिश्चित नहीं है कि यह rdflib में या कछुए .ttl में एक बग है, लेकिन Turtle Validator ऑनलाइन डेमो यह मानता है कि यह .ttl (Validation failed: The @PREFIX directive is not supported, line 1 col 0. कहता है) में समस्या है लेकिन यदि आप उन्हें कम करते हैं तो यह समस्या दूर हो जाती है)।

एक बार जब आप उस बाधा से गुजर चुके हैं, न तो पार्सर p:given_by [ के आसपास भाग पसंद करता है: "खराब वाक्यविन्यास (']' अपेक्षित)^में:" ... per rdflib; कछुए सत्यापनकर्ता

Validation failed: Expecting a period, semicolon, comma, close-bracket, or close-brace but found '/', line 31 col 33. 

तो यह विशेष रूप से p:source/Philip_Miller हिस्सा नापसंद कहते हैं।

इन दो मुद्दों (जो जानता है कि अगर वहाँ दूसरों रहे हैं ...!) मुझे लगता है कि आप निष्कर्ष निकाल सकते हैं कि इस N3 स्रोत ( .ttl फ़ाइल आपके द्वारा पोस्ट) टूट गया है, और जो प्रणाली बनाया की ओर आपका ध्यान बारी से

पहली जगह में फ़ाइल करें, और यह इसे इतनी गुणात्मक तरीके से क्यों बना रही है।

+0

धन्यवाद। उस पंक्ति को <स्रोत/फिलिप_Miller> में बदलना समस्या को ठीक करने लगता है। – Cerin

+0

@ क्रिस, जानना अच्छा, धन्यवाद! –