Méta-données à propos des documents :
| description: | https://lov.linkeddata.es/dataset/lov/vocabs/dcterms |
|---|---|
| homepage: | http://purl.org/dc/terms/ |
Description de personnes et de leur réseau social
| description: | https://lov.linkeddata.es/dataset/lov/vocabs/foaf |
|---|---|
| homepage: | http://www.foaf-project.org/ |
Description de communautés en ligne
| description: | https://lov.linkeddata.es/dataset/lov/vocabs/sioc |
|---|---|
| homepage: | http://rdfs.org/sioc/spec/ |
Vocabulaire généraliste
| description: | https://lov.linkeddata.es/dataset/lov/vocabs/schema |
|---|---|
| homepage: | http://schema.org/ |
Ontologie pour le Web of Things (capteurs et objets connectés).
| description: | https://lov.linkeddata.es/dataset/lov/vocabs/schema |
|---|---|
| homepage: | https://www.w3.org/TR/vocab-ssn/ |
Extension de Schema.org pour décrire des produits commercialisés.
| homepage: | https://www.gs1.org/voc/ |
|---|
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).
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 .
Expliciter formellement la sémantique des vocabulaires (en conformité avec la sémantique de RDF), afin de
![digraph inference1 {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
James_Bond -> C [ label="rdf:type" ]
James_Bond [ label=":James_Bond" ]
C [ label="dbo:FictionalCharacter" ]
}](_images/graphviz-96942e80d8a89411706e8b069b730fcea3eae66e.png)
⊧ₖ
![digraph inference2 {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
James_Bond -> C [ label="rdf:type" ]
James_Bond [ label=":James_Bond" ]
C [ label="dbo:Person" ]
}](_images/graphviz-8c26d87634229cc39e26dbe68f9588eb8e1308a3.png)
⊧ₖ
![digraph inference3 {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
James_Bond -> C [ label="rdf:type" ]
James_Bond [ label=":James_Bond" ]
C [ label="foaf:Person" ]
}](_images/graphviz-295104d5b52f035ec7fbb771457a3c74d4827609.png)
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é, cf. ci-après
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#>
rdf:type indique l’appartenance d’une ressource à une classe.
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" ]
r -> C [ label="rdf:type", fontcolor=red ]
}](_images/graphviz-3b9e0a1a03b34ba7fc6461ba288a025554159bfa.png)
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-01cc1fe19f739e58d66899e1fdc7bce469403336.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-5ad83b997822fe835615198a42a190069303e5b8.png)
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-6bf1f9608718b522b33b8ddf0f29343e04031c4c.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-30de2788fa585af323e061c218c0cc43744709a1.png)
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-33ee35d41152f71ccc5edfd48c4aed6877c51eac.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-c9ed6090ed318bfdce69b4a2ec9742c47c79817b.png)
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-eec864f2c06e1da17e8d7d561c793daf86eb3e33.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-f6bbfdc3638f25d024e435069b201eac07fbc1bc.png)
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.
![digraph literal_inconsistency {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label=":Ian_Fleming" ]
s [ label="\"a thursday\""; shape=box ]
p [ label="dbo:birthDate" ]
C [ label="xsd:dateTime" ]
p -> C [ label="rdfs:range", fontcolor=red ]
r -> s [ label="dbo:birthDate" ]
}](_images/graphviz-6210f8648ca9cf75a1a60d1fadf5440a39189005.png)
Mais ces contradictions sont rares en RDF-S, qui ne permet pas d’exprimer de négation.
Dans l’exemple précédent, dbr:James_Bond est à la fois une personne (dbo:Person) et une œuvre (dbo:Work), et RDF-S ne permet pas d’interdire cela.
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.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-a68268a312e2770845e6e45109cb1161304818b1.png)
OWL (Web Ontology Language) a été recommandé par le W3C en 2004, et sa version 2 en 2009.
| 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 (Prolog, 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-39d4535c36b90a4f737b4e62e12e8e3d719f10f2.png)
owl:sameAsowl:differentFromowl:AllDifferentowl:NegativePropertyAssertionIndique que deux IRIs dénotent la même ressource.
Exemple :
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="lmdb_character:82" ]
s [ label=":James_Bond" ]
t [ label=":Ian_Fleming" ]
r -> s [ label="owl:sameAs", fontcolor=red ]
s -> t [ label="dbo:creator" ]
}](_images/graphviz-9ef8385940378e43de1f715612a7fcdcf18d65ea.png)
⊧
![digraph subclassof_o {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="lmdb_character:82" ]
t [ label=":Ian_Fleming" ]
r -> t [ label="dbo:creator" ]
}](_images/graphviz-44ba4b6615dad8ee76959fac1e29161d0d12a4eb.png)
owl:equivalentClassowl:unionOfowl:disjointWithowl:AllDisjointClassesowl:ObjectPropertyowl:DatatypePropertyowl:FunctionalPropertyowl:InverseFunctionalPropertyowl:TransitivePropertyowl:SymetricPropertyowl:AsymmetricPropertyowl:ReflexivePropertyowl:IreflexivePropertyowl:equivalentPropertyowl:inverseOfowl:propertyDisjointWithowl:AllDisjointPropertiesowl:propertyChainAxiomUne restriction OWL est une classe définie en intension, selon une contrainte sur une propriété p de ses instances :
Touts ceux qui ont au moins un enfant médecin
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="" ]
R [ label="owl:Restriction" ]
p [ label="ex:hasChild" ]
C [ label="ex:Doctor" ]
r -> R [ label="rdf:type" ]
r -> p [ label="owl:onProperty" ]
r -> C [ label="owl:someValuesFrom" ]
}](_images/graphviz-e7f9fb9442aa5aa58d2e0812d469b4ea7e636bb8.png)
Touts ceux qui n’ont que des enfants médecins
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="" ]
R [ label="owl:Restriction" ]
p [ label="ex:hasChild" ]
C [ label="ex:Doctor" ]
r -> R [ label="rdf:type" ]
r -> p [ label="owl:onProperty" ]
r -> C [ label="owl:allValuesFrom" ]
}](_images/graphviz-37298633b2809d3b2509608e1d87822bb34b4c6b.png)
Avertissement
Cela inclut tout ce qui n’a aucun enfant (car cela revient à dire « tout ceux dont aucun enfant n’est pas médecin »).
Cela inclut donc également les voitures, les maisons…
Touts ceux qui ont au plus trois enfants
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="" ]
R [ label="owl:Restriction" ]
p [ label="ex:hasChild" ]
n [ label="3",shape=rectangle ]
r -> R [ label="rdf:type" ]
r -> p [ label="owl:onProperty" ]
r -> n [ label="owl:maxCardinality" ]
}](_images/graphviz-b87d581452fe0aa0456427779b07012270233e56.png)
Touts ceux qui ont au moins trois enfants médecins
![digraph subclassof_p {
margin=0; rankdir=LR; bgcolor="#FFFFFF00";
node [ style=filled,color=black,fillcolor=white ];
r [ label="" ]
R [ label="owl:Restriction" ]
p [ label="ex:hasChild" ]
n [ label="3",shape=rectangle ]
C [ label="ex:Doctor" ]
r -> R [ label="rdf:type" ]
r -> p [ label="owl:onProperty" ]
r -> n [ label="owl:minCardinality" ]
r -> C [ label="owl:onClass" ]
}](_images/graphviz-69d85b6b27acaccd31e5ccfb726687188f33ec29.png)
On pourrait avoir l’impression que OWL, mieux que RDF-S, permet d’exprimet des contraintes d’intégrités. Mais l”hypothèse de monde ouvert rend ceci également difficile.
Exemple :
RDF-S et OWL décrivent des schémas inférentiels:
Ils ne doivent pas être confondus avec les schémas structurels ou schémas validants: