Sto cercando di capire il concetto di Semantic Web. Trovo difficile capire quale sia esattamente la differenza tra RDF e OWL. OWL è un'estensione di RDF o queste due sono tecnologie totalmente diverse?
Sto cercando di capire il concetto di Semantic Web. Trovo difficile capire quale sia esattamente la differenza tra RDF e OWL. OWL è un'estensione di RDF o queste due sono tecnologie totalmente diverse?
Risposte:
Il web semantico si presenta a strati. Questo è un breve riassunto di quelli che penso ti interessino.
Aggiornamento : tenere presente che RDFS viene utilizzato per definire la struttura dei dati, non OWL. OWL descrive le relazioni semantiche di cui la normale programmazione, come una struttura in C, non è agitata ed è più vicina alla ricerca e alla teoria degli insiemi.
Tripli e URI
Subject - Predicate - Object
Questi descrivono un singolo fatto. Generalmente gli URI sono usati per soggetto e predicato. L'oggetto è un altro URI o un letterale come un numero o una stringa. I letterali possono avere un tipo (che è anche un URI) e possono anche avere una lingua. Sì, questo significa che le triple possono avere fino a 5 bit di dati!
Ad esempio, una tripla potrebbe descrivere il fatto che Charles è il padre di Harrys.
<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .
Le triple sono la normalizzazione del database portata ad un estremo logico. Hanno il vantaggio di poter caricare triple da molte fonti in un unico database senza alcuna riconfigurazione.
RDF e RDFS
Il livello successivo è RDF - The Resource Description Framework. RDF definisce una struttura extra per le triple. La cosa più importante che RDF definisce è un predicato chiamato "rdf: type". Questo è usato per dire che le cose sono di certi tipi. Tutti usano rdf: type che lo rende molto utile.
RDFS (RDF Schema) definisce alcune classi che rappresentano il concetto di soggetti, oggetti, predicati ecc. Ciò significa che puoi iniziare a fare dichiarazioni su classi di cose e tipi di relazione. Al livello più semplice puoi affermare cose come http://familyontology.net/1.0#hasFather è una relazione tra una persona e una persona. Consente inoltre di descrivere nel testo leggibile dall'uomo il significato di una relazione o di una classe. Questo è uno schema. Ti dice usi legali di varie classi e relazioni. Viene anche usato per indicare che una classe o proprietà è un sottotipo di un tipo più generale. Ad esempio "HumanParent" è una sottoclasse di "Persona". "Loves" è una sottoclasse di "Knows".
Serializzazioni RDF
RDF può essere esportato in diversi formati di file. Il più comune è RDF + XML ma questo presenta alcuni punti deboli.
N3 è un formato non XML che è più facile da leggere e ci sono alcuni sottoinsiemi (Turtle e N-Triples) che sono più rigorosi.
È importante sapere che RDF è un modo di lavorare con le triple, NON con i formati di file.
XSD
XSD è uno spazio dei nomi utilizzato principalmente per descrivere i tipi di proprietà, come date, numeri interi e così via. È generalmente visto nei dati RDF che identificano il tipo specifico di un letterale. È anche usato negli schemi XML, che è un bollitore leggermente diverso di pesce.
GUFO
OWL aggiunge la semantica allo schema. Ti permette di specificare molto di più sulle proprietà e le classi. È anche espresso in triple. Ad esempio, può indicare che "Se A isMarriedTo B" significa che "B isMarriedTo A". O che se " C isAncestorOf D " e " D isAncestorOf E ", allora " C isAncestorOf E ". Un'altra cosa utile che gufo aggiunge è la capacità di dire che due cose sono uguali, questo è molto utile per unire i dati espressi in schemi diversi. Puoi dire che la relazione" sired "in uno schema è gufo: sameAs" fathered "in qualche altro schema. Puoi anche usarlo per dire che due cose sono uguali, come "Elvis Presley" su Wikipedia è lo stesso sulla BBC. Questo è molto eccitante in quanto significa che puoi iniziare a unire dati da più siti (questo è "Dati collegati").
Puoi anche usare il GUFO per dedurre fatti impliciti, come " C isAncestorOf E ".
In breve:
Come ha scritto il poster precedente, RDF è una specifica che spiega come definire le triple.
Il problema è che RDF ti consente di definire tutto, in modo da poter comporre una dichiarazione come questa:
| subject | predicate | object |
|---------|-----------|--------|
| Alex | Eats | Apples |
| Apples | Eats | Apples |
| Apples | Apples | Apples |
Queste triple formano documenti RDF validi.
Ma, semanticamente, capisci che queste affermazioni sono errate e RDF non può aiutarti a convalidare ciò che hai scritto.
Questa non è un'ontologia valida.
Le specifiche OWL definiscono esattamente cosa è possibile scrivere con RDF per avere un'ontologia valida.
Le ontologie possono avere diverse proprietà.
Ecco perché OWL (ver 1) definisce diverse versioni come OWL DL, OWL Lite, OWL Full.
RDF, RDFS e OWL sono mezzi per esprimere informazioni o conoscenze sempre più complesse. Tutti possono essere serializzati nella sintassi RDF / XML (o qualsiasi altra sintassi di serializzazione RDF come Turtle o N3 per esempio).
Queste tecnologie sono correlate e dovrebbero essere interoperabili, eppure hanno origini diverse, forse per questo la relazione tra loro è complicata da comprendere. La scelta dell'uno o dell'altro dipende da quanta complessità richiede la situazione che stai modellando.
Riepilogo dell'espressività
RDF : rappresentazione semplice, focalizzata sulle istanze e sulla mappatura dei loro tipi ( rdf:type
). È possibile definire proprietà personalizzate per collegare i dati e creare triple. I dati RDF vengono interrogati con SPARQL. Esempio di RDF serializzato in Turtle:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
RDFS: alcune situazioni non sono facilmente modellabili dal solo RDF, a volte è interessante rappresentare relazioni più complesse come sottoclassi ( il tipo di un tipo ), ad esempio. RDFS fornisce mezzi speciali per rappresentare tali casi, con costrutti come rdfs:subClassOf
, rdfs:range
o rdfs:domain
. Idealmente, un ragionatore può comprendere la semantica RDFS ed espandere il numero di triple in base alle relazioni: ad esempio se si hanno le triple John a Man
e Man rdfs:subClassOf
Human
quindi si dovrebbe generare anche la tripla John a Human
. Si noti che ciò non è possibile solo con RDF. I dati RDFS vengono interrogati utilizzando SPARQL. Esempio di RDFS serializzato in Turtle:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:Man rdfs:subClassOf :Human .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
# After reasoning
:john rdf:type :Human .
GUFO: il massimo livello di espressività. La relazione tra le classi può essere formalmente modellata sulla base di logiche descrittive (teoria matematica). OWL si basa fortemente sul ragionamento, è possibile esprimere costrutti complessi come proprietà concatenate per esempio o restrizioni tra le classi. OWL serve per creare ontologie o schemi nella parte superiore dei set di dati RDF. Poiché OWL può essere serializzato come RDF / XML, è teoricamente possibile interrogarlo tramite SPARQL, tuttavia è molto più intuitivo interrogare un'ontologia OWL con una query DL (che di solito è un'espressione di classe OWL standard). Esempio di costrutti OWL serializzati in Turtle.
@prefix : <http://www.example.org/> .
:livesIn rdf:type owl:DatatypeProperty .
:Human rdf:type owl:Class .
:Man rdf:type owl:Class .
:Man rdfs:subClassOf :Human .
:John rdf:type :Man .
:John rdf:type owl:NamedIndividual .
In primo luogo, come già sottolineato in precedenza, il gufo può essere serializzato in RDF.
In secondo luogo, OWL aggiunge capacità ontologiche a RDF (che da solo fornisce una capacità estremamente limitata per la rappresentazione formale della conoscenza), fornendo l'apparato per definire i componenti del triplo usando una logica di descrizione del primo ordine calcolabile formale. Questo è ciò che qui intendono i poster quando parlano di "ricchezza semantica".
In terzo luogo, è importante rendersi conto che in OWL-Full (per OWL 1) rdfs: class e owl: class sono equivalenti e in OWL-DL, owl: class è una sottoclasse di rdfs: class. In effetti, ciò significa che è possibile utilizzare un'ontologia OWL come schema per RDF (che non richiede formalmente schemi).
Spero che ciò aiuti a chiarire ulteriormente.
Quando stai usando il termine RDF devi distinguere due cose:
Puoi fare riferimento a RDF come concetto :
Un modo di descrivere cose / logica / qualsiasi cosa usando raccolte di triple.
Esempio:
"Anna ha le mele." "Le mele sono salutari."
Sopra hai due triple che descrivono due risorse "Anna" e "mele". Il concetto di RDF (Resource Description Framework) è che puoi descrivere le risorse (qualsiasi cosa) con insiemi di sole 3 parole (termini). A questo livello non ti importa di come stai memorizzando le informazioni, se hai una stringa di 3 parole, o un dipinto su un muro, o un tavolo con 3 colonne ecc.
A questo livello concettuale l'unica cosa importante è che puoi rappresentare tutto ciò che desideri usando le dichiarazioni triple.
Puoi fare riferimento a RDF come vocabolario
Un vocabolario è solo una raccolta di definizioni di termini archiviate in un file o da qualche parte. Questi termini definiti hanno lo scopo di essere generalmente riutilizzati in altre descrizioni in modo che le persone possano descrivere i dati (risorse) più facilmente e in modo standard.
Sul Web puoi trovare alcuni vocabolari standard come:
RDF ( https://www.w3.org/1999/02/22-rdf-syntax-ns )
RDFS ( https://www.w3.org/2000/01/rdf-schema# )
GUFO ( https://www.w3.org/2002/07/owl )
Il vocabolario RDF definisce termini che aiutano a descrivere (al livello più elementare possibile) individui / istanze di classi. Esempio: rdf: type, rdf: Property.
Con rdf: type puoi descrivere che una risorsa è un'istanza di una classe:
<http://foo.com/anna> rdf:type <http://foo.com/teacher>
Quindi il vocabolario RDF ha termini che prendono di mira le descrizioni di base delle istanze di classe e alcune altre descrizioni (come la definizione di tripla istruzione o la definizione di predicato ... in generale cose che sono confinate al concetto di RDF).
Il vocabolario RDFS ha definizioni di termini che aiutano a descrivere le classi e le relazioni tra di loro. Il vocabolario RDFS non si preoccupa delle istanze di classi (individui) come il vocabolario RDF. Esempio: la proprietà rdfs: subClassOf che è possibile utilizzare per descrivere che una classe A è una sottoclasse della classe B.
I vocabolari RDF e RDFS dipendono l'uno dall'altro. RDF definisce i suoi termini usando RDFS e RDFS usa RDF per definire i propri termini.
I vocabolari RDF / RDFS forniscono termini che possono essere utilizzati per creare descrizioni molto semplici delle risorse. Se si desidera avere descrizioni più complesse e accurate, è necessario utilizzare il vocabolario OWL.
Il vocabolario di OWL include una serie di nuovi termini che descrivono descrizioni più dettagliate. Questi termini sono definiti usando i termini dei vocabolari RDF / RDFS.
owl:ObjectProperty a rdfs:Class ;
rdfs:label "ObjectProperty" ;
rdfs:comment "The class of object properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:DatatypeProperty a rdfs:Class ;
rdfs:label "DatatypeProperty" ;
rdfs:comment "The class of data properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:TransitiveProperty a rdfs:Class ;
rdfs:label "TransitiveProperty" ;
rdfs:comment "The class of transitive properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf owl:ObjectProperty .
Come puoi vedere sopra, il vocabolario di GUFO estende il concetto di rdf: Proprietà creando nuovi tipi di Proprietà meno astratti e in grado di fornire descrizioni più accurate delle risorse.
conclusioni:
RDF è un modo per definire un triplo 'soggetto', 'predicato', 'valore' . Ad esempio, se voglio dire,
"mi chiamo Pierre"
vorrei scrivere
<mail:me@where.com> <foaf:name> "Pierre"
Vedi il <foaf:name>
? fa parte dell'ontologia FOAF . Un'ontologia è un modo formale per descrivere le proprietà, le classi di un dato soggetto e OWL è un modo (RDF) per definire un'ontologia.
Si utilizza C ++, Java, ecc ... per definire una classe, una sottoclasse, un campo, ecc ...
class Person
{
String email_as_id;
String name;
}
RDF utilizza OWL per definire questo tipo di dichiarazioni.
Un altro posto dove porre questo tipo di domanda: http://www.semanticoverflow.com/
Sto cercando di capire il concetto di Semantic Web. Trovo difficile capire quale sia esattamente la differenza tra RDF e OWL. OWL è un'estensione di RDF o queste due sono tecnologie totalmente diverse?
In breve, sì, si potrebbe dire che OWL è un'estensione di RDF.
Più in dettaglio, con RDF è possibile descrivere un grafico diretto definendo triple di soggetto-predicato-oggetto. Il soggetto e l'oggetto sono i nodi, il predicato è il bordo o, in altre parole, il predicato descrive la relazione tra il soggetto e l'oggetto. Ad esempio :Tolkien :wrote :LordOfTheRings
o:LordOfTheRings :author :Tolkien
, ecc ... I sistemi di dati collegati usano queste triple per descrivere i grafici della conoscenza e forniscono modi per memorizzarli, interrogarli. Ora questi sono sistemi enormi, ma puoi usare RDF per progetti più piccoli. Ogni applicazione ha un linguaggio specifico del dominio (o in termini DDD linguaggio onnipresente). Puoi descrivere quella lingua nel tuo ontologia / vocabolario, in modo da poter descrivere il modello di dominio della tua applicazione con un grafico, che puoi visualizzare mostrandolo al business ppl, parlare delle decisioni aziendali in base al modello e costruire l'applicazione in cima di quella. Puoi associare il vocabolario della tua applicazione ai dati che restituisce e ad un vocabolario conosciuto dai motori di ricerca, come i microdati(ad esempio puoi usare HTML con RDFA per farlo), e così i motori di ricerca possono trovare facilmente le tue applicazioni, perché la conoscenza di ciò che fa sarà processabile in macchina. Ecco come funziona il web semantico. (Almeno è così che lo immagino.)
Ora per descrivere le applicazioni orientate agli oggetti hai bisogno di tipi, classi, proprietà, istanze, ecc ... Con RDF puoi descrivere solo oggetti. RDFS (schema RDF) ti aiuta a descrivere le classi, l'ereditarietà (basata su oggetti ofc.), Ma è troppo ampia. Per definire i vincoli (ad esempio un bambino per famiglia cinese) è necessario un altro vocabolario. OWL (linguaggio ontologico web) fa questo lavoro. OWL è un'ontologia che è possibile utilizzare per descrivere le applicazioni Web. Integra XSD simpleTypes.
Lo stesso RDF -> RDFS -> OWL -> MyWebApp
vale per descrivere la tua applicazione web in un modo sempre più specifico.
personA friendsWith personB
), che (2) RDFS estende ciò fornendo la possibilità di specificare relazioni tra object classes
- ie class Person <has 'friendsWith' relationship> Person
. Che permette di allora frase RDF via classe: A:typeof:person friendsWith B:<typeof:person>
. E (3), OWL ti consente quindi di specificare i vincoli delle relazioni?
RDFS consente di esprimere le relazioni tra le cose standardizzando un formato flessibile e triplo basato e quindi fornendo un vocabolario ("parole chiave" come rdf:type
o rdfs:subClassOf
) che può essere usato per dire le cose.
Il gufo è simile, ma più grande, migliore e più cattivo. OWL ti consente di dire molto di più sul tuo modello di dati, ti mostra come lavorare in modo efficiente con query di database e ragionamenti automatici e fornisce utili annotazioni per portare i tuoi modelli di dati nel mondo reale.
Delle differenze tra RDFS e OWL, la più importante è solo che OWL fornisce un vocabolario molto, molto più ampio, che puoi usare per dire le cose .
Ad esempio, OWL comprende tutti i tuoi vecchi amici di RDFS, come rdfs:type
, rdfs:domain
e rdfs:subPropertyOf
. Tuttavia, OWL ti dà anche nuovi e migliori amici! Ad esempio, OWL ti consente di descrivere i tuoi dati in termini di operazioni impostate:
Example:Mother owl:unionOf (Example:Parent, Example:Woman)
Ti permette di definire equivalenze tra database:
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
Ti consente di limitare i valori delle proprietà:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
infatti, OWL fornisce un vocabolario così nuovo e sofisticato da utilizzare nella modellazione e nel ragionamento dei dati che prende la sua lezione!
Un'altra grande differenza è che, diversamente da RDFS, OWL non solo ti dice come puoi usare un certo vocabolario, ma ti dice anche come non puoi usarlo. Al contrario, RDFS ti offre un mondo in cui puoi aggiungere praticamente qualsiasi tripla desideri.
Ad esempio, in RDFS, tutto ciò che ritieni possa essere un'istanza di rdfs:Class
. Potresti decidere di dire che Beagle è un rdfs:Class
e quindi dire che Fido è un'istanza di Beagle :
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
Successivamente, potresti decidere che vorresti dire cose sui beagle, forse vuoi dire che Beagle è un esempio di cani allevati in Inghilterra :
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
La cosa interessante in questo esempio è che Example:Beagle
viene usato sia come classe che come istanza . Beagle è una classe di cui Fido è membro, ma Beagle è essa stessa un membro di un'altra classe: Things Bred in England.
In RDFS, tutto ciò è perfettamente legale perché RDFS non limita realmente le istruzioni che è possibile inserire e non è possibile. In OWL, al contrario, o almeno in alcune versioni di OWL, le affermazioni di cui sopra non sono in realtà legali: semplicemente non ti è permesso dire che qualcosa può essere sia una classe che un'istanza.
Questa è quindi una seconda grande differenza tra RDFS e OWL. RDFS consente un free-for-all , tutto va come un mondo pieno di Wild West, Speak-Easies e Salvador Dali. Il mondo di OWL impone una struttura molto più rigida.
Supponiamo che tu abbia trascorso l'ultima ora a costruire un'ontologia che descriva la tua attività di produzione radiofonica. Durante il pranzo, il tuo compito è costruire un'ontologia per la tua attività di produzione di orologi. Oggi pomeriggio, dopo un buon caffè, il tuo capo ti dice ora che dovrai costruire un'ontologia per la tua attività di radio sveglia altamente redditizia. C'è un modo per riutilizzare facilmente il lavoro mattutino?
OWL rende le cose come queste molto, molto facili. Owl:Import
è quello che si usa nella situazione radiosveglia, ma GUFO ti dà anche una ricca varietà di annotazioni, come owl:versionInfo
, owl:backwardsCompatibleWith
e owl:deprecatedProperty
, che può essere facilmente modelli di dati link utilizzato insieme in un insieme tra loro coerenti.
A differenza di RDFS, OWL è in grado di soddisfare tutte le esigenze di modellazione dei meta-metadati.
OWL ti offre un vocabolario molto più ampio con cui giocare, il che rende facile dire tutto ciò che potresti voler dire sul tuo modello di dati. Ti consente persino di personalizzare ciò che dici in base alle realtà computazionali dei computer di oggi e di ottimizzare per applicazioni particolari (ad esempio per query di ricerca). Inoltre, OWL ti consente di esprimere facilmente le relazioni tra diverse ontologie utilizzando un framework di annotazione standard .
Tutti questi sono vantaggi rispetto a RDFS e in genere valgono lo sforzo supplementare necessario per familiarizzare con loro.
Fonte: RDFS vs. OWL
Nel modello a oggetti del documento WC3, un documento è una cosa astratta: un elemento con testo, commenti, attributi e altri elementi nidificati al suo interno.
Nel web semantico, abbiamo a che fare con una serie di "triple". Ogni tripla è:
Il gufo è per il web semantico come gli schemi sono per il modello a oggetti del documento W3C. Documenta il significato dei vari URI e specifica il modo in cui vengono utilizzati in modo formale che può essere verificato da una macchina. Una rete semantica può essere o non essere valida rispetto alla GUFO che si applica ad essa, così come un documento può o non può essere valido rispetto a uno schema.
RDF sta nel web semantico come XML è nel DOM: è una serializzazione di un insieme di triple.
Naturalmente, RDF è di solito serializzato come documento XML ... ma è importante capire che RDF non è la stessa cosa della "serializzazione XML di RDF".
Allo stesso modo, OWL può essere serializzato usando OWL / XML o (scusatemi per questo) può essere espresso come RDF, che di solito è serializzato come XML.
Lo stack web semantico di base è già stato spiegato molto in questa discussione. Vorrei concentrarmi sulla domanda iniziale e confrontare RDF con OWL.
L'uso di OWL è essenziale per ottenere più significato (ragionamento e inferenza) semplicemente conoscendo alcuni fatti. Queste informazioni "create dinamicamente" possono essere ulteriormente utilizzate per query concorde come in SPARQL.
Alcuni esempi dimostreranno che ciò funziona effettivamente con OWL - questi sono stati presi dal mio discorso sulle basi del web semantico al TYPO3camp Mallorca, Spagna nel 2015.
Spaniard: Person and (inhabitantOf some SpanishCity)
Ciò significa che a Spaniard
deve essere un Person
(e quindi eredita tutte le proprietà nella parte inferenziale) e deve vivere in almeno una (o più) SpanishCity
.
<Palma isPartOf Mallorca>
<Mallorca contains Palma>
L'esempio mostra il risultato dell'applicazione inverseOf
alle proprietà isPartOf
e contains
.
<:hasParent owl:cardinality “2“^^xsd:integer>
Questo definisce che ciascuno Thing
(in questo scenario molto probabilmente a Human
) ha esattamente due genitori: la cardinalità è assegnata alla hasParent
proprietà.
Un'immagine parla di mille parole! Questo diagramma sotto dovrebbe rafforzare ciò che Christopher Gutteridge ha detto in questa risposta che la rete semantica è una "architettura stratificata".
Fonte: https://www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html
Il Resource Description Framework (RDF) è un potente linguaggio di rappresentazione della conoscenza formale e uno standard fondamentale del Web semantico. Ha un proprio vocabolario che definisce concetti e relazioni fondamentali (ad esempio, rdf: type corrisponde alla relazione isA) e un modello di dati che consente istruzioni interpretabili meccanicamente sotto forma di oggetto-predicato-oggetto (valore-proprietà-risorsa) triple, chiamate triple RDF, come il libro illustrato. L'estensione del vocabolario RDF con i concetti necessari per creare vocabolari controllati e ontologie di base si chiama RDF Schema o RDF Vocabulary Description Language (RDFS). RDFS consente di scrivere dichiarazioni su classi e risorse ed esprimere strutture tassonomiche, ad esempio tramite relazioni superclasse-sottoclasse.
I domini di conoscenza complessi richiedono più capacità rispetto a quanto disponibile in RDFS, il che ha portato all'introduzione di GUFO . OWL supporta relazioni tra classi (unione, intersezione, disgiunzione, equivalenza), vincoli di cardinalità delle proprietà (minimo, massimo, numero esatto, ad es. Ogni persona ha esattamente un padre), una ricca tipizzazione di proprietà, caratteristiche di proprietà e proprietà speciali (transitivo, simmetrica, funzionale, inversa funzionale, ad es. A ex: hasAncestor B e B ex: hasAncestor C implica che A ex: hasAncestor C), specificando che una determinata proprietà è una chiave univoca per istanze di una particolare classe e restrizioni di dominio e intervallo per proprietà.