2013-05-10 10 views
6

Ich bin neu in RDF und ich habe eine Frage zu RDF.Darstellen komplizierter Sätze mit RDF-Syntax

Mit einem einfachen Satz wie: "Ann study Math", gibt es kein Problem, es mit RDF darzustellen.

Aber mit komplizierter Sätze wie: "Herr Parker lehrt maschinelles Lernen und verwendet das Buch mit dem Namen ML-für-Neuling", ich meine, Herr Parker verwendet dieses Buch, um seine Vorträge vorzubereiten. Es gibt 3 Objekte: Herr Parker, Machine Learning, ML-für-Anfänger; 2 Prädikate: lehren, verwenden. Wie kann man diesen Satz in RDF darstellen? Wie ich weiß, ist eine RDF Aussage wie Betreff --predicate -> Objekt, und die drei Objekte und 2 Prädikate machen mich verwirrt :(

Plz Hilfe dank

+0

Ähnliche Fragen: http://stackoverflow.com/questions/15820657/how-can-i-represent-a-5-tuple-in-rdf –

Antwort

6

In Ihrem Fall könnten Sie auch nicht! . diese Sätze in 3 RDF Aussagen zersetzen oder ein blank node verwenden

Beispiele für Zersetzung, hat der Kurs seine eigene URI (:Course999):

:Mr_Parker :teaches :Course999 . 
:Course999 :courseName "Machine Learning" . 
:Course999 :hasSupportBook "ML-for-newbies" . 

Mit anonymen Knoten (leerer Knoten _:b1), ist es das gleiche Prinzip, aber der Kurs ist nicht explizit erfasst:

:Mr_Parker :teaches _:b1 . 
_:b1 :courseName "Machine Learning" . 
_:b1 :hasSupportBook "ML-for-newbies" . 

nun wie in den Kommentaren erwähnt, die Zeichenfolge „ML-for-Neulinge“ ist eigentlich kein Buch, es ist nur der Titel des Buches darstellen. Sie können also weitere Tripel hinzufügen, um zusätzliche Informationen zu diesem Objekt zu erfassen (wie zum Beispiel der Autor dieses Buches). Sie können für diese Aufgabe Wiederverwendung von bereits entwickelten Vokabular denken (wie die Dublin Core):

:Mr_Parker :teaches _:b1 . 
_:b1 :hasSupportBook :book2 . 
:book2 dcterms:title "ML-for-newbies" . 
:book2 dcterms:creator "John Smith" . 

... und dann hier die Zeichenfolge repräsentieren nur den Namen des Autors, aber nicht der Autor selbst (wie für das Buch), sodass Sie Ihre Tripel noch mehr erweitern können, indem Sie diesen Entitätstyp bei Bedarf auch darstellen.

+1

Gute Antwort, aber eine Zeichenfolge ist kein Buch. Sie sollten eine weitere Ressource hinzufügen,: book123 oder soetwas, die "ML for Newbies" als Titel hat und dann einen Autor, isbn usw. haben kann. –

+0

Danke @loopasam, ich denke, die 2. Art ist besser geeignet (und ich habe darüber nachgedacht). Nochmals vielen Dank :) – Songokute

+0

Guter Punkt von Ian: Hier ist es eine allzu einfache Darstellung, nur um Sie zu starten, dann können Sie den Detaillierungsgrad der Dinge erhöhen, die Sie in ähnlicher Weise darstellen möchten. Ich füge es der Antwort hinzu. – loopasam

4

Die akzeptierte Antwort ist gut und hat Beispiele, aber es lohnt sich, einen Blick auf die W3C Arbeitsgruppe Note Defining N-ary Relations on the Semantic Web zu werfen, die diese Darstellungsprobleme diskutiert. Der Ansatz in der angenommenen Antwort ist Pattern 1: introducing a new class for a relation in dieser Anmerkung. Es gibt auch eine Pattern 2: Using lists for arguments in a relation, aber das fühlt sich unbeholfen an, und ich glaube nicht, dass so viele Leute diesen Ansatz wählen.

+0

Hallo @Joshua Taylor, wie man eine Aussage wie "** Wenn ein Schüler mindestens 10 Hunde hat, dann hat er auch 10 Katzen **" mit Eule ??? – Songokute

+0

@Songokute Das ist wirklich eine unabhängige Frage und sollte als solche gefragt werden (nicht in den Kommentaren), aber das ist ziemlich einfach OWL: '(Student und hasPet min 10 Hund) subClassOf (hasPet min 10 Cat)'. –

+0

Danke, ich habe eine neue Frage dazu gestellt.:) In deinem Fall: '(X) subClassOf (Y)', dann sind X und Y anonyme oder benannte Klassen (ich frage mich, wie man diese Klassen benennt, wenn sie ihren Namen haben ...)? – Songokute