En supposant que votre objectif est lorsque :isCounterPartOf
relie deux individus, et un est membre de par ex. :Bad
, puis l'autre doit être classé comme :Good
, vous n'avez pas besoin de définir le domaine et la plage de :isCounterPartOf
, juste que c'est owl:SymmetricProperty
. Vous avez seulement besoin de définir vos classes, :Bad
pour être équivalent à :isCounterPartOf some :Good
et :Good
pour être équivalent à :isCounterPartOf some :Bad
, et pour toutes les "paires" de classes respectivement.
Ensuite, si:
:A :isCounterPartOf :B
:C :isCounterPartOf :B
:A a :Slow
:C a :Bad
alors :B
seront classés comme :Fast
et :Good
.
Précision (basé sur les commentaires)
Dans l'exemple ci-dessus, 1. :isCouterPartOf
est une propriété d'objet symetric:
:isCounterPartOf rdf:type owl:ObjectProperty ,
owl:SymmetricProperty .
:Good
, :Bad
, :Slow
et :Fast
sont des classes OWL, pour lesquelles: (aucune idée pourquoi le formatage du code ne travail)
: Mauvais rdf: type owl: Classe; owl: equivalentClass [rdf: type hibou: Restriction; owl: onPropriété: isCounterPartOf; hibou: someValuesFrom: Good ].
: rapide rdf: type owl: Classe; owl: equivalentClass [rdf: type hibou: Restriction; hibou: onPropriété: isCounterPartOf; owl: someValuesFrom: Lent ].
: Bon rdf: tapez owl: Class; owl: equivalentClass [rdf: type hibou: Restriction; hibou: onPropriété: isCounterPartOf; owl: someValuesFrom: Bad ].
: lente rdf: hibou Type: classe; owl: equivalentClass [rdf: type hibou: Restriction; hibou: onPropriété: isCounterPartOf; owl: someValuesFrom: Rapide ].
:A
, :B
et :C
sont des particuliers, pour lesquels il est affirmé que: (encore une fois, aucune idée pourquoi la mise en forme de code ne fonctionne pas)
: A rdf: hibou Type: NamedIndividual , : Lent;
: isCounterPartOf: B.
: B rdf: type owl: NomméIndividuel, Chouette: Chose.
: C rdf: hibou Type: NamedIndividual, : Bad;
: isCounterPartOf: B.
Sur la base de ces affirmations, lorsque vous exécutez le raisonneur, vous aurez la situation suivante:
:A rdf:type owl:NamedIndividual ,
:Bad , #inferred
:Slow ;
:isCounterPartOf :B .
:B rdf:type owl:NamedIndividual ,
:Fast , #inferred
:Good , #inferred
owl:Thing ;
:isCounterPartOf :A , #inferred
:C . #inferred
:C rdf:type owl:NamedIndividual ,
:Bad ,
:Slow ; #inferred
:isCounterPartOf :B .
Désolé, je suis un débutant dans la syntaxe de hibou. Je ne comprends pas ce que signifie ': A a: Slow'. Est-ce la syntaxe de Manchester? Y a-t-il des références auxquelles je pourrais me référer? –
Il s'agit d'une notation Turtle, où 'a' signifie' rdf: type' et quand ':' est utilisé sans préfixe, c'est la façon habituelle de dire que la ressource est définie dans l'espace de noms de l'ontologie courante. Ainsi, dans le contexte fourni par votre question, ': A a: Slow' voulait dire" L'individu A, défini dans cette base de connaissances, est un membre de la classe Slow, défini dans cette base de connaissances ". Merci pour votre commentaire, je vais mettre à jour la réponse pour clarifier cela. –
Merci beaucoup. Je suis impatient de voir votre mise à jour. Je ne pense pas avoir vraiment compris votre réponse. B est-il un individu ou une classe? –