2013-05-10 20 views
6

Jestem nowy w RDF i mam jedno pytanie dotyczące RDF.Reprezentowanie skomplikowanych zdań przy użyciu składni RDF

W prostym zdaniu, jak: "Ann study Math", nie ma problemu z przedstawieniem go za pomocą RDF.

Ale z bardziej skomplikowanych zdań takich jak: „Parker uczy Machine Learning i wykorzystuje książkę o nazwie ML-dla-początkujących”, mam na myśli Pan Parker wykorzystuje tę książkę, aby przygotować swoje wykłady. Są 3 obiekty: Pan Parker, uczenie maszynowe, ML dla nowych użytkowników; 2 predykaty: naucz, używaj. Jak przedstawić to zdanie w RDF? Z tego co wiem, jedna instrukcja RDF jest jak Subject --predicate -> Object oraz 3 obiekty i 2 predykaty mnie mylić :(

plz help dzięki

+0

Podobne pytanie: http://stackoverflow.com/questions/15820657/how-can-i-represent-a-5-tuple-in-rdf –

Odpowiedz

6

W twoim przypadku, można też! . rozkładają te zdania w 3 sprawozdania RDF lub użyć blank node

Przykłady rozkładu, kurs ma swój własny URI (:Course999):

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

z anonimowych węzłów (węzeł _:b1 puste), to ta sama zasada, ale oczywiście nie jest wyraźnie ujęte:

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

Teraz jak wspomniano w komentarzach, ciąg „ML-dla-początkujących” nie jest faktycznie książka, to po prostu reprezentują tytuł książki. Możesz dodać więcej trójki, aby zdobyć dodatkowe informacje na temat tego przedmiotu (na przykład autor tej książki). Można myśleć o już rozwiniętej ponownego wykorzystywania słownictwa dla tego zadania (jak Dublin Core):

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

... a tu ciąg stanowią tylko nazwisko autora, ale nie sam autor (jak na książka), abyś mógł rozwinąć swoje trójki jeszcze bardziej, reprezentując ten typ jednostki również, jeśli to konieczne.

+1

Dobra odpowiedź, ale ciąg nie jest książką. Powinieneś dodać inny zasób: book123 lub somesuch, który ma tytuł "ML dla początkujących" jako tytuł, a także może mieć autora, isbn itd. –

+0

Dziękuję @loopasam, myślę, że drugi sposób jest bardziej odpowiedni (i myślałem o tym). Jeszcze raz dziękuję :) – Songokute

+0

Dobra rada od Iana: Oto uproszczona reprezentacja tylko po to, abyś mógł zacząć, wtedy możesz zwiększyć poziom szczegółowości rzeczy, które chcesz reprezentować w podobny sposób. Dodaję to do odpowiedzi. – loopasam

4

Przyjęta odpowiedź jest dobra i zawiera przykłady, ale warto rzucić okiem na grupę roboczą W3C Note Defining N-ary Relations on the Semantic Web, która omawia te problemy z reprezentacją. Podejście przyjęte w przyjętej odpowiedzi to Pattern 1: introducing a new class for a relation w tej notatce. Jest też Pattern 2: Using lists for arguments in a relation, ale wydaje mi się, że jest on trochę niezgrabny i nie sądzę, aby tak wiele osób miało takie podejście.

+0

Witam @Joshua Taylor, jak wyrazić zdanie: "** Jeśli jeden uczeń ma co najmniej 10 psów, to ma też 10 kotów **" za pomocą sowy ??? – Songokute

+0

@Songokute To naprawdę niepowiązane pytanie i powinno być zadawane jako takie (nie w komentarzach), ale to dość podstawowe OWL: '(Student i hasPet min 10 Dog) subClassOf (hasPet min 10 Cat)'. –

+0

Dziękuję, zadałem nowe pytanie na ten temat.:) W twoim przypadku: '(X) subClassOf (Y)', następnie X i Y są klasami anonimowymi lub nazwanymi (Zastanawiam się, jak nazwać te klasy, jeśli mają swoją nazwę ...)? – Songokute