2012-10-19 6 views
7

Stellen Sie sich vor, ich beginne mit einer Ontologie, weil es ein nützliches Vokabular zur Beschreibung eines Objekts, das mich interessiert, z. FOAF um eine Person (mich) zu beschreiben. Ich stoße sofort auf zwei Probleme. Ich stoße auf eine andere Ontologie, die auch Vokabeln hat, die eine Person beschreiben.Wie mische ich Ontologien, die das gleiche Objekt beschreiben (mit rdfa?)

Ausgabe 1: Einige dieser Bedingungen funktionell gleichwertig sind oder verwandten, aber ich will nicht beide Ontologien um das gleiche Objekt gestört werden Einwickeln,

<span property="foaf:name"><span property="dc:creator">Carl Boettiger</span></span> 

Denn das umständlich ist und scheint zu ignorieren die gesamte Idee von verknüpfte Daten, die vermutlich intelligent genug sein sollten zu wissen, dass ein dc:creator auch ein foaf:person. ist Also was ist der richtige Weg, um dies zu tun? Wie kann ich die Beziehung zwischen diesen Objekten bestätigen (zB vermutlich nicht alle foaf:person sollte dc:creator sein. Wird irgendwo im Semantic Web gesagt, dass dc:creator eine Teilmenge von foaf:person ist? Muss ich irgendwie zu einer solchen Aussage verlinken? Kannst du mich darauf hinweisen? wo?

Ausgabe 2: Das Vokabular in einer Ontologie reicht nicht für meine Zwecke aus, daher muss ich das Vokabular von einem anderen verwenden, zum Beispiel liefert FOAF meines Wissens nicht Eine Möglichkeit, meine Organisation, meinen Standort oder meine Rolle anzugeben (die GoogleSnippets als Pflichtfelder für eine gültige Person zu erachten scheint.) Also suche ich nach einer handlichen Ontologie, die von Google vorgeschlagen wird, http://rdf.data-vocabulary.org, die diese Begriffe hat. Jetzt habe ich wieder das eng zusammen d Problem, dafür zu sorgen, dass die beiden Ontologien einig, was eine Person ist:

<div typeof="foaf:Person"> 
    <span property="foaf:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span> 
</div> 

v:role hat seine eigene Vorstellung davon, was er gehört, ein typeof="v:Person. Muss ich diese typeof Deklaration hinzufügen? Muss ich dann etwas tun, um zu sagen, es ist das gleiche wie foaf:Person, und in der Tat, dass v:role und foaf:name beide dasselbe (mich) beschreiben?

Vielen Dank für die Klärung meiner Verwirrung.

Antwort

6

Beachten Sie, dass Foaf: Person ein Typ oder eine Klasse ist, die in RDFa über das Attribut @typeof ausgedrückt wird. dc: creator, foaf: name, v: role sind andererseits Eigenschaften, die in RDFa im Attribut @property platziert werden. In der Regel beginnen Sie mit der Eingabe Ihres Objekts in Ihrem HTML-Code (z. B. einer Person) und geben dann seine Attribute wie Name oder Rolle über Eigenschaften an. Typen beginnen normalerweise mit einem Großbuchstaben (foaf: Person), während Eigenschaften mit einem Kleinbuchstaben beginnen (foaf: name).

Problem 1: anstatt ein neues Element span für jede neue Eigenschaft hinzufügen, können Sie alle Eigenschaften in der gleichen Eigenschaft setzen Attribut mit einem Leerzeichen getrennt:

<span property="foaf:name dc:creator">Carl Boettiger</span> 

Ist es auf der irgendwo gesagt Semantic Web, dass dc: creator ist eine Untergruppe von Foaf: Person?

Zuerst wird das Beispiel nicht wirklich ausreichend ist, dc: creator eine Eigenschaft und foaf sein: Person eine Art, aber wir denken wir reden über foaf: Agenten und foaf: Person stellt die foaf Spezifikation, dass foaf : Person ist eine Unterklasse von Foaf: Agent: http://xmlns.com/foaf/spec/#term_Person - Vokabulare könnten solche Beziehungen definieren. Es gibt auch Kreuzvokabularzuordnungen, die manchmal die Beziehungen zwischen Klassen und Eigenschaften aus verschiedenen Vokabeln definieren.

Muss ich irgendwie zu einer solchen Aussage verlinken?

Nein, normalerweise müssen Sie das nicht tun.

Problem 2: beachten Sie, dass http://rdf.data-vocabulary.org zugunsten des schema.org Vokabular ist veraltet: http://schema.org/docs/full.html und http://schema.rdfs.org/

Muss ich auch diese typeof Erklärung hinzufügen? Muss ich dann etwas tun, um zu sagen, dass es das gleiche wie Foaf ist: Person, und in der Tat, dass v: Rolle und Foaf: Name beide dasselbe (mich) beschreiben?

Im Allgemeinen, wenn die Daten in HTML zu veröffentlichen, versuchen Sie nicht in den Zustand Äquivalenzen zwischen Vokabulare, stattdessen veröffentlichen Sie mit allen Vokabular Begriffe, die Sie denken, wird für die Anwendungen raubend Ihre Daten nützlich sein, und es ist leicht zu tun Sie dies in RDFa, da Sie mehrere Typen und Eigenschaften in ein bestimmtes @typeof- oder @property-Attribut einbetten können.

<div typeof="foaf:Person v:Person"> 
    <span property="foaf:name v:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span> 
</div> 

Beachten Sie, dass Sie Ihre RDFa bei http://rdfa.info/play/

+0

Danke für die Erklärungen und eine große Antwort testen. Sorry für meine Verwechslung zwischen '@ property' und einem' typeOf', das ist eine gute Unterscheidung zu wissen. Aber um Problem 1 richtig zu behandeln, was ist der richtige Weg, um die Verbindung zwischen diesen zu zeigen; das heißt, dass das Ding dc: creator zufällig auch foaf ist: Person mit Foaf: Name "Carl Boettiger"? – cboettig

+0

Die Auflistung beider Vokabulare scheint definitiv die richtige Lösung für Ausgabe 2 zu sein, aber es wirft immer noch die Frage in Frage 1 auf: Warum muss ich beide Eigenschaften auflisten? Wird irgendwo im Internet gesagt, dass 'foaf: name' und' v: name' verschiedene Sprachen sind, die dasselbe bedeuten? Das Wort "Name" explizit in jede Ontologie übersetzen zu müssen, die ich unterstützen möchte, fühlt sich so an, als würde es den Zweck des semantischen Webs völlig zunichte machen. – cboettig

+1

Ich denke, dass meine beiden zusätzlichen Fragen hier gut beantwortet sind: http://answers.semanticweb.com/questions/19275 – cboettig