Sparql1.0のみをサポートするsparqlエンドポイントの1つに対してsparqlクエリを実行しています。
次のクエリを使用して、ストアからユーザーのリストを取得しようとしています。
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
関数
を使用する必要があると言うかもしれませんが、これらはSparql1.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"
)
}