gpt4 book ai didi

java - 查询 DBpedia 以获取图书的元数据

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:46 24 4
gpt4 key购买 nike

我有一堆 ISBN。我想查询 DBpedia 并获取书籍的元数据。

我无法理解 SPARQL

谁能告诉我如何用 Java 从 DBpedia 获取一本书的元数据?

最佳答案

SPARQL 既是一种查询语言,也是一种用于查询所谓的SPARQL 端点的协议(protocol)。

向 DBpedia 询问 ISBN 为 0-553-05250-0 的一本书(或多本书)及其(或它们)相关属性和值的 SPARQL 查询是这样的:

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 .

请注意 regex(?isbn, "0-553-05250-0") 需要一些时间来评估。它可能不适用于所有 ISBN,因为

  • 维基百科可能永远不会有完整的 ISBN 列表,所以 DBpedia 也可能没有
  • 没有破折号的相同 ISBN 将不会匹配带有破折号的查询。

此外,我 noticed一些 ISBN 只是一串数字和破折号,其他 ISBN 中有“ISBN”或附加“(平装本)”。

您可以将此查询发送至 DBpedia endpoint通过网络表单(通过使用浏览器访问端点)通过 Jena ,一个著名的 RDF 和 SPARQL Java 工具包。
这是一些 Java 代码中的查询,它查询 DBpedia 的结果并将它们打印到命令行(基于另一个 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 - 查询 DBpedia 以获取图书的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com