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 }
“””)))
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:
Esta consulta debería devolver el ancestro común más cercano de AP y TP, que es la clase
base
en tu ejemplo.