Я новичок в SPARQL, и я пытаюсь сделать следующую вещь для моего назначения:SPARQL запрос с фильтром на определенную дату
мне нужно вытащить актер, но только те, которые родились на определенном Дата. Моя проблема в том, что каждый раз, когда я пытаюсь фильтровать определенное целочисленное значение, я получаю «Ошибка при выполнении запроса, см. Причину деталей» (кстати, я понятия не имею, что такое «причина» в этом вопросе, нет журнала ошибок , или что-нибудь, что можно щелкнуть, чтобы на самом деле проверить, что пошло не так).
Вот мой запрос:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX db: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?actor ?dbpediaLink ?name ?date month(?date) WHERE {
?actor a movie:actor .
?actor owl:sameAs ?dbpediaLink .
SERVICE <http://dbpedia.org/sparql> {
?dbpediaLink dbpprop:name ?name .
?dbpediaLink dbpprop:dateOfBirth ?date
}
FILTER(month(?date) = 2)
}
LIMIT 10
Итак, что я пытаюсь сделать здесь получить все актеры, родившиеся в феврале, и с этим я получаю ошибку, упомянутых выше.
Следующие комбинации FILTER
возвращают указанную ошибку:
FILTER(month(?date) = 2)
FILTER(month(?date) > 1 && month(?date) < 3)
FILTER(month(?date) >= 2 && month(?date) <=2)
В основном все варианты для возвращения только люди, рожденные в феврале вернуть ошибку. Я даже попробовал отличать целые числа как "2"^^xsd:integer
(потому что функция month()
возвращает целое число), и она все еще не выполнена.
Я также попытался (для некоторой другой проблемы) получить актеров, которые имеют ровно 10 букв в их имени, но я также столкнулся с той же проблемой.
кажется, что любой FILTER
я пытаюсь сделать что использует =
или пытается FILTER
несколькими условиями (с использованием &&
) терпит неудачу.
Я застрял на этом последние 2 дня ... Я что-то упустил?
я, вероятно, следует упомянуть, что я использую локально развернутый сервер фусеки с LMDB свалка, и я бегу запросов на http://localhost:3030
Большое спасибо, добавив, что 'SILENT' исправил мою проблему, хотя я не уверен, почему. Если запрос dbpedia не удался, как я получил даты, которые используются в 'FILTER'? Результат, который я получил, это то, что мне было нужно, 10 актеров, которые родились в феврале. – mercin
@mercin. Возможно, ваше дополнение «SILENT» оказалось исправлением, а скорее совпало с некоторыми другими изменениями (возможно, DBpedia была перезапущена или был исправлен сетевой сбой и т. Д.) ... – TallTed