在我的 Sparql端点上查询 dbpedia 后,我得到Jena ResourceImpl
个对象的结果。那我怎么能得到这个资源的细节?例如,如果此资源是一个人;我怎样才能得到他/她birthDate
?
我试过这个;但它总是返回null。
QuerySolution querySolution = resultSet.next();
RDFNode x = querySolution.get("x");
ResourceImpl resource = (ResourceImpl) x;
Property property = new PropertyImpl("http://dbpedia.org/property/birthDate");
Resource propertyResourceValue = resource.getPropertyResourceValue(property); // NULL
答案 0 :(得分:2)
如果您想获得有关该资源的更多详细信息,您可能需要进行后续的SPARQL查询。如,
String nextQuery = "DESCRIBE " + FmtUtils.stringForNode(resource.asNode(), (SerializationContext)null);
Query describeQuery = QueryFactory.create(nextQuery);
QueryExecution exec = QueryExecutionFactory.sparqlService("http://endpoint", describeQuery);
Model m = exec.execDescribe();
然后,您应该能够在生成的模型上使用资源API来获取所需的信息。
答案 1 :(得分:1)
假设您的SPARQL查询是SELECT ...
,ResultSet
是一个表,每个QuerySolution
是该表中的一行。当您get
来自Resource
这一行时,您只有一个Resource
;属性不会自动附加。因此,获取Resource
上的属性值会返回null
。
看起来RDFOutput符合您的预期:将SPARQL查询ResultSet
转换为RDF Model
。