有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xml Java Jena API获取另一个类的属性

我正在使用java和Jena API。我有一个类婚姻,它有三个对象属性,分别是“hasHusband”、“HasLauter”和“dateOfMarriage”。前两个与类Person关联,该类Person具有诸如名字、姓氏、出生日期等数据类型属性

我想找回妻子和丈夫的名字。你能解释一下我该怎么做吗

以下是我的rdf文件的相关部分:

(...)

<j.0:FAMmariage rdf:about=http://www.fam.com/FAM#BrunoCatherine> 

 <j.0:FAMaDateMariage>25/07/2011</j.0:FAMaDateMariage>

 <j.0:FAMhasWife>
    <rdf:Description rdf:about="http://www.fam.com/FAM#Catherine20/03/1982">
    <j.0:FAMDateOfBirth>20/03/1980</j.0:FAMDateOfBirth>
    <j.0:FAMHasName>Gomez</j.0:FAMHasName>
    <j.0:FAMHasFirstName>Catherine</j.0:FAMHasFirstName>
  </rdf:Description>
 </j.0:FAMHasWife>

 <j.0:FAMHusband>
  <rdf:Description rdf:about="http://www.fam.com/FAM# Bruno15/06/1980 ">
    <j.0:FAMaDateOfBirth>15/06/1980 </j.0:FAMDateOfBirth>
    <j.0:FAMHasName>Jeandet </j.0:FAMHasName>
    <j.0:FAMHasFirstName>Bruno</j.0:FAMHasFirstName>
  </rdf:Description>
 </j.0:FAMHusband>

</j.0:FAMmariage>
(...)

谢谢

已编辑 通过下面的代码,我可以获得hasWife对象属性。我应该添加什么来获取firstName datatypeproperty

//Object Property hasWife

     StmtIterator iter = onto.model.listStatements(null,onto.hasWife,(RDFNode)null);  

     while (iter.hasNext()) 
     {
        Statement stmt = iter.nextStatement();  
        System.out.println(stmt.getObject().toString());                          
     }

共 (1) 个答案

  1. # 1 楼答案

    这就是SPARQL的用途。看看Jena's SPARQL Tutorial

    作为替代方案,您可以通过编程搜索模型,如Querying a Model中所述。例如,通过使用listStatements(Subject, Predicate, Object),您可以决定哪些参数应该是null

    在本例中,您可以使用listStatements(null, hasWifeProperty, null)listStatements(null, hasHusbandProperty, null)并访问结果的相应对象