RDFコレクションをSPARQL 1.1プロパティパスでコンストラクトしようとしています。私が見たプロパティパスの例は、rdf:最初のノードを得ることができますが、bノードを含めてチェーン全体を取得できるものはまだ見ていません。クエリの主要部分は、次のようになります。?RDFコレクション内のFILTER重複ヘッドバインドSPARQL 1.1とのコンストラクタ
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sc: <http://iiif.io/api/presentation/2#>
CONSTRUCT {?range sc:hasCanvases ?listid .
?listid rdf:first ?canvas .
?listid rdf:rest ?mid .
?mid rdf:rest ?node .
?node rdf:first ?canvas .
?node rdf:rest ?last .
[...]}
WHERE {values ?range {<http://some.uri>}
?range sc:hasCanvases ?listid .
values ?e { rdf:first rdf:rest }
?listid rdf:rest* ?mid .
?mid ?e ?node FILTER (?mid != ?node).
?listid rdf:first ?first .
?node rdf:first ?canvas .
?node rdf:rest ?last .
[...]}
それはほとんどことを除いて、作品はlistidノードは、プロパティパス内のすべてのrdf:rest ?mid
のオブジェクトにバインドします。
jsonld.fromRDF
メソッドには、このライブラリを使用したリストの再構築に問題があります。私はさまざまなサブクエリ、プロパティパス、フィルタを試してきましたが、これはかなり固執しています。出来ますか?
:?リストをの値を使用していません。あなたがその部分を残してから、あなたが作ろうとしていることは明確ではありません。また、 "ヘッドノード"が意味することは明確ではありません。クエリに '?head'はありません... –
この解決策をありがとう@JoshuaTaylor 問題はクエリのCONSTRUCT部分にありました(わかりやすくするために追加しました)。これに '' range sc:hasCanvases?listid''を変更しました。これは単に '' range sc:hasCanvases?listid''から '' listid rdf:first?canvas''です。 '?mid rdf:first?canvas .' '?mid rdf:rest?last .' と動作します。 プロパティパスの件名は、パス内の一致するすべてのオブジェクトに反復的にバインドされているようです。したがって、CONSTRUCTで参照されるとき、それは1-1,1-2,1-3,1-4,1-5のようなパターンを示します。 –