2009-08-21 21 views
18

Czy ktokolwiek mógłby być tak miły, aby dać mi prosty przykład reifikacji w RDF? Chcę zobaczyć, czy zrozumiałem to poprawnie.Prosty przykład reifikacji w RDF

Na przykład, proponuję następujący przypadek

Tolkien -> wrote -> Lord of the rings 
      /|\ 
      | 
     Wikipedia said that 

Jak byś napisać to z i bez reifikację (czyli jako proste stwierdzenie RDF bez potrzeby reifikację)?

Odpowiedz

24

„Tolkien pisał Władcę Pierścieni” może być wyrażona jako prostego rachunku (podmiot, orzeczenie, obiekt) tak:

:Tolkien :wrote :LordOfTheRings . 

Nawiasem mówiąc, jest to za pomocą notacji Turtle dla RDF. Istnieje tools online do konwersji do RDF/XML.

Korzystanie reification, można mieć osobny zasób reprezentujący oświadczenie, więc można stwierdzić, dodatkowe rzeczy o samym oświadczeniem, jak „Wikipedia mówi, że”:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
_:x rdf:type rdf:Statement . 
_:x rdf:subject :Tolkien . 
_:x rdf:predicate :wrote . 
_:x rdf:object :LordOfTheRings . 
_:x :said :Wikipedia . 

W prawdziwym życiu, byś chcesz używać wspólnych słowników, tak że ktokolwiek lub cokolwiek zużywa RDF będzie, że mówisz że Tolkien i że LOTR:

<http://dbpedia.org/resource/The_Lord_of_the_Rings> <http://dbpedia.org/property/author> <http://dbpedia.org/resource/dbppedia/J._R._R._Tolkien> . 
+0

dzięki za odpowiedź. Jeśli dobrze rozumiem, musisz podać obie z nich, gdy przeprowadzasz reifikację, czy też tylko urzeczenie jest wystarczające, aby wyrazić również reifikat? (najwyraźniej powinien, ale technicznie, jaka jest najlepsza praktyka?) –

+1

Reifikowana wersja instrukcji nie implikuje oryginalnego wyciągu. Zostało to wyjaśnione w sekcji Reification dokumentu RDF Semantics połączonego powyżej. Jest to logiczne: z "Wikipedii wynika, że ​​Tolkien napisał LOTR" nie wynika z tego, że "Tolkien napisał LOTR". –

+2

W praktyce, jeśli przechowujesz reifikowane wersje wszystkich twoich wypowiedzi, kończysz mnożenie liczby trójek, które musisz przechowywać. Jeśli chcesz tylko zapisać pochodzenie swoich twierdzeń, możesz rozważyć użycie nazwanych wykresów/sklepów quadowych jako alternatywy. –

4

Lepszym sposobem na zrobienie tego jest użycie podejścia do właściwości singleton.

Na przykład można utworzyć właściwość singleton do reprezentowania tego oświadczenia jako:

Tolkien wrote#1 "Lord of the rings" . 

wrote#1 rdf:singletonPropertyOf wrote . 

wrote#1 asserted_by Wikipedia . 

Możesz przeczytać więcej na ten temat w artykule „Nie podoba RDF reifikacja składania oświadczeń o instrumentach wykorzystujących singleton? właściwość "lub jej slajdy pod http://www.slideshare.net/ntkimvinh7/www2014-singleton-propertyfinal ...

+1

Nie wierzę, że to podejście jest dobrze skalowalne (podobnie jak w przypadku standardowego podejścia do rekrystalizacji RDF (http://www.w3.org/TR/rdf-mt/#Reif)), patrząc na zapytanie bok. Proponowałbym pozostawienie części predykatów tak, jak jest teraz w RDF i rozszerzenie modelu danych RDF, aby umożliwić identyfikację oświadczenia (patrz również, np. Http://lists.w3.org/Archives/Public/public-rdf-comments /2011Jan/0001.html). – zazi

+0

Z aspektu zapytania, to nie jest wielka sprawa. Zawsze możemy zoptymalizować przetwarzanie zapytań (tworzenie pomocniczych indeksów, widoków itp.). –

+0

Myślę, że trudniejsze jest to, jak reprezentujesz identyfikator oświadczenia w formalnej semantyce RDF? –