Mezcla equivalentClass y la subclase en OWL
-
12-10-2019 - |
Pregunta
Tengo curiosidad acerca de la mezcla subClassOf y equivalentClass en una descripción de clase, y cómo un razonador comportaría.
En concreto, si tengo tanto un equivalentClass y una afirmación subClassOf de la misma clase, tienen que ser satisfechas para que un individuo se clasifican en dicha clase, o sólo el equivalentClass?
O se trata de una mala práctica?
Por ejemplo (Declaraciones omitido):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)
Quiero asegurar que en el caso de abajo, :x
se clasifica como :Foo
, porque tanto los equivalentClass afirmaciones y subClassOf son satisfechas:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Pero :y
no lo es, porque el subClassOf no está satisfecho:
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Gracias,
Jonathan
Solución
No entiendo por completo su pregunta, pero voy a tratar de aclarar algunas cosas. En primer lugar, los siguientes axiomas parecen irrelevantes para su pregunta (y la segunda es redundante porque todos modos es owl:Thing
gama de cualquier propiedad):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
La otra cosa es que los EquivalentClasses
-axiomas pueden ser vistos como un azúcar sintáctica para SubClassOf
-axiomas, por ejemplo.
EquivalentClasses(C1 C2)
es lógicamente equivalente a
SubClassOf(C1 C2)
SubClassOf(C2 C1)
Así se puede reescribir su EquivalentClasses
como:
SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
Esto tal vez sería simplificar la comprensión de lo que sus vinculaciones marcas ontología.
Ahora, si usted dice:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Estoy asumiendo que usted quiere decir:
ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)
Esto implica que es a la vez :x
:Foo
y :Sna
, que es ciertamente posible porque :Foo
es una subclase de :Sna
.
Cuando dice
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Asumo que decir:
ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Esta es una inconsistencia lógica porque :y
se implicó a ser un :Foo
(que es una subclase de :Sna
), pero al mismo tiempo :y
se afirma que estar en una clase que es disjunta de :Sna
.
Tenga en cuenta también que no usamos el conocimiento de que
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
que siguió desde el EquivalentClasses
-axioma.