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



在我查询dbpedia对其Sparql端点后,我得到结果作为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

如果希望获得有关资源的更多详细信息,可能需要进行后续的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来获得您想要的信息。

假设您的SPARQL查询是一个SELECT ...,那么ResultSet是一个表,每个QuerySolution是该表中的一行。当你从这样的行Resourceget时,你只有Resource;属性不会自动附加。因此,获取Resource的属性值将返回null

RDFOutput看起来像您所期望的那样:将SPARQL查询ResultSet转换为RDF Model

相关内容

  • 没有找到相关文章

最新更新