SPARQL-将结果资源限制到特定命名空间 [英] SPARQL - Restricting Result Resource to Certain Namespace(s)
本文介绍了SPARQL-将结果资源限制到特定命名空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有将SPARQL查询的结果限制为属于特定命名空间的标准方法。
推荐答案
简明答案-没有标准的直接方法
答案很长-但是,是的,您可以使用字符串函数和FILTER
子句进行有限形式的回答。您使用的函数取决于您的引擎支持的SPARQL版本。
SPARQL 1.1解决方案
现在几乎所有的实现都支持SPARQL 1.1,您可以像这样使用STRSTARTS()
函数:
FILTER(STRSTARTS(STR(?var), "http://example.org/ns#"))
这是我的首选方法,应该相对有效,因为它是简单的字符串匹配。
SPARQL 1.0解决方案
如果您坚持使用仅支持SPARQL 1.0的实现,您仍然可以这样做,但它通过REGEX()
函数使用正则表达式,因此速度可能会较慢:
FILTER(REGEX(STR(?var), "^http://example\.org/ns#"))
正则表达式和元字符
请注意,对于正则表达式,我们必须转义元字符.
,否则它可能与任何字符匹配,例如,http://exampleXorg/ns#foo
将被视为有效匹配。
由于是正则表达式和SPARQL字符串的转义字符,因此必须在此处进行双重转义,才能使正则表达式只包含
.
,并将.
视为文字字符。
建议
如果您可以使用SPARQL 1.1,则使用SPARQL 1.1是因为使用更简单的字符串函数性能更好,并且在使用REGEX
这篇关于SPARQL-将结果资源限制到特定命名空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文