从Jena ResultSet获取RDFNode

从Jena ResultSet获取RDFNode,rdf,sparql,jena,Rdf,Sparql,Jena,如何从QueryExecution生成的结果集中检索Jena RDFNode?运行查询后,我能够看到正确的结果集,但结果仅提供节点的URI,有人能告诉我需要做什么才能获取RDF节点的详细信息吗。这将使我能够提取每个属性,以后可以对其进行操作。我看到的解决方法是使用一个查询来显示实例的属性,而不是实例本身 当前结果: http://assignment3.stdi.msmsuhail.ead/bpl.owl#Arsenal 预期结果: 霍洛韦 酋长球场 兵工厂 60355 SPARQL查询:

如何从QueryExecution生成的结果集中检索Jena RDFNode?运行查询后,我能够看到正确的结果集,但结果仅提供节点的URI,有人能告诉我需要做什么才能获取RDF节点的详细信息吗。这将使我能够提取每个属性,以后可以对其进行操作。我看到的解决方法是使用一个查询来显示实例的属性,而不是实例本身

当前结果:

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”

您是在运行本地查询还是远程查询?如果您正在运行远程查询,那么您将需要检索您感兴趣的所有三元组(并且您可能对构造查询比对选择查询更感兴趣)。如果您正在运行一个本地查询,这样您的模型就包含了手头的所有数据,那么一旦您确定了所需的一个或多个资源,您就可以使用该模型来检索您感兴趣的属性。