SPARQL-将结果资源限制到特定命名空间 [英] SPARQL - Restricting Result Resource to Certain Namespace(s)

查看:12
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆