2

会場の部屋数をリクエストしたい:これが私が得たものです:

ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/3>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/ajax-foyer>    -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/ajaxbalkon>    -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/bovenzaal>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/foyer>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/grote-repetitielokaal> 

その隣で、複数行の返品を受け取りたいと思います。

ah:attachment   <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/attachment/1>   -
ah:attachment   <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/attachment/2> 

私はこれを実現するためにすでに検索しました。group_concatソリューションが見つかりましたが、理解できませんでした。

sparqlブラウザーで使用したクエリ

4

1 に答える 1

3

部屋の数を取得するには、COUNTオペレーターを使用します。これを句と組み合わせて使用​​する必要があります。これGROUP BYにより、どの結果を一緒に集計するかが演算子に通知されます。例えば:

SELECT ?venue (COUNT(?room) as ?nrOfRooms)
WHERE { 
        ?venue a ah:Venue ;
               ah:room ?room . 
}
GROUP BY ?venue

作品は実際にはGROUP_CONCATかなり似ています。私はあなたのクエリを詳細に調べていないので、これは実際のデータがどのように見えるかと完全には一致しないかもしれませんが、大まかに言って、あなたがすることは次のとおりです。

SELECT ?venue (GROUP_CONCAT(?attach) as ?attachments)
WHERE { 
        ?venue a ah:Venue ;
               ah:room ?room ;
               ah:attachment ?attach . 
}
GROUP BY ?venue

OPTIONAL句内にある変数を集約する場合、違いはありません。

于 2012-11-05T07:22:27.873 に答える