Сравнение двух значений xsd:integer
в SPARQL:
ASK { FILTER (9 < 15) }
Результат: true.Теперь с xsd:string
:
ASK { FILTER ("9" < "15") }
Результат: ложь, потому что при сортировке строк 9 следует после 1.
Некоторые проверки на равенство с xsd:decimal
:
ASK { FILTER (+1.000 = 01.0) }
Результат верен, это тот же номер.Теперь с xsd:string
:
ASK { FILTER ("+1.000" = "01.0") }
False, потому что это явно разные строки.
Выполнение некоторых математических операций с xsd:integer
:
SELECT (1+1 AS ?result) {}
Возвращает 2(как xsd:integer
).Теперь для строк:
SELECT ("1"+"1" AS ?result) {}
Возвращает «11» как xsd:string
, потому что добавление строк интерпретируется как конкатенация строк (по крайней мере, в Jena, где я пробовал это; в других движках SPARQL добавление двух строкможет быть ошибкой, ничего не возвращая).
Как видите, использование правильного типа данных важно для сообщения вашего намерения к коду, который работает с данными.Примеры SPARQL очень наглядно показывают это, но при работе непосредственно с RDF API возникают такие же проблемы, как идентификация объектов, упорядочение и т. Д.
Как показано в примерах выше, SPARQL предлагает удобныесинтаксис для xsd:string
, xsd:integer
и xsd:decimal
(и, не показан, для xsd:boolean
и для строк, помеченных языком).Это поднимает эти типы данных над остальными.