2016-04-18 15 views
0

Lets sagen, dass ich das folgende Szenario haben:Wie verwenden Dreifachgeschäfte verknüpfte Daten?

Ich habe einige verschiedene Ontologie Dateien irgendwo im Internet auf verschiedenen Domains wie _http gehostet: //foo1.com/ontolgy1.owl#, _http: //foo2.com/ ontology2.owl # usw.

ich habe auch einen Dreifachspeicher, in dem ich Instanzen eingefügt werden soll auf der Grundlage der Ontologie-Dateien wie folgt erwähnt:

INSERT DATA 
{ 
    <http://foo1.com/instance1> a <http://foo1.com/ontolgy1.owl#class1>. 
    <http://foo2.com/instance2> a <http://foo2.com/ontolgy2.owl#class2>. 
    <http://foo2.com/instance2x> a <http://foo2.com/ontolgy2.owl#class2x>. 
} 

sagen kann, die _http: //foo2.com/ ontolgy2.owl # class2x ist eine Unterklasse von _http: //foo2.com/ontolgy2.owl#class2, die in derselben Ontologie definiert ist.

Und nach dem Einsatz, wenn ich eine SPARQL-Abfrage wie folgt ausführen:

select ?a 
where 
{ 
    ?a rdf:type ?type. 
    ?type rdfs:subClassOf* <http://foo2.com/ontolgy2.owl#class2> . 
} 

das Ergebnis wäre:

<http://foo2.com/instance2> 

und nicht:

<http://foo2.com/instance2> 
<http://foo2.com/instance2x> 

wie es sein sollte . Dies geschieht, weil die Ontologiedatei _http: //foo2.com/ontolgy2.owl# nicht in den Triple Store importiert wird.

Meine Frage ist:

Können wir in diesem Beispiel über „verknüpft“ Daten sprechen? Weil es mir scheint, dass es überhaupt nicht verbunden ist. Es muss lokal in einen Triple Store importiert werden und danach kann mit der Abfrage begonnen werden.

Nehmen wir an, wenn Sie eine Abfrage für einige komplexe Daten ausführen möchten, die von 20 Ontologie-Dateien beschrieben wird, müssten alle 20 Ontologie-Dateien importiert werden.

Ist das nicht ein bisschen enttäuschend?

Verstehen Sie Triple Stores und verknüpfte Daten falsch und wie funktionieren sie?

Antwort

2

wie es sein sollte.

Ich bin nicht sicher, dass sollte hier der richtige Begriff ist. Die Semantik der SPARQL-Abfrage dient zum Abfragen der Daten, die in einem bestimmten Diagramm gespeichert sind, das am Endpunkt gespeichert ist. IRIs sind mehr oder weniger opak Identifikatoren; nur weil es sich auch um URLs handelt, aus denen zusätzliche Daten abgerufen werden können, ist kein bestimmtes System verpflichtet, diese Art von Abruf tatsächlich durchzuführen. Das würde das Abfrageverhalten leicht unvorhersehbar machen: "Diese Abfrage hat gestern funktioniert, warum funktioniert es heute nicht? Oh, eine Remote-Website ist nicht mehr verfügbar & hellip;".

können, die _http sagen: //foo2.com/ontolgy2.owl#class2x ist eine Unterklasse von _http: //foo2.com/ontolgy2.owl#class2 innerhalb derselben Ontologie definiert.

Erinnern Sie sich, da IRIs opak sind, jeder kann eine Laufzeit in jeder Ontologie definieren. Es ist immer möglich, dass jemand anders dazu kommt und etwas anderes über eine Ressource sagt. Sie haben keine Möglichkeit, all diese Informationen zu verfolgen. Wenn ich zum Beispiel eine Ontologie schreibe, kann ich http://foo2.com/ontolgy2 deklarieren.eule # class2x als Klasse und bestätige, dass es äquivalent zu http://dbpedia.org/ontology/Person ist. Sollte das System etwas über das wissen, was ich an einem anderen Ort getan habe, und selbst wenn, dann müsste es Informationen abrufen und abrufen? Was, wenn ich eine Ontologie mit 2 GB Größe gemacht habe? Sicherlich kann von Ihrem Endpunkt nicht erwartet werden, dass er nur zur Beantwortung einer schnellen Abfrage abgerufen wird.

Können wir in diesem Beispiel über "verknüpfte" Daten sprechen? Denn es scheint mir , dass es überhaupt nicht verknüpft ist. Es muss lokal in einen Tripelspeicher importiert werden, und danach können Sie mit der Abfrage beginnen.

Lassen Sie uns sagen, wenn Sie eine Abfrage auf einige komplexe Daten, die von 20 Ontologie-Dateien beschreiben wollen, in diesem Fall muss ich alle 20 Ontologie Dateien importieren. Diese

ist in der Regel der Fall ist, und der Punkt, um verknüpfte Daten ist, dass Sie eine Möglichkeit haben, mehr Informationen zu erhalten, wenn Sie wählen, und dass Sie müssen nicht tun, wie viel Arbeit in Verhandlungen, wie um Ressourcen in diesen Daten zu identifizieren. Sie können jedoch verwenden das Service Schlüsselwort in SPARQL, um andere Endpunkte zu referenzieren, und das kann eine Art der Verknüpfung bieten. Zum Beispiel wissen, dass DBpedia einen SPARQL-Endpunkt hat, kann ich eine lokale Abfrage ausführen, die DBpedia mit so etwas wie dies beinhaltet:

select ?person ?localValue ?publicName { 
    ?person :hasLocalValueOfInterest ?localValue 
    service <http://dbpedia.org/sparql> { 
    ?person foaf:name ?publicName 
    } 
} 

Sie können Service Blöcke zu aggregierten Daten von mehreren Endpunkten verwenden mehrere; Du bist nicht auf nur einen beschränkt. Das scheint mir ziemlich "verbunden" zu sein.