Le mélange equivalentClass et SubClass dans OWL
-
12-10-2019 - |
Question
Je suis curieux de savoir mélanger SubClassOf et equivalentClass dans une description de classe, et comment un raisonneur ADOPTERAIENT.
Plus précisément, si j'ai à la fois un equivalentClass et une affirmation de SubClassOf pour la même classe, faire à la fois le equivalentClass et les conditions de SubClassOf doivent être remplies pour qu'une personne à classer dans cette catégorie, ou seulement le equivalentClass?
Ou est-ce une mauvaise pratique?
Par exemple (déclarations omis):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)
Je veux faire en sorte que dans le cas ci-dessous, :x
est classé comme :Foo
, parce que les deux affirmations equivalentClass et SubClassOf sont satisfaites:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Mais :y
n'est pas, parce que le SubClassOf ne se satisfait pas:
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Merci,
Jonathan
La solution
Je ne comprends pas tout à fait votre question mais je vais essayer de clarifier certaines choses. tous les axiomes d'abord semblent hors de propos pour votre question (et le second est de toute façon redondante parce owl:Thing
est la gamme de biens):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
L'autre chose est que les axiomes de EquivalentClasses
-peuvent être considérés comme un sucre syntaxique pour axiomes de SubClassOf
, par exemple.
EquivalentClasses(C1 C2)
est logiquement équivalent à
SubClassOf(C1 C2)
SubClassOf(C2 C1)
Vous pouvez réécrire votre EquivalentClasses
comme:
SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
Cela peut simplifier la compréhension de ce que vos marques d'inférences ontologie.
Maintenant, si vous dites:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Je suppose que vous voulez dire:
ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)
Cela implique que :x
est à la fois :Foo
et :Sna
, ce qui est certainement possible, car :Foo
est une sous-classe de :Sna
.
Quand vous dites
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Je suppose que vous voulez dire:
ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Ceci est une contradiction logique car :y
est entraîné pour être un :Foo
(qui est une sous-classe de :Sna
), mais en même temps :y
est affirmé être dans une classe qui est disjointe de :Sna
.
Notez également que nous n'avons pas utilisé les connaissances que
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
qui découle de la EquivalentClasses
-axiome.