2013-05-10 23 views
6

Sono nuovo di RDF e ho una domanda su RDF.Rappresentare frasi complicate usando la sintassi RDF

Con una frase semplice come: "Ann study Math", non c'è alcun problema a rappresentarlo tramite RDF.

Ma con frasi più complicate come: "Mr Parker insegna Machine Learning e usa il libro ML-for-newbie", intendo Mr Parker usa quel libro per preparare le sue lezioni. Ci sono 3 oggetti: Mr Parker, Machine Learning, ML-for-newbie; 2 predicati: teach, use. Quindi, come rappresentare questa frase in RDF? Per quanto ne so, una dichiarazione RDF è come Soggetto --predicate -> Oggetto, ei 3 oggetti e 2 predicati mi fanno confuso :(

plz help, grazie

+0

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

risposta

6

Nel tuo caso, si potrebbe o! . decompone queste frasi in 3 dichiarazioni RDF o utilizzare un blank node

Esempi di decomposizione, il corso ha un proprio URI (:Course999):

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

Con nodi anonimi (nodo vuoto _:b1), è lo stesso principio, ma il corso non è esplicitamente catturato:

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

Ora come detto nei commenti, la stringa "ML-per-newbies" in realtà non è un libro, è solo rappresenta il titolo del libro. Quindi potresti aggiungere più tripli per acquisire informazioni extra su questo oggetto (come l'autore di questo libro, per esempio). Si può pensare di vocabolario già sviluppato riutilizzo per questo compito (come il Dublin Core):

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

... e allora ecco la stringa rappresentano solo il nome dell'autore, ma non l'autore stesso (come ad il libro), in modo da poter espandere ulteriormente i tripli rappresentando anche questo tipo di entità, se necessario.

+1

Buona risposta, ma una stringa non è un libro. Dovresti aggiungere un'altra risorsa: book123 o somesuch, che ha come titolo "ML for Newbies" e può quindi avere anche un autore, isbn, ecc. –

+0

Grazie @loopasam, penso che la seconda maniera sia più adatta (e ci ho pensato su). Grazie ancora :) – Songokute

+0

Buon punto da Ian: qui è una rappresentazione semplicistica solo per iniziare, quindi puoi aumentare il livello di dettaglio delle cose che vuoi rappresentare in modo simile. Lo aggiungo alla risposta. – loopasam

4

La risposta accettata è buona ed ha degli esempi, ma vale la pena dare un'occhiata alla nota del gruppo di lavoro del W3C Defining N-ary Relations on the Semantic Web che tratta questi problemi di rappresentazione. L'approccio nella risposta accettata è Pattern 1: introducing a new class for a relation in quella nota. C'è anche un Pattern 2: Using lists for arguments in a relation, ma sembra più goffo, e non penso che molte persone adottino questo approccio.

+0

Ciao @Joshua Taylor, come rappresentare una frase del tipo "** Se uno studente ha almeno 10 cani, allora ha anche 10 gatti **" usando il gufo ??? – Songokute

+0

@Songokute Questa è davvero una domanda non correlata e dovrebbe essere posta come tale (non nei commenti), ma è piuttosto semplice OWL: '(Student e hasPet min 10 Dog) subClassOf (hasPet min 10 Cat)'. –

+0

Grazie, ho fatto una nuova domanda al riguardo.:) Nel tuo caso: '(X) subClassOf (Y)', quindi X e Y sono classi anonime o con nome (mi chiedo come nominare quelle classi se hanno il loro nome ...)? – Songokute