从Jena ResultSet获取RDFNode
如何从QueryExecution生成的结果集中检索Jena RDFNode?运行查询后,我能够看到正确的结果集,但结果仅提供节点的URI,有人能告诉我需要做什么才能获取RDF节点的详细信息吗。这将使我能够提取每个属性,以后可以对其进行操作。我看到的解决方法是使用一个查询来显示实例的属性,而不是实例本身 当前结果:从Jena ResultSet获取RDFNode,rdf,sparql,jena,Rdf,Sparql,Jena,如何从QueryExecution生成的结果集中检索Jena RDFNode?运行查询后,我能够看到正确的结果集,但结果仅提供节点的URI,有人能告诉我需要做什么才能获取RDF节点的详细信息吗。这将使我能够提取每个属性,以后可以对其进行操作。我看到的解决方法是使用一个查询来显示实例的属性,而不是实例本身 当前结果: http://assignment3.stdi.msmsuhail.ead/bpl.owl#Arsenal 预期结果: 霍洛韦 酋长球场 兵工厂 60355 SPARQL查询:
http://assignment3.stdi.msmsuhail.ead/bpl.owl#Arsenal
预期结果:
霍洛韦
酋长球场
兵工厂
60355
SPARQL查询:
SELECT DISTINCT ?clubs ?clubName
WHERE {
?Club bpl:hasPlayer ?players.
?Club bpl:hasManager ?managers.
?players bpl:hasClub ?clubs .
?players bpl:hasAge ?playerAge.
?players bpl:hasName ?playerName.
?players bpl:hasNationality ?playerNationality.
?players bpl:hasPlayingPosition ?playerPosition.
?players bpl:isRetired ?playerIsRetired.
?clubs bpl:hasName ?clubName.
?clubs bpl:hasNumberSeats ?clubSeats.
?clubs bpl:hasStadiumName ?clubStadiumName .
?clubs bpl:hasStadiumLocation ?clubStadiumLocation.
?managers bpl:hasAge ?managerAge.
?managers bpl:hasName ?managerName.
?managers bpl:hasNationality ?managerNationality.
?managers bpl:isManager ?isManager.
}
ORDER BY ASC (?clubName)
Java代码:
while(resultSet!=null&&resultSet.hasNext()){
QuerySolution QuerySolution=resultSet.nextSolution();
System.out.println(querySolution.get(“俱乐部”).toString());
}
的Javadoc表示返回值是一个RDFNode,因此您已经得到的值是一个RDFNode。如果您正在运行本地查询(即,如果您有运行查询所针对的模型),则可以使用它获取属性值,例如
RDFNode clubNode=querySolution.get(“俱乐部”);
Resource club=clubNode.asResource().inModel(model);
语句stmt=club.getProperty(BPL.hastadiumlocation);
System.out.println(stmt.getObject());//打印“Holloway”
您是在运行本地查询还是远程查询?如果您正在运行远程查询,那么您将需要检索您感兴趣的所有三元组(并且您可能对构造查询比对选择查询更感兴趣)。如果您正在运行一个本地查询,这样您的模型就包含了手头的所有数据,那么一旦您确定了所需的一个或多个资源,您就可以使用该模型来检索您感兴趣的属性。