Cómo producir un triple con diferentes vocabularios en OWLAPI
Intenté crear distintos axiomas individuales utilizando OWLAPI 5 en Java. Lo que quiero es un triple simple utilizando el vocabulario owl:differentFrom, como este:
test:A owl:differentFrom test:B
Pero lo que obtengo es un triple utilizando owl:AllDifferent:
_:genid234 rdf:type owl:AllDifferent
_:genid234 owl:distinctMembers _:genid236
_:genid236 rdf:rest _:genid235
_:genid236 rdf:rest rdf:nil
_:genid235 rdf:first test:A
_:genid235 rdf:type rdf:List
_:genid236 rdf:first test:B
_:genid236 rdf:type rdf:List
Y el código simple es:
OWLNamedIndividual op1 = factory.getOWLNamedIndividual(baseIRI + A);
OWLNamedIndividual op2 = factory.getOWLNamedIndividual(baseIRI + B);
ont.add(factory.getOWLDifferentIndividualsAxiom(op1, op2));
Y ya lo intenté con Protege 5.5.0, produce exactamente el mismo triple que OWLAPI.
davy.ai
El código parece ser correcto y utiliza correctamente la OWLAPI. La diferencia entre el triple esperado y el triple actual se debe al uso de diferentes clases OWL.
El triple esperado utilizando
owl:differentFrom
resulta en un simple triple afirmando queA
es diferente deB
. Esto puede ser representado utilizando elOWLDifferentIndividualsAxiom
.Sin embargo, al utilizar
OWLDifferentIndividualsAxiom
, el triple actual producido utiliza la clase OWLowl:AllDifferent
en lugar deowl:differentFrom
. Esto se debe a que la implementación deOWLDifferentIndividualsAxiom
en OWLAPI utilizaowl:AllDifferent
para representar el concepto de individuos diferentes.Por lo tanto, el triple actual producido sigue siendo correcto y transmite el mismo significado que el triple esperado. La diferencia radica en las clases OWL utilizadas para representar el concepto.