我有一个数据集,其资源使用许多前缀。我想查找所有不是来自两个特定前缀的资源。sparql获取所有不是来自特定前缀的主题
我执行此查询:
select *
where
{
?s ?p ?o .
bind (strafter(str(?s), "#") as ?prefix)
filter (?prefix != "http://www.first.com/to#")
filter (?prefix != "http://www.second.com/rs#")
}
limit 10
这并不起作用,因为
strafter(str("http://www.first.com/to#test")
给我test
不http://www.first.com/to#
。
有谁知道如何获得前缀吗?
对于这种方法,您需要[strbefore](https://www.w3.org/TR/sparql11-query/#func-strbefore),而不是[strafter](https://www.w3。组织/ TR/sparql11查询/#FUNC-strafter)。在文档中有一些示例显示了它们的作用:'strbefore(“abc”,“b”)=>“a”'和'strafter(“abc”,“b”)=>“c”'。 –
@JoshuaTaylor你好,感谢评论,我问了一个关于meta的问题,你可以/可能知道它:) https://meta.stackoverflow.com/questions/323271/how-to-give-minimum-example-when我的问题是在数据的大小,你可以帮助吗? –
这是您的大型数据集中发生空投注异常的设置吗?如果某个URI的形式为'http:// example.org/foo/bar',即没有'#',那么我不会感到惊讶,因此可能会得到一个空字符串期待它。 (这只是一个普遍的猜测,不一定是这里发生了什么) –