RDF Schema
RDF Schema (Resource Description Framework Schema, amb els acrònims RDFS, RDF(S), RDF-S, o RDF/S) és un vocabulari i una extensió semàntica d'RDF.[1] El vocabulari RDFS és general, i s'usa per definir conceptes de vocabularis concrets, com ara per definir els conceptes organització, associació, persona o presideix.[2] Els termes del vocabulari RDFS tenen una semàntica predefinida que permet inferir fets a partir d'altres fets coneguts.[3] Per exemple, si un recurs concret és una associació, llavors es pot inferir que també és una organització, o que si un recurs presideix una associació, llavors aquest recurs ha de ser necessàriament una persona.
La primera versió fou publicada pel World Wide Web Consortium (W3C) l'abril del 1998, i fou seguida per una nova versió el 2004. La versió actual, publicada el 25 de febrer del 2014, és una edició de la del 2004.[1]
RDFS és molt usat per definir nous vocabularis RDF i ontologies.[4]
Termes principals de l'RDFS
[modifica]A continuació s'expliquen els termes principals de l'RDFS.[5]
L'espai de noms del vocabulari RDFS és http://www.w3.org/2000/01/rdf-schema# i el seu prefix és rdfs. Aquest vocabulari usa també conceptes definits en el vocabulari RDF, que té l'espai de noms http://www.w3.org/1999/02/22-rdf-syntax-ns# i el prefix rdf. Per als exemples, suposarem que hi ha un espai de noms amb el prefix ex. El graf mostra un exemple d'ús del vocabulari RDFS.
rdfs:Class i rdf:type
[modifica]El terme rdfs:Class
s'usa, conjuntament amb rdf:type
, per definir classes de recursos i per indicar que un recurs és instància d'una classe. L'esquema general d'ús és amb la terna:
<Subjecte> <rdf:type> <rdfs:Class>
amb la qual es defineix que Subjecte és una instància de Class. Per exemple, les ternes següents defineixen tres classes de recursos: Persona, Organització i Associació:
<ex:Persona> <rdf:type> <rdfs:Class>
<ex:Organització> <rdf:type> <rdfs:Class>
<ex:Associació> <rdf:type> <rdfs:Class>
En les ternes, el terme rdfs:Class
es pot usar com a subjecte o com a objecte. En canvi, rdf:type
només es pot usar com a predicat, també anomenat propietat.
Un cop definides les classes es pot definir, usant el mateix esquema, que recursos concrets són instàncies de les classes definides. Per exemple:
<ex:JordiC> <rdf:type> <ex:Persona>
<ex:Omnium> <rdf:type> <ex:Associació>
Amb la primera terna es defineix que (en l'espai de noms amb el prefix ex) JordiC és una instància de Persona
. Amb la segona, que Omnium
és una instància d'Associació.
rdf:Property
[modifica]El terme rdf:Property
s'usa, també conjuntament amb rdf:type
, per definir propietats. L'esquema general d'ús és la terna:
<Subjecte> <rdf:type> <rdf:Property>
amb la qual es defineix que Subjecte és una propietat, que es pot usar com a predicat en les ternes. Per exemple, les ternes següents defineixen tres propietats: treballa, és_membre i presideix:
<ex:treballa> <rdf:type> <rdf:Property>
<ex:és_membre> <rdf:type> <rdf:Property>
<ex:presideix> <rdf:type> <rdf:Property>
Un cop definides les propietats, es poden definir ternes en les quals apareguin com a predicats. Per exemple:
<ex:Joan> <ex:treballa> <ex:Omnium>
<ex:JordiC> <ex:presideix> <ex:Omnium>
rdfs:subClassOf i rdfs:subPropertyOf
[modifica]El terme rdfs:subClassOf
s'usa com a propietat per definir que una classe és una subclasse d'una altra. Per exemple:
<ex:Associació> <rdfs:subClassOf> <ex:Organització>
El significat és que tots els recursos que són instància (rdf:type
) d'Associació també ho són d'Organització.
Un terme semblant és el rdfs:subPropertyOf
. S'usa per definir que les parelles Subjecte-Objecte que són instància d'una propietat, també ho són d'una altra. Per exemple:
<ex:presideix> <rdfs:subPropertyOf> <ex:és_membre>
Amb aquesta terna és defineix que si un subjecte S presideix un objecte O, llavors S també és_membre de O.
rdfs:domain i rdfs:range
[modifica]La propietat rdfs:domain
s'usa per definir de quina classe poden ser els recursos que són subjecte d'una propietat. Dit més formalment, rdfs:domain
permet definir el domini d'una propietat. Per exemple:
<ex:treballa> <rdfs:domain> <ex:Persona>
defineix que el subjecte d'una terna amb la propietat treballa ha de ser una instància de la classe Persona. Semblantment, s'escriuria:
<ex:és_membre> <rdfs:domain> <ex:Persona>
<ex:presideix> <rdfs:domain> <ex:Persona>
La propietat rdfs:range
s'usa per definir de quina classe poden ser els recursos que són objecte d'una propietat. Dit més formalment, rdfs:range
permet definir el recorregut d'una propietat. Per exemple:
<ex:treballa> <rdfs:range> <ex:Organització>
defineix que l'objecte d'una terna amb la propietat treballa ha de ser una instància de la classe Organització. Semblantment, s'escriuria:
<ex:és_membre> <rdfs:range> <ex:Associació>
<ex:presideix> <rdfs:range> <ex:Associació>
per indicar que els objectes de ternes amb les propietats és_membre i presideix han de ser instàncies d'Associació.
Inferències en RDFS
[modifica]Els termes del vocabulari RDFS tenen una semàntica predefinida per permet inferir fets a partir de fets existents. A continuació es descriuen les inferències principals que es poden fer. El graf que hi ha a sota mostra com a exemple, en blau, quatre fets RDF que es poden inferir a partir del fet:
<ex:JordiC> <ex:presideix> <ex:Omnium>
i dels fets indicats anteriorment, que s'ha il·lustrat en el graf anterior.
Generalització de classe
[modifica]Si tenim els fets:
<A> <rdf:type> <B>
<B> <rdfs:subClassOf> <C>
llavors es pot inferir que:
<A> <rdf:type> <C>
és a dir, que el recurs A és també de tipus C.
En l'exemple, com que tenim:
<ex:Omnium> <rdf:type> <ex:Associació>
<ex:Associació> <rdfs:subClassOf> <ex:Organització>
podem inferir que:
<ex:Omnium> <rdf:type> <ex:Organització>
Generalització de propietat
[modifica]Si tenim els fets:
<A> <p1> <B>
<p1> <rdfs:subPropertyOf> <p2>
llavors es pot inferir que:
<A> <p2> <B>
és a dir, que si A i B estan relacionats per la propietat p1, també ho estan per la p2.
En l'exemple esmentat anteriorment, com que tenim:
<ex:JordiC> <ex:presideix> <ex:Omnium>
<ex:presideix> <rdfs:subPropertyOf> <ex:és_membre>
llavors es pot inferir que:
<ex:JordiC> <ex:és_membre> <ex:Omnium>
Restricció de domini
[modifica]Si tenim els fets:
<A> <p> <B>
<p> <rdfs:domain> <C>
llavors es pot inferir que:
<A> <rdf:type> <C>
és a dir, que si A és el subjecte de la propietat p, i el domini d'aquest propietat han de ser recursos de la classe C, llavors A ha de ser un recurs del tipus C. En l'exemple esmentat anteriorment, com que tenim:
<ex:JordiC> <ex:presideix> <ex:Omnium>
<ex:presideix> <rdfs:domain> <ex:Persona>
llavors es pot inferir que:
<ex:JordiC> <rdf:type> <ex:Persona>
Restricció de recorregut
[modifica]Si tenim els fets:
<A> <p> <B>
<p> <rdfs:range> <C>
llavors es pot inferir que:
<B> <rdf:type> <C>
és a dir, que si B és l'objecte de la propietat p, i el recorregut d'aquesta propietat ha de ser recursos de la classe C, llavors B ha de ser un recurs del tipus C. En l'exemple esmentat anteriorment, com que tenim:
<ex:JordiC> <ex:presideix> <ex:Omnium>
<ex:presideix> <rdfs:range> <ex:Associació>
llavors es pot inferir que:
<ex:Omnium> <rdf:type> <ex:Associació>
Referències
[modifica]- ↑ 1,0 1,1 «RDF Schema 1.1. W3C Recommendation 25 February 2014» (en anglès). Dan Brickley, R.V. Guha. [Consulta: 15 abril 2017].
- ↑ «XML RDF» (en anglès). [Consulta: 2 juliol 2018].
- ↑ Allemang, Dean; Hendler, Jim. Semantic web for the working ontologist. Effective modeling in RDFS and OWL. (en anglès). Morgan Kaufmann, 2011, p. 354. ISBN 978-0-12-385965-5.
- ↑ Yu, Liyang. A developer's guide to the semantic web (en anglès). Second edition. Springer, 2015, p. 121-166. ISBN 9783662437957.
- ↑ «Learn OWL and RDFS» (en anglès). [Consulta: 2 juliol 2018].