8 Cours OWL Protege 4P
8 Cours OWL Protege 4P
8 Cours OWL Protege 4P
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 1 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 2
Protégé
§ Protégé est un système permettant la création d'ontologies très
populaire développé à l’Université de Stanford
§ Protégé est développé en Java.
§ Protégé fonctionnant sur la machine virtuelle Java, est multi-
platefor,mes (linux, Windows, MacOS, …)
§ Protégé est gratuit et son code source est publié sous une licence
libre (Mozilla Public License).
1. Protégé § Protégé peut lire et sauvegarder des ontologies dans la plupart des
formats d'ontologies : RDF, RDFS, OWL, Turtle, JSON-LD, ….
§ Dernière version : 5.5.0 (14 mars 2019)
§ Lien de téléchargement : https://protege.stanford.edu/
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 3 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 4
L’Ontologie « African Wildelife Ontology »
Source : Antoniou, G, van Harmelen, F. A Semantic Web Primer. MIT Press, 2003.
Objet :
§ Cette ontologie décrit la vie sauvage en Afrique avec
§ des animaux: carnivores (des lions) et herbivores (des girafes)
§ des plantes telles que des arbres composés de branches et de feuilles
§ ...
§ On s’intéresse ici à un sous-ensemble de cette ontologie, centré sur les
classes et sous-classes représentées par les sous-graphes suivants (class
hierarchy) :
2. L’Ontologie “African Wildlife »
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 5 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 6
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 7 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 8
Déclarations de classes en OWL2 1/ Par identifiant de classe (URI) en RDF/XML
<owl:Class rdf:ID="Animal"/>
OWL distingue 6 types de descriptions d’une classe : <owl:Class rdf:ID="Herbivore">
<rdfs:subClassOf rdf:resource="#Animal"/>
1. Identifiant de classe (URI) </owl:Class>
<owl:Class rdf:ID="Carnivore">
2. Enumération exhaustive de ses individus qui forment <rdfs:subClassOf rdf:resource="#Animal"/>
ses instances possibles </owl:Class>
...
3. Intersection entre une ou plusieurs descriptions de <owl:Class rdf:ID="Plant"/>
classes <owl:Class rdf:ID="Tree">
<rdfs:subClassOf rdf:resource="#Plant"/>
4. Union entre une ou plusieurs descriptions de classes </owl:Class>
<owl:Class rdf:ID="Branch"/>
5. Complément d’une description de classe <owl:Class rdf:ID="Leaf"/>
6. Restriction de propriétés
Rdfs :subClassOf = axiome de classe
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 9 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 10
Giraffe Lion
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 11 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 12
2/ Par énumération exhaustive de ses individus 2/ Par énumération exhaustive d’individus : oneOf
§ Les instances § Syntaxe RDF/XML :
<rdf:Description rdf:about="Ernestine_la_girafe"> <owl:Class rdf:about="Les_girafes_copines">
<owl:equivalentClass>
<rdf:type rdf:resource="#Giraffe"/>
<owl:Class>
</rdf:Description> <owl:oneOf rdf:parseType="Collection">
<rdf:Description rdf:about="Leon_le_lion"> <giraffe rdf:about="Ernestine_la_girafe"/>
<rdf:type rdf:resource="#Lion“/> <giraffe rdf:about="Noemie"/>
</rdf:Description> <giraffe rdf:about="Gertrude"/>
</owl:oneOf>
§ Plus simplement : </owl:Class>
<Giraffe rdf:about="Ernestine_la_girafe"/> <Lion </owl:equivalentClass> </owl:Class>
rdf:about="Leon_le_lion"/> <owl:equivalentClass> = axiome de classe
§ Turtle Syntax : § Syntaxe Turtle :
:Ernestine_la_girafe rdf:type :Giraffe . :Leon_le_lion : Les_girafes_copines owl:equivalentClass [
rdf:type :Lion . rdf:type owl:Class ;
owl:oneOf ( :Ernestine_la_girafe :Noemie :Gertrude )
].
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 13 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 14
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 15 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 16
Identité des instances 3/ Par intersection de classes : intersectionOf
§ Syntaxe RDF/XML :
<owl:Class rdf:about="Omnivore"> <owl:equivalentClass>
§ Syntaxe Turtle : <owl:Class>
:Ernestine_la_girafe rdf:type :Giraffe . <owl:intersectionOf rdf:parseType="Collection">
:Noemie rdf:type :Giraffe . <owl:Class rdf:about="#Herbivore"/>
:Gertrude rdf:type :Giraffe . <owl:Class rdf:about="#Carnivore"/>
</owl:intersectionOf>
:Ernestine rdf:type :Giraffe . </owl:Class>
:Ernestine owl:sameAs :Ernestine_la_girafe </owl:equivalentClass>
:Ernestine owl:differentFrom :Noemie . </owl:Class>
§ Syntaxe Turtle :
:Omnivore owl:equivalentClass [
[] rdf:type owl:AllDifferent ;
rdf:type owl:Class ;
owl:distinctMembers owl:intersectionOf ( :Herbivore :Carnivore )
( :Ernestine_la_girafe :Noemie :Gertrude ) . ].
§ Interprétation logique
∀x Herbivore(x) ∧ Carnivore(x) → Omnivore(x)
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 17 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 18
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 19 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 20
Axiome de classe disjointWith Axiome de classe AlldisjointWith
<owl:AllDisjointClasses>
§ Les herbivores sont disjoints des carnivores <owl:members rdf:parseType="Collection">
<owl:Class rdf:about="Animal"/>
<owl:Class rdf:ID="Herbivore"> <owl:Class rdf:about="Plant"/>
<owl:Class rdf:about="Branch"/>
<rdfs:subClassOf rdf:ressource="#Animal"/> <owl:Class rdf:about="Leaf"/>
</owl:members>
<owl:disjointWith rdf:ressource="#Carnivore"/> </owl:AllDisjointClasses>
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 21 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 22
6/ Par restriction de propriétés : objectproperty Les propriétés objets dans OWL: objectProperty
§ Définissons d’abord les propriétes, objectproperty, on s’intéressera § Syntaxe RDF/XML :
ensuite à leur restrictions <owl:ObjectProperty rdf:about="eats">
<rdfs:domain rdf:resource="#Animal"/>
§ Dans « African Wildlife Ontology » : <rdfs:range rdf:resource="Thing"/>
§ les animaux carnivores mangent des animaux </owl:ObjectProperty>
§ les animaux herbivores mangent des plantes ou des “bouts” de plantes <owl:ObjectProperty rdf:about="eaten-by">
<rdfs:range rdf:resource="#Animal"/>
<rdfs:domain rdf:resource="Thing"/>
§ Object property (entre 2 classes) : <owl:inverseOf rdf:resource="#eats"/>
§ Object property eats </owl:ObjectProperty>
§ Syntaxe Turtle :
• Domain:Animal :eats
• Range:Thing rdf:type owl:ObjectProperty ;
§ Propriété inverse : rdfs:domain :Animal .
:eaten-by
§ Object property eats-by rdf:type owl:ObjectProperty ;
• Domain: Thing rdfs:range :Animal ;
owl:inverseOf :eats .
• Range: Animal
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 23 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 24
Dans Protégé Les propriétés objets Propriété OWL is-part-of
§ Dans « African Wildlife Ontology » :
§ les animaux carnivores mangent des animaux
§ les animaux herbivores mangent des plantes ou des “bouts” de plantes
§ Object property (entre 2 classes) :
§ Object property is-part-of
• Domain:Thing
• Range:Thing
Is-part-of = propriété transitive
§ Syntaxe RDF/XML :
<owl:ObjectProperty rdf:about="is_part_of"/>
<owl:TransitiveProperty rdf:about="is_part_of "/>
§ Syntaxe Turtle :
:is_part_of rdf:type owl:ObjectProperty ;
rdf:type owl:TransitiveProperty .
41
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 25 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 26
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 2746 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 28
Dans Protégé Les propriétés OWL Les propriétés de données DatatypeProperty
§ Syntaxe RDF/XML :
<owl:DatatypeProperty rdf:about="hasAge">
<rdfs:range rdf:resource=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:about="hasAge"/>
§ Syntaxe Turtle :
:hasAge rdf:type owl:DatatypeProperty ;
rdf:type owl:FunctionalProperty ;
rdfs:range xsd:NonNegativeInteger .
Propriété fonctionnelle : propriété qui a au plus une valeur pour chaque objet
Propriété fonctionnelle : propriété qui a au plus une valeur pour chaque objet 50
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 29 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 30
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 31 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 32
Autres spécificités de OWL-2
§ Les chaines de propriétés
§ Les clés
§ Définitions de types de données plus riches
owl:NegativePropertyAssertion
Exemple : Ernestine ne peut pas avoir 12 ans
§ Possibilité de définir des restrictions sur les cardinalités plus
avancées : 4. Restrictions sur les propriétés en
owl:maxQualifiedCardinality,
Protégé
owl:minQualifiedCardinality
Exemple : Léon a au moins 2 copines qui sont des copines
d’Ernestines
§ Amélioration des possibilités d’annotations
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 33 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 34
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 35 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 36
Restrictions sur les propriétés someValuesFrom Restrictions sur les propriétés
Dans Protégé
§ Syntaxe RDF/XML :
:Carnivore owl:subClassOf [
rdf:type owl:Restriction ;
owl:onProperty :eats ; owl:someValuesFrom :Animal
];
<rdfs:comment>
Carnivores are exactly those animals that eat also animals.
60
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 37 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 38
Restrictions sur les propriétés allValuesFrom Restrictions sur les propriétés allValuesFrom
§ Syntaxe RDF/XML :
§ Dans « African Wildlife Ontology » : <owl:Class rdf:about="#Herbivore">
<rdfs:subClassOf>
§ Les herbivores sont des animaux: subClassOf <owl:Restriction>
<owl:onProperty rdf:resource="eats"/>
§ Les herbivores sont des animaux qui ne mangent que : <owl:allValuesFrom rdf:resource="#Plant"/>
</owl:Restriction>
</rdfs:subClassOf>
• des plantes ou <rdfs:comment>
Herbivores are exactly those animals that eat
• des “bouts” de plantes only plants or parts of plants.
</rdfs:comment>
</owl:Class>
§ Comment définir les animaux herbivores?
§ Syntaxe Turtle :
ð Utilisation de la restriction allValuesFrom :Herbivore owl:subClassOf [
rdf:type owl:Restriction ;
owl:onProperty :eats ;
owl:allValuesFrom :Plant
];
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 39 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 40
Dans Protégé Ensembles de restrictions sur une classe
Restrictions sur les propriétés § Classe Herbivore :
<owl:Class rdf:about="#Herbivore">
<owl:subClassOf>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="eats"/>
<owl:allValuesFrom rdf:resource="#Plant"/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="eats"/>
<owl:allValuesFrom>
<owl:Restriction>
<owl:onProperty rdf:resource="is-part-of"/>
<owl:someValuesFrom rdf:resource="#Plant"/>
</owl:Restriction>
</owl:allValuesFrom>
</owl:Restriction>
?
</owl:unionOf>
</owl:Class>
</owl:subClassOf>
65
</owl:Class>
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 41 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 42
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 43 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 44
Restrictions
Dans Protégé sur les cardinalités Les instances dans Protégé
Les instances
§ Saisie des instances dans Protégé :
78
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 45 ! Tout animal doit avoir un âge
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE
79
46
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 47 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 48
Spécificités de OWL2: annotations
<owl:Class rdf:about="Man">
<rdfs:subClassOf rdf:resource="Person"/>
</owl:Class>
<owl:Axiom>
<owl:annotatedSource rdf:resource="Man"/>
<owl:annotatedProperty
rdf:resource="&rdfs;subClassOf"/>
<owl:annotatedTarget rdf:resource="Person"/>
<rdfs:comment>States that every man is a person.
</rdfs:comment>
</owl:Axiom>
5. Raisonnements sur les ontologies
§ Syntaxe Turtle :
:Man rdfs:subClassOf :Person .
[] rdf:type owl:Axiom ;
owl:annotatedSource :Man ;
owl:annotatedProperty rdfs:subClassOf ;
owl:annotatedTarget :Person ;
rdfs:comment "States that every man is a
person."^^xsd:string .
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 49 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 50
89
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 51 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 52
Raisonnements sur les ontologies Raisonner
Avec Protégé sur les ontologies
§ Supposons qu’Ernestine_la_girafe mange Leon_le_lion, on obtient...
91
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 53 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 54
93
94
Exemple de 2 justifications sur 4 trouvées par le raisonneur de Protégé 5.0
Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 55 Mise en œuvre de OWL avec Protégé - Bernard ESPINASSE 56