Rob*_*obV 27
简短的回答 - 没有标准的直接方式来做到这一点
答案很长 - 但是,你可以用字符串函数和一个FILTER子句来做有限的形式.您使用的功能取决于您的引擎支持的SPARQL版本.
现在几乎所有的实现都支持SPARQL 1.1,你可以使用这样的STRSTARTS()函数:
FILTER(STRSTARTS(STR(?var), "http://example.org/ns#"))
Run Code Online (Sandbox Code Playgroud)
这是我的首选方法,应该相对有效,因为它是简单的字符串匹配.
如果您使用仅支持SPARQL 1.0的实现,您仍然可以这样做,但它通过该REGEX()函数使用正则表达式,因此可能会更慢:
FILTER(REGEX(STR(?var), "^http://example\\.org/ns#"))
Run Code Online (Sandbox Code Playgroud)
请注意,对于正则表达式,我们必须转义元字符.,否则它可以匹配任何字符,例如http://exampleXorg/ns#foo将被视为有效匹配.
与\正则表达式和SPARQL字符串的转义字符一样,它必须在此处进行双重转义,以便使正则表达式只包含\.在其中并.视为文字字符.
如果您可以使用SPARQL 1.1,那么这样做是因为使用更简单的字符串函数会更高效,并且无需担心在使用时转义任何元字符 REGEX