如何使用Jena获取Dbpedia资源详细信息?

时间:2013-03-30 21:26:41

标签: sparql semantic-web jena dbpedia arq

在我的 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

2 个答案:

答案 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