我正在使用java和Jena API。我有一个Marriage,它有3个对象属性叫做“hasHusband”,“Haswife”和“dateOfMarriage”。前两个与一个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>
(...)
由于
EDITED 通过下面的代码,我可以获得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());
}
答案 0 :(得分:2)
这是SPARQL的用途。看看Jena's SPARQL Tutorial。
作为替代方案,您可以以编程方式搜索模型,Querying a Model中对此进行了描述。例如,使用listStatements(Subject, Predicate, Object)
您可以决定哪些参数应为null
。
在您的情况下,您可以使用listStatements(null, hasWifeProperty, null)
和listStatements(null, hasHusbandProperty, null)
并访问结果的相应对象。