我想从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获取此内容?
请分享您对此的看法。
先谢谢。
答案 0 :(得分:6)
如果您的数据是常规的,并且您知道总是的子字符串出现在#
字符之后,那么您可以使用SPARQL中的strafter
函数1.1。我不知道这是否可以在Virtuoso的实现中使用。
然而这通常是一种风险很大的策略。并非所有URI都使用#
字符后的本地名称部分进行格式化。实际上,通常,URI可能根本没有合法或有用的本地名称。所以你应该问问自己:为什么你认为你需要这个?一般而言,语义Web应用程序使用整个URI作为不可分割的标识符。如果您的需求实际上是用于在人工智能中显示的人性化内容,请让您的查询同时查找rdfs:label
或skos:label
属性。最糟糕的情况是,尝试使用模型中的前缀或prefix.cc等服务将URI缩写为q-name表单(即prefix:name
)
答案 1 :(得分:1)
实现这一目标的最简单方法是不必费心调整查询,而是自己对结果进行后期处理。根据您用来与Virtuoso进行通信的客户端库,您通常会发现它具有API支持来解析结果,获取值,并且对于每个值,然后只获取本地名称(我建议您查找URI.getLocalName()
方法或类似的东西)。