Cet article est uneébauche concernant leWeb sémantique.
RDF Schema ouRDFS (acronyme deResource Description Framework Schema) est un langage extensible dereprésentation des connaissances. Il appartient à la famille des langages duWeb sémantique publiés par leW3C. RDFS fournit des éléments de base pour la définition d'ontologies ou vocabulaires destinés à structurer desressourcesRDF, ces derniers pouvant être stockés dans des bases de données appeléestriplestores et manipulés à l'aide des requêtes en langageSPARQL.
La première version de RDFS[1] a été proposée en pour être publiée en tant que recommandation par leW3C le[2]. Les composants principaux de RDFS sont intégrés dans un langage d'ontologie plus expressif,OWL.
Un exemple simple de rdfs:Class est foaf:Person dans le vocabulaireFOAF. Uneinstance de la classe foaf:Person est une ressource liée à la classe en utilisant un prédicat rdf:type.L'expression formelle suivante en RDFS traduit la phrase enlangage naturel : 'Jean est une personne'.
ex:Jean rdf:type foaf:Person
La définition de rdfs:Class est récursive. rdfs:Class est la classe de toutes les classes.
Par exemple, 'Toute personne est un Agent':
foaf:Person rdfs:subClassOf foaf:Agent
RDFS précise la notion de propriété définie par RDF en permettant de donner un type ou une classe au sujet et à l'objet des triplets. Pour cela, RDFS ajoute les notions de « domain », correspondant audomaine de définition d'une fonction en anglais, et « range », sonensemble d'arrivée :
(P rdfs:domain C indique que les ressources relatives au sujet d'un triplet dont le prédicat est P sont des instances de la classe C)
(P rdfs:range C indique que les ressources relatives à l'objet d'un triplet dont le prédicat est P sont des instances de la classe C)
Par exemple, on pourra exprimer que la propriété « travailledans » relie un sujet qui est une personne à un objet qui est une organisation.
ex:travailledans rdfs:domain foaf:Person
ex:travailledans rdfs:range foaf:Organization
À partir des déclarations précédentes, la déclaration suivante implique nécessairement que ex:Jean est une instance de foaf:Person, et ex:Societe_X une instance de foaf:Organization
ex:Jeanex:travailledans ex:Societe_X
Les hiérarchies de classes prennent en charge l'héritage des « domain » et « range » des propriétés.
RDFS fournit des éléments de base pour structurer des ressources RDF. Le graphe ainsi obtenu est considéré comme étantun graphe bien formé si le système d'implication (décrit dans RDFS, OWL, etc.) est respecté.
Par exemple, on peut décrire les phrases 'Le chien1 est un animal','le chat1 est un chat', 'les zoos hébergent des animaux' et 'Le zoo1 héberge le chat2' :
ex:dog1rdf:typeex:animalex:cat1rdf:typeex:catzoo:hostrdfs:rangeex:animalex:zoo1zoo:hostex:cat2
Mais ce graphe n'est pas bien formé car le système ne peut pas deviner qu'un chat est un animal. Il faut donc rajouter 'Les chats sont des animaux':
ex:catrdfs:subClassOfex:animal
Voici l'exemple correct :
| En clair | Le graphe RDF |
|---|---|
| |
| En RDF/turtle | |
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .@prefix ex: <http://example.org/> .@prefix zoo: <http://example.org/zoo/> .ex:dog1 rdf:type ex:animal.ex:cat1 rdf:type ex:cat.ex:cat rdfs:subClassOf ex:animal.zoo:host rdfs:range ex:animal.ex:zoo1 zoo:host ex:cat2. | |
Si votretriplestore (ou base de données RDF) implémente le système d'implication de RDF et RDFS, la requêteSPARQL suivante (le mot cléa est équivalent àrdf:type en SPARQL) :
PREFIXex:<http://example.org/>SELECT?animalWHERE{?animalaex:animal.}
Donnera le résultat suivant avec cat2 car la typeex:cat hérite du typeex:animal :
| animal |
|---|
| <http://example.org/dog1> |
| <http://example.org/cat1> |
| <http://example.org/cat2> |
| Contexte | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Semantic Web Stack |
| ||||||||||||||||||
| Autres ontologies | |||||||||||||||||||
| Articles liés | |||||||||||||||||||