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

Matching double quotes in SPARQL query in Virtuoso

我需要获取与 Virtuoso 图中的双引号相匹配的 SPARQL 查询。我使用这样的查询:

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

它 returns 我有这样一个值的列:

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

我只需要匹配第二个值 ("abcd")。我试图将这样的过滤器添加到 WHERE 子句:

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

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

由于您的过滤器不起作用,"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> .
}

"abcd" 是四个字符的文字。它不包括 "";这些是字符串定界符,不构成字符串的一部分。

FILTER isLiteral(?o)

应该可以。