単一のアイテムの場合、これは SPARQL 1.1 のサブクエリを使用した非常に簡単なクエリです。秘訣は、特定のプロパティを持つリビジョンを日付順に並べ、最新のリビジョンから値を取得することです。フォームは、values
選択しているアイテムを指定するためにのみ使用されます。さらに項目を照会する必要がある場合は、それらをvalues
ブロックに追加できます。
prefix mymeta: <http://www.mymeta.com/meta/>
prefix dc: <http://purl.org/dc/elements/1.1/>
select ?item ?title ?format ?extent where {
values ?item { <urn:ITEMID:12345> }
#-- Get the title by examining all the revisions that specify a title,
#-- ordering them by date, and taking the latest one. The same approach
#-- is used for the format and extent.
{ select ?title { ?item mymeta:itemchange [ dc:title ?title ; dc:issued ?date ] . }
order by desc(?date) limit 1 }
{ select ?format { ?item mymeta:itemchange [ dc:format ?format ; dc:issued ?date ] . }
order by desc(?date) limit 1 }
{ select ?extent { ?item mymeta:itemchange [ dc:extent ?extent ; dc:issued ?date ] . }
order by desc(?date) limit 1 }
}
$ sparql --data data.n3 --query query.rq
----------------------------------------------------------------------------------
| item | title | format | extent |
==================================================================================
| <urn:ITEMID:12345> | "Improved Product Name"@en | "4 x 6 x 1 in"@en | "200"@en |
----------------------------------------------------------------------------------
実際にすべてのアイテムに対してこれを行う必要がある場合は、別のサブクエリを使用してアイテムを選択できます。つまり、 の代わりにvalues ?item { ... }
、次を使用します。
{ select ?item { ?item a mymeta:item } }
元の質問では言及されていませんでしたが、コメントに出てきました。すべてのプロパティの最新のプロパティ値を取得することに興味がある場合は、How to に基づいて次のようにサブクエリを実行できます。 SPARQL ソリューション グループのサイズを制限しますか?
select ?item ?property ?value {
values ?item { <urn:ITEMID:12345> }
?item mymeta:itemchange [ ?property ?value ; dc:issued ?date ]
#-- This subquery finds the earliest date for each property in
#-- the graph for each item. Then, outside the subquery, we
#-- retrieve the particular value associated with that date.
{
select ?property (max(?date_) as ?date) {
?item mymeta:itemchange [ ?property [] ; dc:issued ?date_ ]
}
group by ?item ?property
}
}
---------------------------------------------------------------
| item | property | value |
===============================================================
| <urn:ITEMID:12345> | dc:issued | "2007-06-01"@en |
| <urn:ITEMID:12345> | dc:title | "Improved Product Name"@en |
| <urn:ITEMID:12345> | dc:extent | "200"@en |
| <urn:ITEMID:12345> | dc:format | "4 x 6 x 1 in"@en |
---------------------------------------------------------------