SPARQL Преобразование типов? - PullRequest
       28

SPARQL Преобразование типов?

5 голосов
/ 14 декабря 2010

У меня следующий запрос SPARQL:

PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#> 
PREFIX dtp: <http://dtp-126.sncs.abdn.ac.uk#> 
PREFIX dbp: <http://dbpedia.org/resource/> 
SELECT ?value ?time WHERE {         
    dtp:CD7514 ssn:madeObservation ?observation .       
    ?observation ssn:observedProperty ?property .   
    ?property ssn:hasValue <http://dbpedia.org/resource/Temperature> .          
    ?observation ssn:observationResult ?observationValue .      
    ?observationValue ssn:hasValue ?value .         
    ?observationValue ssn:observationSamplingTime ?time 
    FILTER(?time > 1291908000)
}

В двух словах: все наблюдения датчика температуры с датчика, dtp: CD7514, и фильтрация значений, меньших заданной отметки времени.

Однако добавление ограничения фильтра возвращает 0 результатов (если есть наблюдения, соответствующие этому временному региону!)

Возможно ли, что? Time является типом данных varchar / text / String и поэтому сравнение не может быть выполнено? Если это так, возможно ли выполнить преобразование в SPARQL?

Ответы [ 2 ]

17 голосов
/ 07 февраля 2011

Это сработает только в том случае, если значение времени, которое вы сопоставляете, имеет такое же количество цифр, как и сильное сравнение. Лучшее решение было бы:

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
...
FILTER(xsd:integer(?time) > 1291908000)

Это приведёт значение во времени к целому числу, а затем выполнит его числовое сравнение.

1 голос
/ 14 декабря 2010

Решением этой проблемы было просто добавить кавычки вокруг отметки времени.

...