java – 查询DBpedia以获取Books的元数据
作者:互联网
我有一堆ISBN.我想查询DBpedia并获取书籍的元数据.
我无法理解SPARQL.
有人能告诉我如何从Java中获取DBpedia的图书的元数据?
解决方法:
SPARQL既是查询语言,也是查询所谓的SPARQL端点的协议.
一个SPARQL查询,要求DBpedia提供具有ISBN 0-553-05250-0及其(或它们)相关属性和值的书籍(或书籍),如下所示:
select distinct ?book ?prop ?obj
where {
?book a dbo:Book .
?book ?prop ?obj .
?book dbp:isbn ?isbn .
FILTER (regex(?isbn, "0-553-05250-0"))
}
LIMIT 100
在浏览器here中查看查询结果.
请注意,正则表达式(?isbn,“0-553-05250-0”)需要一些时间来评估.它可能不适用于所有ISBN,因为
>维基百科可能永远不会有完整的ISBN列表,因此DBpedia也不例外
>没有破折号的相同ISBN与破折号的查询不匹配.
此外,我noticed认为一些ISBN只是一串数字和破折号,其他ISBN中有“ISBN”或附加“(平装)”.
您可以通过webform(通过浏览器访问端点)通过Jena(一个着名的RDF和SPARQL Java工具包)将此查询发送到DBpedia endpoint.
以下是一些查询DBpedia结果的Java代码中的查询,并将它们打印到命令行(基于另一个Jena, SPARQL and DBpedia related question,其中有很多):
String sparqlQueryString1= "select distinct ?book ?prop ?obj " +
"where { " +
" ?book a dbpedia-owl:Book . " +
" ?book ?prop ?obj . " +
" ?book dbpprop:isbn ?isbn . " +
" FILTER (regex(?isbn, \"0-553-05250-0\")) " +
"} " +
"LIMIT 100";
Query query = QueryFactory.create(sparqlQueryString1);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query);
qexec.close() ;
我最喜欢的SPARQL资源是Lee Feigenbaum’s cheat sheet,这是一个非常全面的参考.也许您想查看tutorials Jena提供的文档.
标签:java,sparql,dbpedia,isbn 来源: https://codeday.me/bug/20190704/1372013.html