Jena以编程方式解析前缀

时间:2011-04-18 04:39:53

标签: ontology jena

我必须解析包含到dbpedia.org的URI链接的xml。我必须使用Jena库基于给定的Ontology从这些URI中提取rdf三元组。如何根据给定的本体以Java编程方式解析前缀。

给定的本体论说可以通过查询dbpedia.org来提取三元组。对于所有这些三元组,可以使用相应的dbpedia资源开始编写查询。但问题是我如何只用其资源可用来编写查询。我有要查询的属性。但我没有这些属性的PREFIX

2 个答案:

答案 0 :(得分:1)

虽然这可能不能直接回答这个问题,但我有一大堆URI,一些不加前缀,我希望它们都没有前缀(即完整写出并解析前缀)。在Google上搜索我遇到的最有用的东西是这个问题(第一个)和JavaDoc,所以我想我会在这个问题上添加我的经验,以帮助其他可能正在寻找相同内容的人。

Jena的PrefixMap接口(由Model实现)具有expandPrefixqnameFor方法。 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>

就个人而言,我个人主张第三种选择。