我必须解析包含到dbpedia.org的URI链接的xml。我必须使用Jena库基于给定的Ontology从这些URI中提取rdf三元组。如何根据给定的本体以Java编程方式解析前缀。
给定的本体论说可以通过查询dbpedia.org来提取三元组。对于所有这些三元组,可以使用相应的dbpedia资源开始编写查询。但问题是我如何只用其资源可用来编写查询。我有要查询的属性。但我没有这些属性的PREFIX
答案 0 :(得分:1)
虽然这可能不能直接回答这个问题,但我有一大堆URI,一些不加前缀,我希望它们都没有前缀(即完整写出并解析前缀)。在Google上搜索我遇到的最有用的东西是这个问题(第一个)和JavaDoc,所以我想我会在这个问题上添加我的经验,以帮助其他可能正在寻找相同内容的人。
Jena的PrefixMap接口(由Model实现)具有expandPrefix
和qnameFor
方法。 expandPrefix
方法是帮助我的方法(qnameFor
反之亦然,即它将PrefixMap的前缀应用于字符串,如果找不到这样的映射则返回null。)
因此,对于任何资源,要确保您具有完全扩展的URI,您可以
myRes.getModel().expandPrefix(myRes.getURI());
希望这有助于某人。
答案 1 :(得分:0)
您的问题不是很明确,因此如果此答案无法解决您的问题,请编辑您的问题,以便更清楚地说出您的问题所在。但是,根据您的要求,一旦您将RDF文件读入Jena模型,XML或任何其他编码,所使用的前缀可通过接口com.hp.hpl.jena.shared.PrefixMapping
中的方法获得(请参阅{{ 3}})。 Model
对象实现该接口。要自动展开前缀"foo"
,请使用方法getNsPrefixURI()
。
修改的
好的,根据你修改过的问题,你可以做很多事情来将一个简单的属性名称变成一个可以在SPARQL查询中使用的属性URI:
使用javadoc服务查看前缀和前缀名称的可能扩展(例如,如果给予dbpedia:elevation
,您可以在prefix.cc上查找(即:{{ 3}})看到其中一个可能的扩展是prefix.cc
在资源URI上发出http://prefix.cc/dbpedia:elevation以查看在RDF描述中返回哪些属性,然后将这些属性与您已获得的未加前缀的属性名称相匹配
要求您的数据提供商为您提供完整的媒体资源名称,或以其他方式提供前缀扩展,以免您必须首先对他或她所指的属性进行反向工程。
< / LI>就个人而言,我个人主张第三种选择。