Samstag, Februar 22, 2020

Lesen Sie einen Turtle/N3-RDF-Datei mit Python

Ich versuche zu Kodieren einige botanische Daten in Schildkröte – format und Lesen Sie diese Daten von Python mit RDFLib. Aber ich habe Probleme, und ich bin mir nicht sicher, ob es ist, weil meine Schildkröte ist ungültig oder ich bin missbrauchen RDFLib.

Meinem test-Daten:

@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

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

Habe ich versucht, die Variation der parse () – Parameter, aber das alles gibt mir eine Fehlermeldung. Die ich gefunden habe wenig bis gar keine Beispiele auf, wie zu analysieren Schildkröte. Was mache ich falsch?

InformationsquelleAutor Cerin | 2010-08-24

1 Kommentar

  1. 10

    Ich denke, das erste problem w/der Großbuchstaben PREFIX— wenn Sie Kleinbuchstaben diejenigen, die es vorbei an diesem Punkt. Nicht sicher, ob es ein bug in rdflib oder in die Schildkröte .ttl, aber die Turtle Validator online-demo scheint zu Stimmen, es ist ein problem mit der .ttl (sagt Validation failed: The @PREFIX directive is not supported, line 1 col 0. aber das problem geht Weg, wenn Sie Sie Kleinbuchstaben).

    Sobald Sie Vergangenheit, die Hürde, weder parser mag das Teil um p:given_by [: „Bad syntax (‚]‘ erwartet) bei ^ in:“… pro rdflib; Turtle Validator sagt

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

    so ist es speziell Abneigungen der p:source/Philip_Miller Teil.

    Von diesen zwei Themen (wer weiß, wenn es noch andere gibt…!) Ich denke, man kann daraus schließen, dass dieser N3-Quelle (die .ttl – Datei, die Sie veröffentlichen) gebrochen ist, und schalten Sie Ihre Aufmerksamkeit auf das, was system gemacht diese Datei in den ersten Platz, und warum ist es so dass es in einem so vielfach gebrochene Art und Weise.

    • Danke. Ändern, die Zeile <source – /Philip_Miller> scheint das problem zu beheben.

Kostenlose Online-Tests