【发布时间】:2014-10-11 23:13:33
【问题描述】:
基于来自 DBPedia 的初始 URI(例如:dbpedia.org/resource/Barack_Obama),我需要按照以下步骤执行深度搜索:
1 - 从 DBPedia 取消引用 RDF 链接[OK]
2 - 取所有断言此模式的三元组[OK]
<givenURI> <property> <someObject> .
3 - 将结果插入初始图表 [?]
4 - 要浏览新数据,我需要找到满足这两种模式的新三元组[?]:
<URI> owl:sameAs <resourceObject> .
<subjectResource> owl:sameAs <URI> .
5 - 回到第一步,递归执行,保存访问过的 URI 以避免无限循环。
所以,有 第 2 步的结果集。此时,所有的属性/对象都来自初始 URI (dbpedia.org/resource/Barack_Obama)。
select ?property ?resource where {
<http://dbpedia.org/resource/Barack_Obama> ?property ?resource
}
property,resource
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://xmlns.com/foaf/0.1/Person
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://schema.org/Person
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://dbpedia.org/class/yago/UnitedStatesSenatorsFromIllinois
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://wikidata.dbpedia.org/resource/Q215627
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://www.w3.org/2002/07/owl#Thing
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,http://wikidata.dbpedia.org/resource/Q5
...
我真的很困惑如何将这个查询中的结果集插入到初始图中,而不是再次对其进行深度搜索..
Java 上有实际代码,使用 Jena 和 Sparql:
public class SemanticCrawlerImpl implements SemanticCrawler {
public void search(Model graph, String resourceURI) {
graph.read(resourceURI);
ParameterizedSparqlString queryString = new ParameterizedSparqlString( "" +
"select ?property ?resource where {\n" +
" <"+resourceURI+"> ?property ?resource\n" +
"}" );
System.out.println( queryString );
QueryExecution exec = QueryExecutionFactory.sparqlService( "http://dbpedia.org/sparql", queryString.asQuery() );
com.hp.hpl.jena.query.ResultSet results = ResultSetFactory.copyResults( exec.execSelect() );
ResultSetFormatter.outputAsCSV( results );
}
}
原来如此。任何帮助将不胜感激!
【问题讨论】:
-
您不插入结果集,而是插入三元组。第一部分类似于
insert { graph <graph> { <givenURI> ?p ?o } } where { service <http:/dbpedia.org/sparql> { <givenURI> ?p ?o } }。 -
如果我理解正确的话,这里实际上不需要任何重复。你只想要所有以
<givenURI>为主题的三元组,或者任何与 owl:sameAs 相同的东西,对吧?这并不难(写一个答案......)。
标签: java sparql jena endpoint dbpedia