es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizar únicamente restricciones en OWL conduce a inconsistencia.

Estoy intentando modelar la siguiente situación:

  • Un grado puede ser Bachelor o Master.
  • Un estudiante puede ser BachelorStudent o MasterStudent.
  • Un grado puede tener estudiantes: los grados de Bachelor solo tienen BachelorStudents y viceversa.

Quiero experimentar con el uso de la restricción “only”, por lo tanto, he definido Bachelor, por ejemplo, como equivalente a “tiene solo BachelorStudent”. Por lo tanto, generé el siguiente código utilizando Protegé:

:has rdf:type owl:ObjectProperty ;
    rdfs:domain :Degree ;
    rdfs:range :Student .

:Bachelor rdf:type owl:Class ;
    owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :has ;
                          owl:allValuesFrom :BachelorStudent
                        ] ;
    rdfs:subClassOf :Degree ;
    owl:disjointWith :Master .

:BachelorStudent rdf:type owl:Class ;
    rdfs:subClassOf :Student ;
    owl:disjointWith :MasterStudent .

:Degree rdf:type owl:Class ;
    owl:disjointWith :Student ;
    owl:disjointUnionOf ( :Bachelor
                          :Master
                        ) .

:Master rdf:type owl:Class ;
    owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :has ;
                          owl:allValuesFrom :MasterStudent
                        ] ;
    rdfs:subClassOf :Degree .

:MasterStudent rdf:type owl:Class ;
    rdfs:subClassOf :Student .

:Student rdf:type owl:Class ;
    owl:disjointUnionOf ( :BachelorStudent
                          :MasterStudent
                        ) .

Sin embargo, esto lleva a una inconsistencia cuando lanzo el razonador. La explicación proporcionada es la siguiente:
Explicación para la inconsistencia

No puedo entender qué estoy haciendo mal. ¿Estoy entendiendo mal el uso de “only” o hay otros errores?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el reasoner está señalando una contradicción en la ontología. El problema radica en la definición de la clase Bachelor.

    Has definido Bachelor como la clase que solo tiene estudiantes de Bachelor, pero también has declarado que los estudiantes de Bachelor son una subclase de Student. Esto significa que cualquier individuo que pertenezca a la clase Bachelor también debe pertenecer a la clase Student.

    Sin embargo, la restricción que has definido para la propiedad has establece que solo puede tener estudiantes de Bachelor como valores. Esto crea una contradicción: un individuo que pertenece a la clase Bachelor debe pertenecer a la clase Student, pero también no debe pertenecer a la subclase MasterStudent.

    Para resolver este problema, puedes considerar redefinir las clases y la propiedad has para evitar esta contradicción. Por ejemplo, podrías definir dos propiedades separadas (por ejemplo, hasBachelor y hasMaster) con sus respectivas restricciones, o considerar utilizar un enfoque diferente por completo.

Comments are closed.