以编程方式解析前缀Jena

| 我必须通过XML解析,该XML包含到dbpedia.org的URI链接。我必须使用Jena库基于给定的本体从那些URI中提取rdf三元组。如何基于给定的本体以Java编程方式解决Prefix。 给定的本体论说,可以通过查询dbpedia.org来提取三元组。对于所有这些三元组,相应的dbpedia资源可用于开始编写查询。但是问题是我如何只使用可用资源来编写查询。我有要查询的属性。但是我没有这些属性的前缀     
已邀请:
您的问题不太清楚,因此,如果此答案不能解决您的问题,请编辑您的问题以更清楚地说明您的问题是什么。但是,根据您的要求,一旦您将XML或任何其他编码的RDF文件读入Jena模型中,就可以通过ѭ0through接口中的方法使用所使用的前缀(请参见javadoc)。一个“ 1”对象实现该接口。要自动扩展前缀
\"foo\"
,请使用方法
getNsPrefixURI()
。 编辑 好的,考虑到您提出的问题,可以做很多事情将简单的属性名称转换为可以在SPARQL查询中使用的属性URI: 使用prefix.cc服务查看前缀和前缀名称的可能扩展(例如,如果给定“ѭ4”,则可以在prefix.cc(即http://prefix.cc/dbpedia:elevation)上查找可能的扩展之一是http://dbpedia.org/ontology/elevation 对资源URI发出SPARQL describe查询,以查看RDF描述中返回了哪些属性,然后将其与您获得的未前缀属性名称匹配 要求您的数据提供商提供完整的属性名称,或者提供前缀扩展名,以免您不得不反向工程他或她首先要指代的属性。 如果可能的话,我个人主张第三个选择。     
尽管这可能无法直接回答问题,但我有大量的URI,有些前缀没有,我希望它们都没有前缀(即完整写出并解析了前缀)。搜索Google我遇到的最有用的事情是(第一个)问题和JavaDoc,所以我想我会在这个问题上加我的经验,以帮助其他可能搜索同一事物的人。 Jena的PrefixMap接口(由Model实现)具有
expandPrefix
qnameFor
方法。
expandPrefix
方法对我有帮助(
qnameFor
进行了相反的操作,即它将PrefixMap的前缀应用于字符串,如果找不到此类映射,则返回null)。 因此,对于任何资源,要确保您具有完全扩展的URI,可以执行
myRes.getModel().expandPrefix(myRes.getURI());
希望这对某人有帮助。     

要回复问题请先登录注册