2014-01-23 6 views
9

Wenn ich über die Leistungsfähigkeit semantischer Datenbanken und Ontologien spreche, höre ich oft, dass RDF-Daten vielseitig sind, weil Ontologien auf die Daten angewendet werden können, um sie auf unterschiedliche Weise zu betrachten .Verwendung alternativer/neuer Ontologien für einen vorhandenen Datensatz

Jedoch ist nach meiner Erfahrung ein Datensatz in der Regel aufgrund des Prädikats an bestimmte Ontologien gebunden, d. H. In dem subject-predicate-object, in dem das Prädikat eine Eigenschaft oder Beziehung gemäß einer Ontologie definiert. Wenn zum Beispiel bei einer Anfrage zu Filmen keine der Daten auf die neue "Filmontologie" einer Person verweist, kann ich ihre Begriffe nicht einfach in einer Abfrage gegen DBPedia oder LinkedMDB verwenden, nicht wahr?

Dann sehe ich gelegentlich "Verknüpfungen" in einem Datensatz, der im Wesentlichen eine bestimmte Ressource zu einer ähnlichen Ressource in einem anderen Datensatz mit einer eigenen Ontologie verbindet. d. h. linkedmdb hat owl:sameAs, aber das scheint nicht zu sein, was Leute meinen, indem sie Ontologien auf Daten anwenden.

Wie funktioniert es und wie kann ich eine andere Ontologie zu einem bestimmten Thema in einer SPARQL-Abfrage für ein Dataset verwenden?

Antwort

10

Dann werde ich gelegentlich „Verbindungen“ in einem Datensatz sehen, die im Wesentlichen in einer anderen Datenmenge eine bestimmte Ressource auf eine ähnliche Ressource verbinden, der seine eigene Ontologie hat. d. h. linkedmdb hat eule: sameAs, aber diese scheint nicht zu sein, was Leute meinen, indem sie Ontologien auf Daten anwenden.

Es könnte nicht unbedingt owl:sameAs sein, aber ich denke, das ist wahrscheinlich die Art der Sache ist, die Sie suchen. Mit RDFS oder OWL können Sie verschiedene Arten von Assertions zu Eigenschaften und Klassen auf eine Weise erstellen, dass Sie mit ein wenig Argumentation eine neue "Ansicht" Ihrer Daten erhalten. Zum Beispiel, sagt definiert eine Ontologie einiger Klassen und Eigenschaften:

o1:Film a rdfs:Class . 
o1:Actor a rdfs:Class . 
o1:hasActor a rdf:Property . 
      rdfs:domain o1:Film . 
      rdfs:range o1:Actor . 

Eine andere Ontologie einig anderes definiert:

o2:Movie a rdfs:Class . 
o2:Person a rdfs:Class . 
o2:Character a rdfs:Class . 
o2:hasCharacter a rdf:Property ; 
       rdfs:domain o2:Movie ; 
       rdfs:range o2:Character . 
o2:playsRole a rdf:Property ; 
      rdfs:domain o2:Actor ; 
      rdfs:range o2:Character . 

Nun, wenn Sie Daten ausgedrückt nach einer Ontologie, könnte man einige Axiome verwenden wie diese einige Informationen in Bezug auf die anderen zu bekommen:

o2:Movie rdfs:subClassOf o1:Film . 
o1:Film rdfs:subClassOf o2:Movie . 

o1:Actor rdfs:subClassOf o2:Person . 

Das ist nur ein bisschen von Informationen ist, aber mit einem RDFS reasoner, wissen Sie plötzlich über viele instanc es. Wenn Sie eine ausdruck Ontologiesprache als RDFS verwenden, sagen OWL, dann können Sie einige ausdrucke Axiome verwenden, zum Beispiel

Film ≡ Film
Schauspieler & sqsubseteq; Person
hasActor & sqsubseq; hasRole o (inverse playsRole)

Mit diesem letzten Axiom insbesondere finden Sie heraus, dass jeder, der eine Rolle spielt, die in einem Film ist, ist ein Schauspieler im Film. Mit OWL können Sie noch viel mehr tun, aber dies ist die allgemeine Idee von Ontologie oder Schema-Mapping. Um diese Art von Ansatz zu verwenden, sollten Sie Ihre Mapping-Axiome definieren und einen Reasoner auf die Vereinigung von ihnen und den ursprünglichen Datensatz anwenden.

Sie können auch mit dem regelbasierten Schließen mehr tun. Zum Beispiel, anstatt das dritte OWL Axiom oben erklärt, könnten Sie eine Regel schreiben: (? Schauspieler, Rolle)

hasRole (? Film, Rolle) ∧ playsRole & rightarrow; hasActor (? Film? Schauspieler)

Während Regeln Anwendung nur eine andere Art der Argumentation ist, wird es eine engere Verbindung zu SPARQL bekommen, weil Sie SPARQL construct Abfragen verwenden können Daten in Bezug auf die Ontologie als Ergebnis der Abfragen zu erzeugen über Daten mit einem anderen. Zum Beispiel könnten Sie tun:

construct { 
    ?movie :hasActor ?actor 
} 
where { 
    ?movie :hasRole ?role . 
    ?actor :playsRole ?role . 
} 

Du hast recht aber, dass die Idee der Dateninteroperabilität ist manchmal ein wenig überverkauft, oder zumindest aus etwas einfacher und glamourös zu klingen, als es ist. Um Daten zu verwenden, müssen Sie sich im Allgemeinen mit dem Vokabular vertraut machen, in dem sie ausgedrückt werden. Wenn Sie neue Daten mit einem anderen Vokabular basierend auf den Originaldaten erhalten möchten, müssen Sie die Beziehungen verstehen zwischen diesen Vokabularen ziemlich gut, und Sie müssen eine Art von Übersetzung anwenden (oft wird dies eine Art von RDF oder OWL-Denker sein).

+3

Mit Bezug auf den letzten Absatz: Ja, die Vertrautheit mit der tatsächlichen Ontologie zur Beschreibung der Daten ist nützlich, wenn nicht notwendig. Der Unterschied, meiner Meinung nach, mit jeder anderen strukturierten Darstellung von Daten, ist durch die Tatsache gegeben, dass diese Vertrautheit nachweisbar ist: der Gebrauch eines Reasoners wird das gesamte in die Repräsentation eingebettete Wissen liefern. Dies gilt jedoch nicht für ein Datenbankschema oder eine XML-Darstellung, bei der ein Teil des Wissens in der Codierung um die Daten herum und nicht in den Daten liegt. Das heißt, Ontologien können natürlich schlecht spezifiziert sein :-) – Ignazio

+0

@Ignazio wenn es nicht zu viel Mühe macht, könntest du eine Antwort schreiben und diesen Punkt etwas erweitern? – Kristian

+0

Es gibt Literatur zu diesem Thema, ich werde versuchen, ein paar relevante Links auszugraben. Es ist nicht wirklich eine Antwort auf die Frage, eher wie eine fundierte Meinung. Deshalb habe ich es als Kommentar und nicht als Antwort hinzugefügt. – Ignazio