Lesen einer Schildkröte / N3 RDF Datei mit Python

Ich versuche, einige botanische Daten im Turtle- Format zu kodieren und diese Daten von Python mit RDFLib zu lesen. Allerdings habe ich Schwierigkeiten, und ich bin mir nicht sicher, ob es so ist, weil meine Schildkröte falsch ist oder ich bin Missbrauch RDFLib.

Meine Testdaten sind:

@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 ] ] . 

Und meine Python ist:

 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 

Was gibt mir die Fehler:

 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', []]] 

Ich habe versucht, die Parse () Parameter zu ändern, aber alles gibt mir einen Fehler. Ich habe wenig zu keinem Beispiel gefunden, wie man Turtle analysiert. Was mache ich falsch?

One Solution collect form web for “Lesen einer Schildkröte / N3 RDF Datei mit Python”

Ich denke, das erste Problem ist mit dem Großbuchstaben PREFIX – wenn man diese PREFIX es an diesem Punkt vorbei. Nicht sicher, ob es ein Fehler in rdflib oder in der Schildkröte .ttl , Aber die Turtle Validator Online-Demo scheint zuzustimmen, dass es ein Problem mit der .ttl (sagt Validation failed: The @PREFIX directive is not supported, line 1 col 0. aber Dieses Problem geht weg, wenn man sie niederlegt).

Sobald du an dieser Hürde vorbei bist, mag kein Parser den Teil um p:given_by [ : "Schlechte Syntax (']' erwartet) bei ^ in:" … per rdflib; Schildkröten-Validator sagt

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

So dass es die p:source/Philip_Miller part nicht besonders mag.

Von diesen beiden Ausgaben (wer weiß, ob es andere gibt …!) Ich denke, dass Sie schließen können, dass diese N3-Quelle (die .ttl Datei, die Sie posten) gebrochen ist, und wenden Sie Ihre Aufmerksamkeit auf das System, das diese Datei an erster Stelle gemacht hat , Und warum macht es es in einer so vielfach gebrochenen Weise.

Python ist die beste Programmiersprache der Welt.