Я пытаюсь создать правильный запрос для моего тестового сервера, и я столкнулся с проблемой, которую я не могу определить PREFIX.OpenRDF Sesame: невозможно определить префикс
Например, этот запрос работает:
select * where
{
?stayingURL <http://localhost/resource_lng> ?lng .
?stayingURL <http://localhost/resource_staying_date> ?date .
?stayingURL <http://localhost/resource_address> ?address .
}
LIMIT 100
Я пытаюсь добавить фильтр по дате, так же, как что:
select * where
{
?stayingURL <http://localhost/resource_lng> ?lng .
?stayingURL <http://localhost/resource_staying_date> ?date .
?stayingURL <http://localhost/resource_address> ?address .
FILTER (?date > "2012-01-01"^^xsd:date)
}
LIMIT 100
Теперь я получил следующее сообщение об ошибке: "MALFORMED QUERY: org.openrdf.query.parser.sparql.ast.VisitorException: QName 'xsd:date' uses an undefined prefix
"
OK, я пытаюсь объявить этот префикс вручную, добавив следующую строку в начало запроса:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
Теперь я получил эту ошибку:
MALFORMED QUERY: Encountered " "<" "< "" at line 1, column 14.
Was expecting:
<Q_IRI_REF> ...
Это довольно странно для меня, но в любом случае я пытался писать его непосредственно, без префикса:
select * where
{
?stayingURL <http://localhost/resource_lng> ?lng .
?stayingURL <http://localhost/resource_staying_date> ?date .
?stayingURL <http://localhost/resource_address> ?address .
FILTER (?date > "2012-01-01"^^<http://www.w3.org/2001/XMLSchema#date>)
}
LIMIT 100
Результат почти такой же :
MALFORMED QUERY: Encountered " "<" "< "" at line 1, column 228.
Was expecting one of:
<Q_IRI_REF> ...
<PNAME_NS> ...
<PNAME_LN> ...
Что я делаю неправильно?
Адрес: http://176.34.226.101:8080/openrdf-sesame/repositories/ecomobile.
Как вы отправляете запрос на свой сервер? Тот факт, что второй запрос относится к ошибке в строке «строка 1, столбец 228», предполагает, что вы кодируете его как параметр в HTTP-запросе. Вы уверены, что правильно кодируете символ «<" and ">» в этом запросе? – Jan
@ Джан, спасибо, проблема действительно была в кодировке url; но мне интересно, почему работает первый запрос? Он также содержит символы '<' '>'. –