2016-02-12 3 views
3

Я пытаюсь автозаполнять то, что пользователь пишет во вводе, с условиями в DBpedia, аналогично this jsFiddle example. Попробуйте написать dog во вкладке этого jsFiddle, и вы увидите термин «собака» в предложениях.Запросить результаты запроса SPARQL по длине строки?

У меня есть следующий код, и проблема в том, что 10-дневный список, который я получил в результате, не содержит альтернативы «Собака». Итак, если бы я мог заказать список по длине (строковое представление) ? Концепция, тогда я мог бы получить этот термин. Это возможно?

SELECT DISTINCT ?concept 
WHERE { 
    ?concept a skos:Concept . 
    FILTER regex(str(?concept), "dog", "i") 
} 
ORDER BY ASC(?concept) LIMIT 10 

ответ

6

Так что, если я мог бы упорядочить список по длине из? Концепции можно получить срок. Но я не могу найти правильное утверждение для этого. Является ли это возможным?

Похоже, что вы ищете strlen.

order by strlen(str(?concept)) 

Например,

select distinct ?concept where { 
    ?concept a skos:Concept . 
    filter regex(str(?concept), "dog", "i") 
} 
order by strlen(str(?concept)) 
limit 10 

SPARQL results

Тем не менее, если вы просто проверить членство строки, не нужна вся мощь регулярных выражений, и может быть быть более эффективным в использовании contains и lcase проверить понятие содержит ли строчные «собаку» с фильтром как:?

filter contains(lcase(str(?concept)), "dog") 

Таблица содержания в спецификации SPARQL имеет большой список функций, которые вы можете просматривать. В частности, вы хотели бы ознакомиться с подразделами 17.4 Function Definitions.

 Смежные вопросы

  • Нет связанных вопросов^_^