其他分享
首页 > 其他分享> > 如何通过使用jena提供属性名称来获取dbpedia中属性的命名空间?

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

作者:互联网

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

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

非常感谢

解决方法:

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

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

但是,有一些合法的用例需要获取一般查询字符串 – 例如select * where {?s?p“foo”} – 并确保其中一个变量事先绑定到特定值.虽然可以通过字符串操作来实现这一点,但是有一种更优雅的方式.例如,要获取上述查询,并将?p预绑定到属性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 postingJavaDoc.

标签:jena,java,sparql,dbpedia
来源: https://codeday.me/bug/20190903/1797820.html