8

Python プログラムの SPARQL クエリで次の行を使用しています。

FILTER regex(?name, "%s", "i" )

(%sユーザーが入力した検索テキストはどこにありますか)

?nameまたはを?featurename含む場合にこれを一致させたいのです%sが、regex() を使用するためのドキュメントやチュートリアルが見つからないようです。合理的と思われるいくつかのことを試しました。

FILTER regex((?name | ?featurename), "%s", "i" )
FILTER regex((?name || ?featurename), "%s", "i" )
FILTER regex((?name OR ?featurename), "%s", "i" )
FILTER regex((?name, ?featurename), "%s", "i" )

そして、()

FILTER regex(?name, "%s", "i" ) || regex(?featurename, "%s", "i" )

これを行う正しい方法は何ですか?ありがとう

更新: UNION の使用は機能します。しかし、次のように regex() 部分を繰り返すだけでも機能することがわかりました。

FILTER (regex(?name, "%s", "i") || regex(?featurename, "%s", "i" ))

どちらのソリューションも、同じ文字列のコピーを含む 2 要素のタプルを使用して両方の を埋める必要があるという点で、少し面倒に見えます%s

4

1 に答える 1

14

これはどうですか?

SELECT ?thing
WHERE {
  { 
    ?thing x:name ?name .
    FILTER regex(?name, "%s", "i" )
  } UNION {
    ?thing x:featurename ?name .
    FILTER regex(?featurename, "%s", "i" )
  }
}
于 2010-07-17T20:54:02.080 に答える