在Virtuoso中匹配SPARQL查询中的双引号

时间:2016-12-26 13:48:30

标签: regex sparql quotes virtuoso

我需要获得一个匹配Virtuoso图中双引号的SPARQL查询。我使用这样的查询:

SELECT distinct ?o
FROM <http://graph>
WHERE
{
    ?s ?p ?o.
}

它返回一个包含这些值的列:

http://some.prefix/Symbol
"abcd"

我只需匹配第二个值("abcd")。我尝试将此类过滤器添加到WHERE子句:

FILTER regex(str(?o), "\"")

但它没有返回任何结果。我还尝试'"'作为正则表达式的第二个参数,以及其他一些东西。它有可能吗?

2 个答案:

答案 0 :(得分:2)

"abcd"是四个字符的字面值。它不包括"";这些是字符串分隔符,不构成字符串的一部分。

FILTER isLiteral(?o)

应该有用。

答案 1 :(得分:0)

由于您的过滤器无效,"abcd"中没有双引号。这是一个字符串文字。不确定它是什么类型;所以你可以使用 -

select ?type where { "abcd" a ?type }

- 获取其类型。然后,您可以在查询中将该类型用作过滤器:

SELECT distinct ?o
FROM <http://graph>
WHERE
{
    ?s ?p ?o .
    ?o a <whatever type you received in the previous query> .
}