RDF - Les petites cases

Download Report

Transcript RDF - Les petites cases

Formation aux technologies du Web sémantique
CCSD, Lyon, 8-10 septembre 2010
Présentation de la formation
Objectif : découvrir les technologies du Web sémantique
tant du point de vue théorique que pratique
Jour 1
Jour 2
Jour 3
Aspect théorique
et
Web de données
Aspect pratique
et
Ontologie
PHP
et
Web sémantique
2
Plan de la journée
Ecrire
le RDF
Interroger
le RDF
Modéliser
le RDF
RDF : quelques infos complémentaires
La notion de nœud blanc
<http://www.w3.org/People/Berners-Lee/card#i>
<http://xmlns.com/foaf/0.1/knows>
?????
<http://xmlns.com/foaf/0.1/name>
« John Doe »
Il est possible de déclarer une ressource en RDF qui n’a pas d’URI, on parle alors de nœud
blanc (blank node). La ressource en question est contextuelle à une autre ressource et un
outil lui attribuera une URI interne.
Espaces de noms, préfixes, Qnames, Curies
<http://xmlns.com/foaf/0.1/knows></http://xmlns.com/foaf/0.1/knows>
Principe des Qnames : « Prefix:name », « foaf:knows »
Déclaration des préfixes et de la partie redondante d’une URI
4
RDF/XML : quelques infos complémentaires
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
Elément racine
Remarque générale : pas de schéma,
donc pas de validation en RDF/XML,
il faut simplement respecter la
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
structure du triplet
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
Déclaration des préfixes
<foaf:Person rdf:about="http://www.lespetitescases.net/foaf_got.rdf#GP">
<foaf:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Element XML de déclaration correspond au type de la ressource =
Gautier Poupeau
<rdf:Description rdf:about="http://www.lespetitescases.net/foaf_got.rdf#GP">
</foaf:name>
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdf:Description>
<foaf:gender
xml:lang="en">male</foaf:gender>
<foaf:interest rdf:resource="http://dbpedia.org/resource/XML"/>
<foaf:knows rdf:resource="http://www.figoblog.org/foaf.rdf#EB"/>
<foaf:based_near>
<geo:Point geo:lat="48.837" geo:long="2.404"/>
</foaf:based_near>
</foaf:Person>
</rdf:RDF>
5
RDF/XML : quelques infos complémentaires
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
Attribut pour déclarer l’URI du sujet
L’URI du sujet
<foaf:Person rdf:about="http://www.lespetitescases.net/foaf_got.rdf#GP">
<foaf:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Gautier Poupeau
Si l’objet est un littéral, sa valeur
</foaf:name>
Qname pour le prédicat
est Attribut
le contenu
de l’élément
rdf:datatype
pour forcer le type de
<foaf:gender xml:lang="en">male</foaf:gender> données d’un littéral
Indiquer<foaf:interest
la langue durdf:resource="http://dbpedia.org/resource/XML"/>
littéral avec
l’attribut xml:lang
<foaf:knows rdf:resource="http://www.figoblog.org/foaf.rdf#EB"/>
<foaf:based_near>
<geo:Point geo:lat="48.837" geo:long="2.404"/>
</foaf:based_near>
</foaf:Person>
</rdf:RDF>
6
RDF/XML : quelques infos complémentaires
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
Pour valider un flux RDF/XML, vous
pouvez utiliser l’outil RDF validator mis
à disposition par le W3C
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
http://www.w3.org/RDF/Validator/
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<foaf:Person rdf:about="http://www.lespetitescases.net/foaf_got.rdf#GP">
<foaf:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Gautier Poupeau
</foaf:name>
Indiquer l’URI de l’objet dans
l’attribut
rdf:resource
<foaf:gender
xml:lang="en">male</foaf:gender>
URI de l’objet
<foaf:interest rdf:resource="http://dbpedia.org/resource/XML"/>
<foaf:knows rdf:resource="http://www.figoblog.org/foaf.rdf#EB"/>
<foaf:based_near>
Déclaration du prédicat en attribut =
<geo:Point geo:lat="48.837" geo:long="2.404"/>
<geo:Point>
</foaf:based_near>
Syntaxe du nœud blanc
</foaf:Person>
</rdf:RDF>
<geo:lat>48.837</geo:lat>
</geo:Point>
7
FOAF : Friend Of A Friend
Ontologie créée et maintenue par Dan Brickley et Libby Miller
http://xmlns.com/foaf/spec/
8
Exercice : créer un profil FOAF en RDF/XML
Deux ressources reliées
• une ressource de type foaf:PersonalProfileDocument
• une ressource de type foaf:Person
Pour les URIs, prenez ce que vous souhaitez si vous ne possédez pas un nom de domaine,
même http://exemple.org/
Propriétés minimales à utiliser
•
•
•
•
•
foaf:name
foaf:interest lié à une ressource de Dbpedia
foaf:based_near lié à une ressource de Geonames
foaf:knows lié à une ressource existante
exprimer sa date de naissance avec l’ontologie BIO (facultatif)
Vous pouvez utiliser le générateur FOAF-a-MATIC pour initialiser votre fichier FOAF.
Copiez le résultat dans un éditeur de texte et complétez le fichier.
9
RDFa : quelques infos complémentaires
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xml:lang="fr">
Déclaration de la DTD spécifique
XHTML + RDFa
Déclaration des espaces de noms
et des préfixes
<head typeof="foaf:PersonalProfileDocument">
Déclaration de la langue donc
<title>Profilrécupéré
RDFa à titrepour
d'exemple</title>
tous les littéraux
<meta property="dc:title" content="Mon profil FOAF"/>
<link rel="foaf:maker" href="#GP"/>
Pas de déclaration URI du sujet
donc l’URL de la page par défaut
<link rel="foaf:primaryTopic" href="#GP"/>
</head>
<body>
<div typeof="foaf:Person" about="#GP">
<p>Je m'appelle <span property="foaf:name" datatype="xsd:string">Gautier Poupeau</span>. </p>
10
RDFa : quelques infos complémentaires
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
Attribut @property
xml:lang="fr">
si objet = Littéral
(ici dans attribut @content car dans l’en-tête HTML)
<head typeof="foaf:PersonalProfileDocument">
<title>Profil RDFa à titre d'exemple</title>
Attribut @typeof pour indiquer
le type de la ressource = rdf:type
<meta property="dc:title" content="Mon profil FOAF"/>
Attribut @about pour
déclarer l’URI d’un sujet différent
<link rel="foaf:primaryTopic" href="#GP"/>
Attribut
@rel
de Utilisation
l’URL
de lade
page
la hiérarchie de XHTML
</head>
@datatype
pour
si objetpour
= Ressource
indiquer les Attribut
différents
triplets dont
<body>
indiquer
le type de données
l’URI
est sujet
<link rel="foaf:maker" href="#GP"/>
<div typeof="foaf:Person" about="#GP">
<p>Je m'appelle <span property="foaf:name" datatype="xsd:string">Gautier Poupeau</span>. </p>
11
RDFa : quelques infos complémentaires
Mon anniversaire est le <span property="foaf:birthday" content="05-19" xml:lang="en">19 mai</span>
</p>
<p>
Je suis passionné par les technologies du <span rel="foaf:interest"
Attribut @content pour
href="http://dbpedia.org/resource/Semantic_Web">Web sémantique</span>.
</p>
indiquer contenu différent de l’élément
@rel et @href
pour
<p>Je tiens d'ailleurs un blog sur ces questions : <spanAttribut
rel="foaf:weblog"><a
href="http://www.lespetitescases.net"
property="dc:title">Les petites cases</a></span></p>
indiquer triplet avec ressource en objet
Utilisation de la hiérarchie pour indiquer
triplet sur une ressource elle-même
objet avec le prédicat foaf:weblog
<p>J'appartiens à la communauté des professionnels de l'information composée de :</p>
<ul rel="foaf:knows">
<li typeof="foaf:person" about="http://www.figoblog.org/foaf.rdf#EB">
<a property="foaf:name" rel="foaf:homepage" href="http://www.figoblog.org">Emmanuelle Bermès</a>
</li>
<li typeof="foaf:person">
<a property="foaf:name" rel="foaf:homepage" href="http://stephanepouyllau.org/">Stéphane Pouyllau</a>
</li>
Utilisation de la hiérarchie pour indiquer
</ul>
triplet sur une ressource elle-même
</div>
</body>
objet avec le prédicat foaf:knows
Même chose mais ici on a un nœud blanc
</html>
12
RDFa : quelques infos complémentaires / le résultat
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:dc="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<foaf:PersonalProfileDocument rdf:about="http://www.lespetitescases.net/semweblabs/Formation-CCSD/RDFa.htm">
<foaf:maker>
Après avoir passé la page Web dans l’outil RDFa Distiller, on
obtient les triplets suivants.
<foaf:Person rdf:about="http://www.lespetitescases.net/semweblabs/Formation-CCSD/RDFa.htm#GP">
<foaf:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Gautier Poupeau</foaf:name>
<foaf:knows>
<foaf:person>
<foaf:homepage rdf:resource="http://stephanepouyllau.org/"/>
<foaf:name xml:lang="fr">Stéphane Pouyllau</foaf:name>
</foaf:person>
</foaf:knows>
<foaf:knows>
<foaf:person rdf:about="http://www.figoblog.org/foaf.rdf#EB">
<foaf:homepage rdf:resource="http://www.figoblog.org"/>
<foaf:name xml:lang="fr">Emmanuelle Bermès</foaf:name>
</foaf:person>
</foaf:knows>
<foaf:weblog>
<rdf:Description rdf:about="http://www.lespetitescases.net">
<dc:title xml:lang="fr">Les petites cases</dc:title>
</rdf:Description>
</foaf:weblog>
<foaf:birthday xml:lang="en">05-19</foaf:birthday>
<foaf:interest rdf:resource="http://dbpedia.org/resource/Semantic_Web"/>
</foaf:Person>
</foaf:maker>
<foaf:primaryTopic rdf:resource="http://www.lespetitescases.net/semweblabs/Formation-CCSD/RDFa.htm#GP"/>
<dc:title xml:lang="fr">Mon profil FOAF</dc:title>
</foaf:PersonalProfileDocument>
</rdf:RDF>
13
Object Reuse and Exchange (OAI-ORE)
Ontologie créée et maintenue par l’Open Archives Initiative pour décrire
l’agrégation de ressources Web ; conçue pour remplacer OAI-PMH en utilisant
de manière plus conforme l’architecture du Web et en se basant sur les
technologies du Web sémantique.
14
Exercice : Ajouter du RDFa dans la page de notice de HAL
Ontologies à utiliser
• OAI-ORE
• FOAF
• Dublin Core
Outils en ligne à utiliser pour vous aider
• RDFa Distiller
• Check RDFa
• RDF Validator
15
Plan de la journée
Ecrire
le RDF
Interroger
le RDF
Modéliser
le RDF
SPARQL : retour sur la syntaxe
Les différents types de requêtes
•
•
•
•
SELECT qui permet de sélectionner des informations dans la base de données, c’est-à-dire
de faire une recherche
CONSTRUCT qui permet de construire un nouveau graphe à partir des données disponibles
(c'est-à-dire de combiner les données d’une nouvelle manière)
ASK qui permet de tester s’il existe au moins une réponse à une question posée
DESCRIBE permet de récupérer un graphe RDF (un ensemble de triplets) décrivant une
ressource, à partir de son URI.
La syntaxe d’une requête SPARQL
Déclaration des préfixes
et des espaces de nom
PREFIX dbpedia: <http://dbpedia.org/resource/>
Déclaration du type
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
de requête
SELECT ?oeuvre
Déclaration de la ou les
variables recherchées
Déclaration des
contraintes
WHERE {
?oeuvre <http://dbpedia.org/ontology/author> dbpedia:Victor_Hugo.
?oeuvre foaf:name "Les Misérables".
Déclaration
du littéral
}
entre guillemets
Déclaration d’un triplet
on note l’utilisation des chevrons si l’URI
est exprimé complètement
17
SPARQL : DISTINCT/OPTIONAL
Le mot-clé DISTINCT
SELECT ?predicat
WHERE {
<http://dbpedia.org/resource/Victor_Hugo> ?predicat
}
SELECT DISTINCT ?predicat
WHERE {
<http://dbpedia.org/resource/Victor_Hugo> ?predicat
}
?objet.
?objet.
Autant de résultats que de triplets
dont Victor Hugo est sujet, plusieurs
résultats identiques
Dédoublonnage automatique des
résultats
Le mot-clé OPTIONAL
PREFIX dbpedia: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/ >
SELECT ?auteur ?depiction WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>.
?auteur foaf:depiction ?depiction.
?auteur dbpedia:birthPlace <http://dbpedia.org/resource/Paris>.
}
SELECT ?auteur ?depiction WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>.
OPTIONAL {?auteur foaf:depiction ?depiction.}
?auteur dbpedia:birthPlace <http://dbpedia.org/resource/Paris>.
}
Résultats que si toutes les contraintes
sont vérifiées
Résultats même si la contrainte
optionnelle n’est pas vérifiée (mais
affichage du résultat si elle existe)
18
SPARQL : UNION/ORDER/LIMIT
Le mot-clé UNION
UNION permet d’exprimer l’opérateur
SELECT ?auteur WHERE {
booléen « OU » (inclusif)
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>.
{
{?auteur <http://dbpedia.org/ontology/birthPlace> <http://dbpedia.org/resource/Paris>.}
UNION
{?auteur <http://dbpedia.org/ontology/birthPlace> <http://dbpedia.org/resource/Besan%C3%A7on>.}
}
}
Le mot-clé ORDER
SELECT ?auteur ?name WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>;
foaf:name ?name
}
ORDER BY ?name
ORDER BY permet de classer les
résultats suivants une variable
déclarée
Le mot-clé LIMIT
SELECT ?auteur ?name WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>;
foaf:name ?name
}
ORDER BY ?name
LIMIT 20
LIMIT permet de limiter le nombre de
résultats
19
SPARQL : les filtres
Il est possible d’appliquer des filtres à une requête SPARQL pour limiter les résultats.
Filtre lang()
SELECT ?abstract
Filtrer selon la langue du littéral
WHERE {
<http://dbpedia.org/resource/Victor_Hugo> <http://dbpedia.org/ontology/abstract> ?abstract.
FILTER (lang(?abstract)=“fr”)
}
Filtre de comparaison
SELECT distinct ?auteur ?date WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>.
?auteur <http://dbpedia.org/ontology/birthDate> ?date.
FILTER ( xsd:dateTime(?date) > xsd:dateTime("1950-01-01")).
}
Filtrer les données avec les signes de
comparaison mathématique
Filtre de regexp
SELECT ?auteur ?name WHERE {
?auteur a <http://dbpedia.org/class/yago/FrenchNovelists>.
?auteur foaf:name ?name
FILTER regex(?name, '^Jean').
}
Filtrer un littéral en y appliquant une
regexp
Consulter la recommandation SPARQL pour découvrir les autres filtres
20
Exercice : effectuer des requêtes SPARQL sur dbpedia
Deux interfaces Web sont disponibles pour effectuer des requêtes
• Interface classique : http://dbpedia.org/sparql
• Interface améliorée : http://dbpedia.org/snorql
N’oubliez pas d’indiquer la syntaxe de sortie HTML pour visualiser directement les
résultats.
Effectuez les requêtes suivantes :
•
•
•
•
formuler une requête qui affiche toutes les informations associées à l’URI de Victor Hugo.
rechercher une ressource ayant pour auteur Victor Hugo et pour type « Livre ».
rechercher des romanciers français nés à Paris.
rechercher des livres dont les auteurs ont les mêmes influences que l’auteur de « Madame
Bovary ». Afficher également les auteurs.
21
Plan de la journée
Ecrire
le RDF
Interroger
le RDF
Modéliser
le RDF
Méthodologie pour la définition d’ontologies
Rappel
en philosophie, l’ontologie est l’étude de l’être en tant qu’être, c’est-à-dire l’étude des propriétés
générales de ce qui existe.
En informatique et en sciences de l’information, l’ontologie est un système de modélisation de
l’information permettant de représenter un domaine ou champ d’informations sous la forme d’un
ensemble structuré et relié des termes et concepts.
Les éléments d’une ontologie informatique :
• Classe : ensembles, collections, types d'objets, types de ressources manipulées (ex :
documents, article, personne, événement, lieu, concept…) ;
• Attribut : propriétés, fonctionnalités, caractéristiques ou paramètres que les objets
peuvent posséder et partager (ex : titre, date, étiquette, nom) ;
• Relation : lien que les objets peuvent avoir entre eux (ex : créateur, sujet, éditeur…)
• Individu ou instance : les objets appartenant à une ontologie (ex : l’article « Semantic
Web » écrit en 2001 par Tim Berners-Lee).
Etapes pour définir une ontologie, soit un vocabulaire RDF
1. Définir les classes de l’ontologie, soit les types de ressources manipulés ;
2. Arranger les classes en une hiérarchie taxinomique (super-classe ; sous-classe) ;
3. Définir les relations et les attributs ;
4. Définir la logique des relations ;
5. Peupler l’ontologie, c’est-à-dire créer les instances.
23
OWL : les ensembles, racine et en-tête
OWL est une recommandation du W3C pour décrire des ontologies en se basant sur le
modèle RDF. Il est issu des travaux de la DARPA sur DAML. Son but est de définir les types de
ressources, les prédicats et la logique utilisés dans des triplets RDF.
La recommandation OWL définit trois ensembles d’expressions croissantes :
• OWL Lite : hiérarchie de classes et mécanisme de contraintes simples ;
• OWL DL : expressivité maximum et respect des possibilités de calcul d’inférence ;
• OWL Full : expressivité maximum sans garantie de calcul d’inférence.
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
L’élément racine et l’en-tête d’une ontologie pour définir les
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
métadonnées
sur l’ontologie :
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
• Titre d’une ontologie ;
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
• Description d’une ontologie ;
xml:base="http://www.w3.org/2004/02/skos/core#">
• Import d’une ontologie ;
<owl:Ontology rdf:about="">
<rdfs:label
xml:lang="en">Ontology
example</rdfs:label>
• Version
précédente…
<rdfs:label xml:lang="fr">Exemple d'ontologie</rdfs:label>
<rdfs:comment xml:lang="fr">Ontologie exemple...</rdfs:comment>
<owl:imports rdf:resource="http://uneautreontologie.org/onto.owl"/>
</owl:Ontology>
</rdf:RDF>
24
Définir des classes
Dans notre monde, chaque chose a une nature, un type.
Exemples :
• Tim Berners-Lee est une personne ;
• Une personne est un être vivant ;
• http://www.bnf.fr est une page Web
• Une page Web est un document
• …
Dans le monde RDF, la nature d’une chose/ressource est une « classe »
Chose
Document
Page Web
Livre
Être vivant
Personne
Chien
En RDF, une ressource appartient toujours à une classe.
25
Pour aller plus loin dans la définition des classes
Les classes correspondent aux types de ressources manipulés dans l’ontologie. Elles sont
organisés hiérarchiquement. Il est possible de définir des classes complexes.
Théorie
Pratique
Classe
http://xmlns.com/foaf/0.1/Agent
Sous-classe
Si A est une classe, B une sous-classe et C
une instance de B, alors B est aussi une
instance de A
http://xmlns.com/foaf/0.1/Person
Si <http://www.w3.org/People/Berners-Lee/card#i> est de type
<http://xmlns.com/foaf/0.1/Person>, alors
<http://www.w3.org/People/Berners-Lee/card#i> est aussi de
type <http://xmlns.com/foaf/0.1/Agent>
Différence entre une classe et une instance : une classe représente les concepts et les types
abstraits et les instances représentent les individus attribués à une classe dans le monde réel.
Classe complexe
(pour info)
• Intersection : Classe à l’intersection de deux classes ;
• Union : Classe unissant deux classes ;
• Les classes disjointes : précise qu’une classe est strictement disjointe d’une autre classe ;
• Complémentaire : Classe étant défini comme complémentaire d’une autre classe ;
• Classe énuméré : Classe défini par une liste d’instances ;
Equivalence entre les
classes
Soit A une classe équivalente à B, C appartient à A, alors C appartient à B.
26
Définir des propriétés
Dans notre monde, chaque type de choses possède des
caractéristiques.
Exemples :
• une personne a un nom ;
• une personne connaît d’autres personnes ;
• une page Web a un titre ;
• une page Web a un créateur ;
• …
Dans le monde RDF, ces caractéristiques sont des propriétés.
connaît
Personne
« une chaîne de caractères »
« une chaîne de caractères »
Page Web
En RDF, un prédicat est une propriété définie dans un vocabulaire.
27
Pour aller plus loin dans la définition des propriétés
Les propriétés définissent les relations possibles entre les classes ou entre une classe et un
type de données. Un propriété définit dans une ontologie est utilisé comme prédicat dans les
triplets RDF.
Deux types de propriétés
Propriété d’objet
(ObjectProperty)
Classe A
Classe B
Propriété de type de données
(DataTypeProperty)
Classe A
rdfs:Literal
Définir une propriété
Propriété B
<owl:ObjectProperty rdf:ID="related">
Domaine,
<rdfs:label
xml:lang="fr">Terme
associé</rdfs:label>
c’est-à-dire la classe en sujet
Nom humainement lisible
de la propriété
<rdfs:label
xml:lang="en">related</rdfs:label>
<rdfs:comment xml:lang="fr">Ma jolie description</rdfs:comment>
<rdfs:domain rdf:resource="#Concept"/>
Propriété A
<rdfs:range rdf:resource="#Concept"/>
Co-domaine ou range,
<rdfs:subPropertyOf
Commentaire
ou définition rdf:resource="#semanticRelation">
c’est-à-dire la classe ou
de la propriété
</owl:ObjectProperty>
le type de donnée en objet
28
Définir une logique pour déduire
Dans notre monde, chaque caractéristique et chaque type
possèdent une logique interne.
Exemple :
• Si un homme A est le frère d’un homme B, alors l’homme
B est le frère de la personne A ;
• …
Dans le monde RDF, cette logique est exprimée clairement dans le vocabulaire.
Homme A
Est frère de
Homme B
« Est frère de » est une propriété symétrique
Homme B
Est frère de
Homme A
En RDF, la logique permet de faire des inférences, c’est-à-dire de créer des
nouvelles informations. »
29
Pour aller plus dans la définition de la logique
Différents types de propriétés d’objet
Propriété transitive
Soit A relié à B par une propriété transitive, B relié à
C par la même propriété transitive, alors A relié à C
par la même propriété transitive.
Propriété symétrique
Soit A relié à B par une propriété symétrique, alors B
relié à A par la même propriété symétrique.
Propriété fonctionnelle
Soit A une propriété transitive, B ne peut être relié
par A que par un seul objet.
Les propriétés sur les propriétés
Equivalence entre
les propriétés
Soit une propriété A équivalent à une propriété B et
C relié à D par la propriété A, alors C relié à D par la
propriété B.
Inverse
Soit une propriété A inverse à une propriété B et C
relié à D par la propriété A, alors D relié à C par la
propriété B.
30
OWL : les instances/individus
Les instances d’une ontologie sont toutes les ressources dont le type appartient au
moins une des classes de l’ontologie.
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<rdf:Description rdf:about="ark:/12148/cb150598844">
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdf:Description>
<!-- OU -->
<skos:Concept rdf:about="ark:/12148/cb150598844">
</skos:Concept>
</rdf:RDF>
Equivalence entre
les individus
Soit A appartient à une classe B, A est la même chose que B, alors C
est la même chose que A et C appartient à la classe B
31
Résumé : OWL en une slide
Source : Fabien Gandon, http://2.bp.blogspot.com/_z1PUcRnw2jc/Sh2sYi0IaqI/AAAAAAAAAIU/QiR1ESMN3gQ/s1600-h/OWL+in+one.jpg
32
Merci pour votre attention
Gautier Poupeau
Antidot | GSM: +33 (0)6 45 49 59 77
F-75 Paris | mailto: [email protected]
Blog : Les petites cases | Twitter : @lespetitescases