Я выполняю запрос sparql к одной из моих конечных точек sparql, которая поддерживает только Sparql 1.0.
Я пытаюсь получить список пользователей из магазина, используя следующий запрос:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX tmp: <http://example.com/schema/temp#>
PREFIX resource: <http://example.com/2010/record/schema#>
Describe ?userURI
WHERE
{
?userURI rdf:type resource:User.
OPTIONAL
{
?userURI tmp:dataCleanupStatus ?cleanUpStatus.
?userURI tmp:lastDataCleanupDate ?cleanUpDate.
}
FILTER
(
(!bound(?cleanUpStatus) || ?cleanUpStatus !="Running")
)
FILTER(
(!bound(?cleanUpDate) || ?cleanUpDate < "2012-04-11" )
)
}
С помощью приведенного выше запроса я пытаюсь получить пользователей, где:
- Либо триплет состояния очистки не существует, либо статус не «Выполняется».
- Тройка clearnUpDate либо не существует, либо меньше указанной даты.
он не возвращает запись, которую должен возвращать.
Вы можете сказать, что мне следует использовать функции xsd, но они поддерживаются только в Sparql 1.1.
Пожалуйста посоветуй.
Измененный запрос:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX tmp: <http://example.com/schema/temp#>
PREFIX resource: <http://example.com/2010/record/schema#>
Describe ?userURI
WHERE
{
?userURI rdf:type resource:User.
OPTIONAL
{
?userURI tmp:dataCleanupStatus ?cleanUpStatus.
}
OPTIONAL
{
?userURI tmp:lastDataCleanupDate ?cleanUpDate.
}
FILTER
(
!bound(?cleanUpStatus) || ?cleanUpStatus !="Running"
)
FILTER
(
!bound(?cleanUpDate) || ?cleanUpDate < "2012-04-11"
)
}