使用 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);
我使用 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);