使用 Apache Jena 为个人访问对象 属性

Accessing Object Property for Individual using Apache Jena

我使用 Protégé 创建了一个 OWL ontology,描述了一个患者数据库系统。我现在正尝试使用 Apache Jena 开发一个 Java 代码来读取我创建的 OWL 文件,然后对其执行一些操作。我的主要目标是让我的代码能够按姓名(例如患者姓名)找到特定的个体,然后访问该个体的特定对象 属性,并输出其值。例如,患者“John”有一个对象 属性“Treated_By”,它对应于另一个个体“Amy”(Amy 是医生类型的个体)。但是,我一直无法弄清楚使用哪种 Jena 方法从某个人那里检索对象 属性 值。

这是我的代码(请忽略评论,它们是之前尝试此任务的片段):

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("Enter Patient Name: ");
    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("Conditional Code Accessed.");
            OntClass Class = i.getOntClass();
            System.out.println("Patient Disease is: " + Class.listDeclaredProperties());
        }
        System.out.println("Failed.");
    }
}



}

试试这个(相应地替换 属性 URI):

final Property p = model.createObjectProperty("http://example.org/Treated_by");
final RDFNode object = i.getPropertyValue(p);