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.

Agregar Axiomas del Editor de Expresiones utilizando OWLAPI.

Tengo una API que recibe un documento JSON con clases, propiedades y axiomas de una ontología. El archivo se ve así:

{
“id”: “https://onto4alleditor.com/pt/idDoProjeto”,
“filetype”: “OWL”,
“classes”: [{
“Name”: “Homem”,
“SubClassOf”: [“Pessoa”],
“DisjointWith”: [“Mulher”],
“Annotation”: [{“Annotation”: “Homo sapiens del sexo masculino.”, “Language”: “pt”},
{“Annotation”: “Hombre homo sapiens.”, “Language”: “en”}]
},
{
“Name”: “Mulher”,
“Constraint”: [“Mulher Equivalente a: (NO Homem)”],
“SubClassOf”: [“Pessoa”]
}
]
}

La variable “Constraint” es una expresión obtenida del Editor de Expresiones de Protegé. Estoy intentando agregar esta expresión a mi objeto OWLOntology, pero estoy recibiendo el siguiente error:

Encontrado Mulher en la línea 1 columna 1. Se esperaba uno de:
Nombre de clase
Nombre de propiedad de objeto
Nombre de propiedad de datos
inv
Funcional
inversa
InversoFuncional
(
Asimétrico
Transitive
Irreflexivo
{
Simétrico
Reflexivo

“Mulher” es una clase de mi ontología, por lo que el error no tiene sentido. No estoy seguro de por qué está sucediendo esto, ya que creo que mi código está inicializando el analizador correctamente (estoy usando el analizador Manchester para hacer el trabajo). Aquí está mi código:

private void loadClassConstraints(JSONArray constraints){
ManchesterOWLSyntaxParser parser = OWLManager.createManchesterParser();
parser.setDefaultOntology(this.ont);
for (int i = 0; i < constraints.length(); i++) {
parser.setStringToParse(constraints.getString(i));
this.ont.add(parser.parseAxiom());
}
}

¿Qué está sucediendo mal? No pude encontrar suficiente documentación en internet que se aplique a mi problema. Gracias de antemano por cualquier ayuda.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el formato de la expresión en el campo de Restricción. La expresión “Mulher EquivalentTo: (NOT Homem)” no es una expresión válida en sintaxis de Manchester. La sintaxis de Manchester utiliza un formato específico para definir expresiones de clase. Para definir una equivalencia entre dos clases, se debe usar la declaración “EquivalentClasses(:NombreClase :NombreClaseEquivalente)”. Para crear una negación, se debe usar la palabra clave “not”.

    Entonces, la forma correcta de expresar la regla sería:

    "Restricción": [
       "EquivalentClasses(Mulher ObjectIntersectionOf(Pessoa ObjectComplementOf(Homem)))"
    ],
    

    Esta expresión define una equivalencia entre la clase “Mulher” y la intersección de la clase “Pessoa” y el complemento de la clase “Homem” (es decir, todos los individuos que no son instancias de la clase “Homem”).

    Una vez que arregles el formato, el analizador de Manchester debería poder analizar la expresión y agregarla a tu ontología OWL.

    ¡Espero que esto ayude!

Comments are closed.