DAML+OIL
• Darpa Agent Markup Language
• Ontology Inference Layer
• Working Group du W3C
• Working Draft Décembre 2001– http://www.w3.org/TR/daml+oil-reference
• Logique de description avec syntaxe RDF(S)
Logique de description
• Modèle objet pour la classification de concepts et l’instanciation d’objet
• concept : ensemble d’individus• rôle : relation binaire entre individus• concept et rôle : niveau terminologique
(Tbox)• individus : assertion (Abox)
Logique de description (2)
• Relation de subsomption : organiser les concepts par niveau de généralité :
• un concept A subsume B si l’ensemble des individus représentés par B est inclus dans l’ensemble des individus de A : A est plus général que B
• classification : déterminer la position d ’un concept dans une hiérarchie de subsomption
Logique de description (3)
• Concepts primitifs vs définis
• Les concepts sont définis par des expressions mettant en jeu des concepts et des rôles– condition nécessaire et suffisante
• Il suffit d’être compatible avec la définition pour appartenir au concept : celui qui joue avec les Rolling Stones est un Rolling Stone
Exemple
Personne TopEnsemble TopHomme PersonneFemme (and Personne (not Homme))
membre rolechef membre
Exemple (2)
Equipe : (and Ensemble
(all membre Personne)
(atleast 2 membre))
petiteEquipe : (and Equipe
(atmost 5 membre))
Exemple (3)
D :
(and Personne
(some enfant)
(all (restrict enfant Pauvre) Musicien)))
Concept de personne qui a des enfants, dont les enfants pauvres sont musiciens
DAML OIL
Logique de description
syntaxe XML extension de RDF
utilise les types de XML Schema
Classes
<daml:Class rdf:ID="Male"> <rdfs:subClassOf rdf:resource="#Animal"/></daml:Class>
<daml:Class rdf:ID="Female"> <rdfs:subClassOf rdf:resource="#Animal"/> <daml:disjointWith rdf:resource="#Male"/></daml:Class>
<daml:Class rdf:ID="Woman"> <rdfs:subClassOf rdf:resource="#Person"/> <rdfs:subClassOf rdf:resource="#Female"/></daml:Class>
Propriété de range objet
<daml:ObjectProperty rdf:ID="hasParent">
<rdfs:domain rdf:resource="#Animal"/> <rdfs:range rdf:resource="#Animal"/>
</daml:ObjectProperty>
<daml:ObjectProperty rdf:ID="hasFather"> <rdfs:subPropertyOf
rdf:resource="#hasParent"/> <rdfs:range rdf:resource="#Male"/></daml:ObjectProperty>
Propriété de range littéral
<daml:DatatypeProperty rdf:ID="age">
<rdf:type rdf:resource="&daml;#UniqueProperty"/>
<rdfs:range rdf:resource= "&xmlschema;#nonNegativeInteger"/></daml:DatatypeProperty>
Sous-classe
<daml:Class rdf:ID="Person">
<rdfs:subClassOf rdf:resource="#Animal"/>
<rdfs:subClassOf>
<daml:Restriction> <daml:onProperty
rdf:resource="#hasParent"/> <daml:toClass rdf:resource="#Person"/> </daml:Restriction> </rdfs:subClassOf>
Person : (and Animal (all (restrict hasParent Person))
Sous-classe (2)
<rdfs:subClassOf> <daml:Restriction daml:cardinality="1"> <daml:onProperty
rdf:resource="#hasFather"/></daml:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf> <daml:Restriction> <daml:onProperty rdf:resource="#shoesize"/> <daml:minCardinality>1</daml:minCardinality> </daml:Restriction>
</rdfs:subClassOf>
(atmost 1 father) (atleast 1 shoesize))
Sous-classe (3)
<daml:Class rdf:about="#Person">
<rdfs:subClassOf> <daml:Restriction daml:maxCardinalityQ="1"> <daml:onProperty
rdf:resource="#hasOccupation"/> <daml:hasClassQ
rdf:resource="#FullTimeOccupation"/> </daml:Restriction> </rdfs:subClassOf></daml:Class>
Propriété
<daml:UniqueProperty rdf:ID="hasMother">
<rdfs:subPropertyOf rdf:resource="#hasParent"/>
<rdfs:range rdf:resource="#Female"/></daml:UniqueProperty>
Cardinality=1
Transitivité, Inverse
<daml:ObjectProperty rdf:ID="hasChild">
<daml:inverseOf rdf:resource="#hasParent"/></daml:ObjectProperty>
<daml:TransitiveProperty rdf:ID="hasAncestor"/>
<daml:TransitiveProperty rdf:ID="descendant"/>
Classes complémentaires
<daml:Class rdf:ID="Car">
<rdfs:subClassOf> <daml:Class> <daml:complementOf
rdf:resource="#Person"/> </daml:Class> </rdfs:subClassOf> </daml:Class>
Classes disjointes
<daml:Class rdf:about="#Person"> <daml:disjointUnionOf
rdf:parseType="daml:collection"> <daml:Class rdf:about="#Man"/> <daml:Class rdf:about="#Woman"/> </daml:disjointUnionOf></daml:Class>
Classes équivalentes
<daml:Class rdf:ID="HumanBeing"> <daml:sameClassAs rdf:resource="#Person"/></daml:Class>
et aussi : samePropertyAs sameIndividualAs
Intersection de classes
<daml:Class rdf:ID="TallMan"> <daml:intersectionOf
rdf:parseType="daml:collection"> <daml:Class rdf:about="#TallThing"/> <daml:Class rdf:about="#Man"/> </daml:intersectionOf></daml:Class>
Man est l’intersection de Man et TallThing : le plus grand sous-type commun
Classes définie par énumeration des individus
<daml:Class rdf:ID="Height"> <daml:oneOf rdf:parseType="daml:collection"> <Height rdf:ID="short"/> <Height rdf:ID="medium"/> <Height rdf:ID="tall"/> </daml:oneOf></daml:Class>
Classes définie par la valeur d’une propriété
<daml:Class rdf:ID="TallThing"> <daml:sameClassAs> <daml:Restriction> <daml:onProperty rdf:resource="#hasHeight"/> <daml:hasValue rdf:resource="#tall"/> </daml:Restriction> </daml:sameClassAs>
</daml:Class>
Instances
<continent rdf:ID="Asia"/>
<rdf:Description rdf:ID="Asia"> <rdf:type> <rdfs:Class rdf:about="#continent"/> </rdf:type></rdf:Description>
<rdf:Description rdf:ID="India"> <is_part_of rdf:resource="#Asia"/></rdf:Description>
Top Related