在 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)
应该可以。
我需要获取与 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)
应该可以。