2017-05-31 2 views
0

Ich frage mich, warum wir eine Ontologie laden müssen, stellen Sie auch ihren Namensraum zur Verfügung, während Sie es abfragen? Warum ist das Laden der Ontologie nicht genug?Warum bei der Abfrage von Ontologien müssen wir die Ontologie laden, stellen Sie auch ihren Namensraum zur Verfügung?

meine Frage besser zu verstehen, hier ist ein Codebeispiel:

g = rdflib.Graph() 
g.parse('ppp.owl', format='turtle') 
ppp = rdflib.Namespace('http://purl.org/xxx/ont/ppp/') 
g.bind('ppp', ppp) 

In Zeile 2 wir die Ontologie (ppp.owl) geöffnet haben, aber in der Linie 3 wir zur Verfügung stellten auch seinen Namensraum. Zeigt der Namespace dem Programm an, wie mit der Ontologie verfahren werden soll?

Cheers, RF

+0

Wer hat Ihnen gesagt, dass Sie einen Namespace hinzufügen müssen? Was Sie mit den Zeilen tun, ist ein Namespacepräfix zu deklarieren. Nicht mehr, nicht weniger. – AKSW

Antwort

3

Um ein Element über das semantische Web angeben Sie müssen ihre URI: Unique Resource Identifier, die des Namespace und den lokalen Namen zusammengesetzt ist. Betrachten Sie beispielsweise Person eine RDF-Klasse; wie würdest du die Person DBpedia-Klasse http://dbpedia.org/ontology/Person von Person in irgendeiner anderen Ontologie irgendwo unterscheiden? Sie benötigen den Namensraum http://dbpedia.org/ontology/ und den lokalen Namen Person. Welche beide die Klasse eindeutig identifizieren.

Kommen wir nun zu Ihrer spezifischen Frage zurück, wenn Sie die Ontologie abfragen, können Sie mehrere Namespaces verwenden, einige Namespaces sind möglicherweise nicht der Ihrer Ontologie. Sie benötigen andere Namespaces zum Abfragen Ihrer eigenen Ontologie, z. rdf, rdfs und owl. Als Beispiel können Sie selten eine beliebige Abfrage ohne die Eigenschaft rdf:type schreiben, die im Namespace rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns> enthalten ist, nicht in Ihrem Ontologie-Namespace. Daher müssen Sie den Namespace angeben.

Nun, wie Sie wissen sollten, warum einen Namespace verwenden, können wir fortfahren. Warum sollte die gesamte Zeichenfolge des Namespace jedes Mal wiederholt werden, wenn sie benötigt wird? Es ist nichts weiter als eine Präfix-Zeichenfolge, die an die lokalen Namen angehängt wird, um sie in der Abfrage zu verwenden, um zu vermeiden, dass die vollständige URL vollständig geschrieben wird. Sehen Sie den Unterschied zwischen <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> und type.

bearbeiten

Wie @AKSW sagt, als Abschluss, gibt es keine Notwendigkeit, einen Namensraum, um mit der Ontologie zu arbeiten, um zu erklären, aber es erhöht den Komfort, wenn sehr oft mit Ressourcen arbeiten, deren URI hat insbesondere Namensraum.

+0

Sie sollten als eine Schlussfolgerung hinzufügen, dass es keine Notwendigkeit gibt, einen Namespace zu deklarieren, um mit der Ontologie zu arbeiten, aber es erhöht den Komfort, wenn Sie häufig mit Ressourcen arbeiten, deren URI einen bestimmten Namespace hat – AKSW

+0

hinzugefügt meine Antwort –

+0

Danke Median. Es scheint, dass ich mit meiner Frage nicht klar gewesen bin. Ich verstehe, wie man Namespaces verwendet und warum wir sie verwenden. Aber in diesem speziellen Beispielcode hat der Programmierer die Ontologie von einer lokalen Datei geladen und auch seinen Namensraum hinzugefügt. Es scheint, dass der Code nicht funktioniert, ohne den Namespace zu definieren und die Datei lokal zu laden. Jetzt ist meine Frage warum das der Fall ist? Warum nur einer von ihnen ist nicht genug? Oder vielleicht fehlt mir hier ein Punkt? Vielen Dank. –

Verwandte Themen