Vocabulaires et méta-vocabulaires¶§
Vocabulaires¶§
Quelques vocabulaires utiles¶§
Dublin Core¶§
Méta-données à propos des documents :
- titre, résumé...
- créateur, contributeur...
- date de création, de dernière modification, versions...
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_dcterms.html |
---|---|
homepage: | http://purl.org/dc/terms/ |
FOAF: Friend of a friend¶§
Description de personnes et de leur réseau social
- Personne (nom, prénom, page weg, adresse e-mail, connaissance...)
- Groupe (membres...)
- Document (a pour sujet...), Image (représente...)
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_foaf.html |
---|---|
homepage: | http://www.foaf-project.org/ |
SIOC: Semantically-Interlinked Online Communities¶§
Description de communautés en ligne
- Forum, Blog, Wiki...
- Article, Commentaire...
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_sioc.html |
---|---|
homepage: | http://rdfs.org/sioc/spec/ |
WGS84: Word Geodetic System¶§
Coordonnées géographiques
- SpatialThing, Point
- lattitue, longitude, altitude
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_geo.html |
---|---|
homepage: | (rdf) http://www.w3.org/2003/01/geo/wgs84_pos |
GoodRelations¶§
e-commerce
- Produit et Service, Offre...
- quantité, prix, garantie...
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_gr.html |
---|---|
homepage: | http://purl.org/goodrelations/v1 |
Schema.org¶§
Vocabulaire généraliste
- destiné à améliorer l’indexation des pages par les moteurs de recherche
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_schema.html |
---|---|
homepage: | http://schema.org/ |
Méta-vocabulaires¶§
Motivation¶§
Découverte de la sémantique d’un terme (IRI) en le déréférençant.
Exemple : http://dbpedia.org/resource/James_Bond
:James_Bond
a dbo:FictionalCharacter ;
dbo:creator :Ian_Fleming .
Ce principe s’applique également aux classes (e.g. dbo:FictionalCharacter
)
et aux prédicats (e.g. dbo:creator
).
Problème¶§
Syndrome du dictionnaire : il faut pouvoir s’« arrêter » sur des termes connus.
Nécessité d’un vocabulaire (ensemble de termes) permettant de décrire d’autres vocabulaires : méta-vocabulaires.
Analogie : XML-Schema est un vocabulaire XML dont la sémantique est connue a priori, et qui permet d’exprimer la structure de nouveaux vocabulaires.
Objectif¶§
Expliciter formellement la sémantique des vocabulaires (en conformité avec la sémantique de RDF), afin de
- limiter les problèmes d’ambigüité sur les termes
- permettre leur découverte dynamique
- relations sémantiques internes
- assurer l’interopérabilité
- relations sémantiques avec d’autres vocabulaires
RDF-Schema¶§
Présentation¶§
RDF-Schema (ou RDF-S) est une recommandation du W3C publiée en même temps que RDF (1999, révisée en 2004 et 2014).
Il permet d’exprimer une hiérarchie de classes et une hiérarchie de propriétés (relations).
→ hiérarchie au sens large : treillis
Il permet aussi d’exprimer des contraintes sémantiques sur les propriétés et les classes.
⚠ contrainte sémantique ≠ contrainte d’intégrité
Espaces de noms et préfixes¶§
Suite à des circonvolutions historiques, le vocabulaire RDF-Schema utilise deux espaces de nom, associés respectivement aux préfixes suivants :
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
rdfs:subClassOf¶§
rdfs:subClassOf
indique une relation une spécialisation entre classes
(« est une sorte de », ou « tous les X sont des Y »).
Exemple :
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
C [ label="dbo:FictionalCharacter" ]
D [ label="dbo:Person" ]
r -> C [ label="rdf:type" ]
C -> D [ label="rdfs:subClassOf", fontcolor=red ]
}](_images/graphviz-17cba1369d272560d4d955cfa4bd4c711505d6d5.png)
⊧
![digraph subclassof_o {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
D [ label="dbo:Person" ]
r -> D [ label="rdf:type" ]
}](_images/graphviz-7b016ee42dedf1a453694336a912b5e472f8cf78.png)
rdfs:subPropertyOf¶§
rdfs:subPropertyOf
indique une relation une spécialisation entre propriétés
(« est une sorte de »).
Exemple :
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
s [ label=":Ian_Fleming" ]
p [ label="dbo:creator" ]
q [ label="dc:creator" ]
p -> q [ label="rdfs:subPropertyOf", fontcolor=red ]
r -> s [ label="dbo:creator" ]
}](_images/graphviz-1647ac140c4896665effc97117d2b802b25cb98d.png)
⊧
![digraph subclassof_o {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
s [ label=":Ian_Fleming" ]
r -> s [ label="dc:creator" ]
}](_images/graphviz-191d19ded37af370eba1f527518cf2aab8175e72.png)
rdfs:domain¶§
Indique qu’une propriété porte nécéssairement sur les instance d’une classe.
Exemple :
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
s [ label=":Ian_Fleming" ]
p [ label="dbo:creator" ]
C [ label="dbo:Work" ]
p -> C [ label="rdfs:domain", fontcolor=red ]
r -> s [ label="dbo:creator" ]
}](_images/graphviz-c880e08764a1eeebb678ae2a12a2c231edb70607.png)
⊧
![digraph subclassof_o {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
C [ label="dbo:Work" ]
r -> C [ label="rdf:type" ]
}](_images/graphviz-ff59d64e098b0593727565ae12d63ddc0923b68b.png)
rdfs:range¶§
Indique qu’une propriété a nécéssairement pour valeur les instance d’une classe.
Exemple :
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":James_Bond" ]
s [ label=":Ian_Fleming" ]
p [ label="dbo:creator" ]
C [ label="dbo:Person" ]
p -> C [ label="rdfs:range", fontcolor=red ]
r -> s [ label="dbo:creator" ]
}](_images/graphviz-e55662518d4deaa2aa26a12405f005aa0f7669cd.png)
⊧
![digraph subclassof_o {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
s [ label=":Ian_Fleming" ]
C [ label="dbo:Person" ]
s -> C [ label="rdf:type" ]
}](_images/graphviz-bd910f6db9ae8409d487c3724e34f60a3c835b90.png)
Documentation¶§
RDF-Schema fournit aussi des termes pour documenter un vocabulaire :
rdfs:label
permet d’associer un libellé textuel à un URI (éventuellement plusieurs, par exemple dans plusieurs langues) ;rdfs:comment
permet d’associer un commentaire textuel plus long ;rdfs:seeAlso
permet de pointer vers une autre ressource.
Méta-modélisation¶§
Rien n’empèche, en RDF-S, d’avoir une classe qui soit elle même une instance d’une autre classe (méta-classe). C’est d’ailleurs de cette manière que les classes sont identifiées.
![digraph metamodelling {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
dumbo -> Éléphant -> Espèce -> Class -> Class [ label="rdf:type" ]
dumbo [ label=":dumbo" ]
Éléphant [ label=":Éléphant" ]
Espèce [ label=":Espèce" ]
Class [ label="rdfs:Class" ]
}](_images/graphviz-9d3b391b1643a72d96e301c9172672d21799b8d5.png)
Contrainte sémantique ≠ contraintes d’intégrit鶧
Les méta-propriétés rdfs:domain
et rdfs:range
ne servent pas à vérifier qu’un graphe serait « valide ». Il ne permettent que d’inférer des faits supplémentaires.
Comme RDF-S n’a pas de négation, ceci n’entraîne jamais d’incohérence formelle.
→ en d’autre termes, la sémantique de RDF-S ne permet pas de détecter les incohérences (conceptuelles) que pourraient entrainer ces inférences.
![digraph not_inconsistent {
margin=1; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
jdoe [ label=":JohnDoe" ]
doc1 [ label=":doc1" ]
Document [ label="foaf:Document" ]
jdoe -> doc1 [ label="foaf:knows" ]
doc1 -> Document [ label="rdf:type" ]
}](_images/graphviz-fde156703b81428dad85028bb4320f71cbb29160.png)
OWL¶§
Présentation¶§
OWL (Web Ontology Language) a été recommandé par le W3C en 2004, et sa version 2 en 2009.
- C’est un méta-vocabulaire (comme RDF-S) inspiré des logiques de descriptions avec valeurs concrètes (littéraux).
- C’est un surensemble de RDF-S, ajoutant notamment la possibilité d’exprimer des négations.
- Il définit plusieurs profils offrant des compromis différents en terme d’expressivité et de complexité.
- Il mime les capacités de méta-modélisation de RDF-S (punning).
Profils OWL 2¶§
Full | aucune contrainte, indécidable |
DL | minimum de contraintes, décidable mais très complexe |
EL | quantifications existentielles (EL++), expressivité adaptée à certains domaines (biologie) |
QL | peut s’implémenter au dessus d’un langage de requêtes (SQL) |
RL | peut s’implémenter au dessus d’un langage à base de règles (Datalog) |
![digraph owl_profiles {
margin=0; rankdir=BT; bgcolor="#FFFFFF00"; size=3;
node [ style=filled,color=black,fillcolor=white,shape=box];
full [ label="OWL2 Full" ]
dl [ label="OWL2 DL" ]
el [ label="OWL2 EL" ]
ql [ label="OWL2 QL" ]
rl [ label="OWL2 RL" ]
el -> dl -> full
ql -> dl
rl -> dl
}](_images/graphviz-b3874de0d6d8d19f08800d48e4b312acdb409dad.png)
Relations entre individus¶§
owl:sameAs
owl:differentFrom
owl:AllDifferent
owl:NegativePropertyAssertion
Types de propriét鶧
owl:ObjectProperty
owl:DatatypeProperty
owl:FunctionalProperty
owl:InverseFunctionalProperty
owl:TransitiveProperty
owl:SymetricProperty
owl:AsymmetricProperty
owl:ReflexiveProperty
owl:IreflexiveProperty
Relations entre propriétés¶§
owl:equivalentProperty
owl:inverseOf
owl:propertyDisjointWith
owl:AllDisjointProperties
owl:propertyChainAxiom
Restrictions¶§
Une restriction OWL est une classe définie en intension, selon une contrainte sur une propriété p de ses instances :
- au moins une valeur de p est de la classe C,
- toutes les valeurs de p sont de la classe C,
- il y a au moins / au plus / exactement n valeurs de p (ayant la classe C)