2

在通过其Sparql 端点查询dbpedia后,我将结果作为对象。那么我怎样才能得到这个资源的详细信息呢?例如,如果这个资源是一个人;我怎样才能得到他/她?Jena ResourceImplbirthDate

我试过这个;但它总是返回 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
4

2 回答 2

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 来获取所需的信息。

于 2013-04-09T17:50:51.587 回答
1

假设您的 SPARQL 查询是 a SELECT ..., theResultSet是一个表,并且每个QuerySolution都是该表中的一行。当你getResource这样的一行中,你只有一个Resource; 属性不会自动附加。Resource因此,在return上获得一个属性值null

看起来RDFOutput符合您的预期:将 SPARQL 查询ResultSet转换为 RDF Model

于 2013-04-06T16:39:53.217 回答