Méta-vocabulaires§

Introduction§

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 et aux prédicats.

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

Exemples d’inférences§

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" ]
}

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" ]
}

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" ]
}

RDF-Schema§

Présentation§

  • RDF-Schema (ou RDF-S) est une recommandation du W3C publiée en même temps que RDF (1999 et révisée en 2004).

  • 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#>

rdf:type§

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 ]
}

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 ]
}

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" ]
}

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" ]
}

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" ]
}

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" ]
}

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" ]
}

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" ]
}

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" ]
}

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 [ label="rdf:type" ]
dumbo [ label=":dumbo" ]
Éléphant [ label=":Éléphant" ]
Espèce [ label=":Espèce" ]
Class [ label="rdfs:Class" ]
}

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" ]
}

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).
  • 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).

owl:sameAs§

Indique 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" ]
}

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" ]
}