Accediendo a la propiedad del objeto para un individuo utilizando Apache Jena
He creado una ontología OWL utilizando Protégé, que describe un sistema de base de datos de pacientes. Ahora estoy intentando desarrollar un código en Java utilizando Apache Jena para leer el archivo OWL que he creado, y luego realizar una serie de operaciones sobre él. Mi objetivo principal es hacer que mi código sea capaz de encontrar un Individuo específico por su nombre (por ejemplo, el nombre de un paciente) y luego acceder a una Propiedad de Objeto específica para ese individuo, y mostrar su valor. Por ejemplo, un paciente “John” tiene una propiedad de objeto “Tratado_Por” que corresponde a otro individuo “Amy” (Amy es un individuo de tipo doctor). Sin embargo, no he podido descubrir qué método de Jena se utiliza para recuperar los valores de las propiedades de objeto de un individuo determinado.
Aquí está mi código (por favor, ignore los comentarios, son fragmentos de intentos anteriores para esta tarea):
public class Main {
public static void main(String[] args) {
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
String fileName = "C:/Users/Ahmed Medhat/Documents/assignment1ontv3.0.owl";
try {
InputStream inputStream = new FileInputStream(fileName);
model.read(inputStream, "RDF/XML");
//model.read(inputStream, "OWL/XML");
inputStream.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
Scanner sc = new Scanner(System.in);
System.out.println("Ingrese el nombre del paciente: ");
String patientName = sc.next();
ExtendedIterator<individual> itI = model.listIndividuals();
while (itI.hasNext()) {
Individual i = itI.next();
String localName = i.getLocalName();
//System.out.println(patientName);
//System.out.println(localName);
if(localName.equals(patientName))
{
//System.out.println("Se accedió al código condicional.");
OntClass Class = i.getOntClass();
System.out.println("La enfermedad del paciente es: " + Class.listDeclaredProperties());
}
System.out.println("Falló.");
}
}
}
davy.ai
Para obtener el valor de una propiedad de objeto de un individuo específico en Jena, puedes usar el siguiente código:
En este código, reemplaza “URI_del_paciente” y “URI_Tratado_Por” con los URIs de tu individuo de paciente y de la propiedad de objeto “Tratado_Por” respectivamente. Este código recupera el individuo que es el valor de la propiedad de objeto “Tratado_Por” en el individuo de paciente, y lo almacena en la variable “doctor”.
A continuación, puedes obtener el nombre del individuo doctor usando el siguiente código:
Este código obtiene el nombre local del individuo doctor y lo muestra en la consola.
Ten en cuenta que deberás modificar tu código existente para obtener el individuo mediante su URI en lugar de por su nombre, ya que los URIs suelen utilizarse para identificar de manera única a los individuos en ontologías OWL.