2016-12-26 5 views
0

Virtuosoグラフの二重引用符に一致するSPARQLクエリを取得する必要があります。VirtuosoのSPARQLクエリの二重引用符の一致

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

それは私にそのような値を持つ列を返します:私は唯一の第二の値("abcd")と一致する必要が

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

私は、このようなクエリを使用します。私はWHERE句に、このようなフィルタを追加しようとしました:

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

しかし、それは結果を返しません。私はまた、正規表現と他のいくつかのものの2番目のパラメータとして'"'を試してみました。まったく可能ですか?

答えて

2

"abcd":あなたはその後、としてクエリでのフィルタとしてその型を使用することができます。 ""は含まれません。これらは文字列区切り文字であり、文字列の一部を構成しません。

FILTER isLiteral(?o) 

が有効です。

+0

ありがとう、これは私が必要とするものです! – Kviat

0

フィルタが機能しないため、"abcd"には二重引用符は含まれていません。これは文字列リテラルです。それがどんなタイプであるかわからない。 -

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

- タイプを取得することができます。 4文字のリテラルである

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

rdfs:Classが 'rdf:type'(またはキーワード' a')とリテラルのデータ型で記録されているときに違いがあります。 "?o a ..."はデータ型を返しません。 DATATYPE(?o)を試してください。しかし、isLiteralは任意のデータ型のリテラルをテストするので、これは必要ではありません。 – AndyS

+0

合意。これを行うにはisLiteral()が良い方法です。 –

関連する問題