Служба запросов Викиданных, фильтрация значений/строки, лежащих выше/ниже определенного значения

Я сделал запрос, который показывает все элементы, которые «найдены в таксоне» «Chlamydia trachomatis D/UW-3/CX». Эти элементы должны иметь свойства P644 (геномное начало) и P645 (геномное окончание). Пока это работает. Но затем я хотел отфильтровать эти элементы в зависимости от значений «геномного начала» и «геномного конца». В моем примере я хотел получить все элементы, где «геномное начало» выше «100», а «геномное окончание» ниже «3000». Но это не сработало. Я неправильно использую ФИЛЬТР?

Вот мой код непосредственно на странице службы запросов Викиданных: Служба запросов к Викиданным

SELECT ?item ?genomic_start ?genomic_end
Where{
?item wdt:P703 wd:Q20800373. #P703:found in taxon
?item wdt:P644 ?genomic_start.
?item wdt:P645 ?genomic_end.
FILTER (?genomic_start > "100").
FILTER (?genomic_end < "3000").
}

person TIlls    schedule 16.03.2016    source источник


Ответы (1)


Вам нужно сначала преобразовать значение в int, чтобы иметь возможность использовать > или ‹:

SELECT ?item ?genomic_start ?genomic_end
Where{
?item wdt:P703 wd:Q20800373. #P703:found in taxon
?item wdt:P644 ?genomic_start.
?item wdt:P645 ?genomic_end.
FILTER (xsd:integer(?genomic_start) > 100).
FILTER (xsd:integer(?genomic_end) < 3000). 
}
person Bahar    schedule 16.03.2016
comment
Большое спасибо!! Ваш ответ именно то, что я искал! - person TIlls; 16.03.2016
comment
Я бы сказал, что в этом случае Викиданные не работают, поскольку они хранят число в виде строки. Преобразование не должно быть необходимым. - person Tom Morris; 16.03.2016