Отладка возвращаемых значений функции sparql в dotNetRDF

1

У меня есть запрос 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, и никто не отфильтровывается.

Проблема в том, что я не уверен, как отлаживать это. Я знаю возвращаемое значение приложения: miles-between, так как это пользовательская функция С#, с которой я могу установить точку останова и видеть, что это правильно возвращает двойное значение.

Однако я не знаю, что xsd: float() и STRBEFORE возвращаются. Есть ли способ привязать возвращаемое значение к переменной и выводить из SELECT?

Я попытался использовать ExplainQueryProcessor, но он не дает мне достаточной информации, такой как возвращаемые значения, которые я хочу знать.

Теги:
sparql
dotnetrdf

1 ответ

2
Лучший ответ

Однако я не знаю, что xsd: float() и STRBEFORE возвращаются. Есть ли способ привязать возвращаемое значение к переменной и выводить из SELECT?

Вы хотите BIND:

select ?floatValue ?milesBetween where {
  …
  BIND( xsd:float(STRBEFORE(?value, " miles")) as ?floatValue )
  BIND( app:miles-between(?coord1, ?coord2) as ?milesBetween )
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню