我有一个 SPARQL 查询,其过滤器类似于:
SELECT * FROM
{
...
data:person_1 app:maxDistance ?value
data:person_1 app:coordinates ?coord1
data:person_2 app:coordinates ?coord2
FILTER (
xsd:float(STRBEFORE(?value, " miles"))
>=
app:miles-between(?coord1, ?coord2)
)
}
?value
这是“x 英里”形式的文字(x 是数字量)
所以我想过滤掉比 person_1 的 maxDistance 更远的人,但是过滤器似乎总是返回 false 并且没有人被过滤掉。
问题是虽然我不确定如何调试它。我知道 app:miles-between 的返回值,因为它是自定义的 c# 函数,我可以在其中断点并看到它正确地返回一个双精度值。
但是我不知道 xsd:float() 和 STRBEFORE 返回什么。无论如何将返回值绑定到变量并从 SELECT 输出?
我尝试使用ExplainQueryProcessor,但它没有给我足够的信息,例如我想知道的返回值。