2017-09-19 6 views
-1

私はSPARQLでクエリを書く方法を学んでいます(Protégéプラットフォーム経由)。だから、これは非常に基本的な質問ですが、私は解決できませんでした。Protégé(正規表現)のSparqlクエリ(フィルタリング)

私にはアリスという名前の人がいます。
この個人にはtextualValueというデータプロパティがあり、xsd:normalizedStringとして指定されています。

私はaliで始まる人物を抽出するために以下の質問を書いていますが、その結果aliceになるはずです。私は基本的にフィルタリングのための正規表現のオペランドを使用しています。この仕様でSPARQLクエリを実行するたびに、結果は得られません。誰かが間違っている箇所を指摘できますか?

SELECT distinct ?x 
WHERE { ?x rdf:type owl:NamedIndividual. 
FILTER regex(?textualValue, "^ali", "i") } 

答えて

3

プロパティtextualValueの値を取得する必要があります。これは変数に自動的には入れられません。ここで

はあなたの説明に基づいて、アウトラインです:?vにRDF用語の単なる字句一部を取得するために

PREFIX owl: .... 
PREFIX rdf: .... 
PREFIX x: <InsertTheRightURIhere> 
SELECT distinct ?x 
WHERE { 
    ?x rdf:type owl:NamedIndividual ; 
     x:textualValue ?v . 
    FILTER regex(str(?v), "^ali", "i") 
} 

str:あなたは詳細を完了する必要があります。

+0

ありがとうございます。しかし、私は '?v'の略語を理解するのに少し苦労しています。あなたが私にソースを指定したりアドバイスしたりできれば、とても役に立ちます。 @AndyS – Gamze

+0

'?v'は変数です。これは 'x:textualValue'トリプルのオブジェクトに設定されます。 – AndyS