没有命名空间的Sparql查询结果

时间:2012-06-27 20:29:58

标签: sparql semantic-web jena virtuoso

我想从sparql查询中获取结果,结果不包含命名空间。 例如:有三种格式的结果,如:

"http://www.xyz.com#Raxit"  "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"  "http://www.xyz.com#Name"

所以我想只关注:

Raxit type Name

我想直接从sparql查询中获得此结果。我正在使用艺术大师。

是否可以从sparql获取此内容?

请分享您对此的看法。

先谢谢。

2 个答案:

答案 0 :(得分:6)

如果您的数据是常规的,并且您知道总是的子字符串出现在#字符之后,那么您可以使用SPARQL中的strafter函数1.1。我不知道这是否可以在Virtuoso的实现中使用。

然而这通常是一种风险很大的策略。并非所有URI都使用#字符后的本地名称部分进行格式化。实际上,通常,URI可能根本没有合法或有用的本地名称。所以你应该问问自己:为什么你认为你需要这个?一般而言,语义Web应用程序使用整个URI作为不可分割的标识符。如果您的需求实际上是用于在人工智能中显示的人性化内容,请让您的查询同时查找rdfs:labelskos:label属性。最糟糕的情况是,尝试使用模型中的前缀或prefix.cc等服务将URI缩写为q-name表单(即prefix:name

答案 1 :(得分:1)

实现这一目标的最简单方法是不必费心调整查询,而是自己对结果进行后期处理。根据您用来与Virtuoso进行通信的客户端库,您通常会发现它具有API支持来解析结果,获取值,并且对于每个值,然后只获取本地名称(我建议您查找URI.getLocalName()方法或类似的东西)。