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.

SPARQL + owlready2: ancestro común más cercano de una clase

Mi objetivo final es obtener el ancestro común más cercano de una clase a partir de un archivo owl (por ejemplo, si elijo AP y TP, el resultado debería ser base).
base—–
=AP
|—-TP

Estoy intentando subclasificar una clase pero no obtengo resultados.

Para información, intenté esto y no funcionó para mí: https://stackoverflow.com/questions/23510851/how-to-get-least-common-subsumer-in-ontology-using-sparql-query/23517099#23517099

Necesito ayuda, por favor.

archivo python:

from owlready2 import *
onto = get_ontology(“file://ess.owl”).load()
owlready2.JAVA_EXE = “C:\Program Files (x86)\Java\jre1.8.0_311\bin”
print(list(default_world.sparql(“””
SELECT (?x AS ?nb)
{ ?x a owl:Class . }
“””)))
print(list(default_world.sparql(“””
SELECT ?y
{ “Star” rdfs:subClassOf ?y }
“””)))

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando encontrar el ancestro común más cercano de una clase de un archivo OWL. Puedes usar la consulta SPARQL proporcionada en el enlace que compartiste para obtener el ancestro común más cercano de dos clases.

    Por ejemplo, si quieres encontrar el ancestro común más cercano de las clases AP y TP, puedes usar la siguiente consulta:

    SELECT ?ancestor 
    WHERE { 
      { 
        SELECT ?ancestor 
        WHERE { 
          { ?ancestor rdfs:subClassOf* AP } 
          UNION 
          { ?ancestor rdfs:subClassOf* TP } 
        } 
      } 
      MINUS 
      { 
        SELECT ?ancestor 
        WHERE { 
          { ?ancestor rdfs:subClassOf* AP } 
          MINUS 
          { ?ancestor rdfs:subClassOf* TP } 
        } 
      } 
      MINUS 
      { 
        SELECT ?ancestor 
        WHERE { 
          { ?ancestor rdfs:subClassOf* TP } 
          MINUS 
          { ?ancestor rdfs:subClassOf* AP } 
        } 
      } 
    } 
    

    Esta consulta debería devolver el ancestro común más cercano de AP y TP, que es la clase base en tu ejemplo.

Comments are closed.