とあるSPARQL文のSELECTする項目に、
abs(xsd:float(?lat) * 1000) AS ?lat
という記述をしていたら、
うまく動いていたんですが、
ある日突然、
というかSELECT対象のデータを更新したら、
エラーが出るようになったんです。
どうやら、?latに空のデータが入っていると、
xsd:float(?lat)
がコケるみたいで、以下のエラーが出ます。
Virtuoso 22023 Error SR066: Unsupported case in CONVERT (incomplete RDF box -> REAL)
不完全なRDFボックスからREALへの変換はサポートしてません的な・・・ちょっと意味不明です。
対策としては、対象データを文字列に変換する関数str()を挟むようにして、
以下のようにすると
xsd:float(str(?lat))
エラーは出なくなりました。
FILTERの条件のときもstr()必要ですし、str()って何かと便利なんですね。
以上、よろしくお願いいたします。