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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top