gpt4 book ai didi

java - 如何通过使用 jena 提供属性名称来获取 dbpedia 中属性的命名空间?

转载 作者:行者123 更新时间:2023-11-30 06:35:42 24 4
gpt4 key购买 nike

我正在尝试使用 jena 中的 sparql 在以下 dbpedia 链接中获取属性 genre 的值 http://dbpedia.org/page/Black_Sabbath

但我不知道如何从 dbpedia 获取属性命名空间(dbpedia-owl.genre 在我的示例中)我不想对其进行硬编码。任何人都可以帮助我...

非常感谢

最佳答案

你最初的问题让我觉得你想要像 Jena schemagen 这样的东西,它将自动从本体中使用的标识符 URI 生成 Java 常量集合。然而,DbPedia OWL schema相当大,我认为 schemagen 可能不会生成有用的结果(我没有尝试过)。如果是这样,您始终可以选择您感兴趣的资源和属性的子集,然后对该子集运行 schemagen。

但是,您在其中谈论使用纬度等其他属性的澄清评论让我认为您在问一个不同的问题:即如何避免将特定属性硬编码到 SPARQL 查询中。这对您来说是否是个问题完全取决于您要解决的问题和代码的体系结构。一个程序完全有可能维护许多 SPARQL 查询字符串,并只选择特定作业所需的一个。这是一种常见的使用模式。

但是,在某些合法的用例中,您希望采用通用查询字符串 - 例如 select * where {?s ?p "foo"} - 并确保其中一个变量是预先绑定(bind)到一个特定的值。虽然可以通过字符串操作来做到这一点,但还有一种更优雅的方法。例如,要采用上述查询,并将 ?p 预绑定(bind)到属性 dc:creator,您可以执行以下操作:

String q = "select * where {?s ?p \"foo\"}";
QuerySolutionMap qsm = new QuerySolutionMap();
qsm.bind( "p", DC.creator );
Query query = QueryFactory.create( q );
QueryExecution exec = QueryExecutionFactory.create( query, model, qsm );
ResultSet rs = exec.execSelect();

另见 this blog posting了解更多信息,或 JavaDoc .

关于java - 如何通过使用 jena 提供属性名称来获取 dbpedia 中属性的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694534/

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