im@sparqlのトップページにあるこの入力フォームは、実際にクエリを入力してその結果を知るためのものです。
目的とする結果が得られるまでは、こちらのフォームで試すと良いです。
サイトに入ったときにすでに入力されているクエリはこちらです
上部にある
PREFIX
は、その名の通り接頭辞を宣言しています。
RDFではデータを、トリプル(Triple)と呼んでいる主語・述語・目的語の3つの関係で表現しています。これらは全てIRIで表すことができます。
そのIRIは、長く、何度も出てきて冗長になってしまうため、PREFIX
を使って省略することができます。
PREFIX imas: <https://sparql.crssnky.xyz/imasrdf/URIs/imas-schema.ttl#>
つまりこの行は、https~
を、今後はimas:
で表しますよ~と宣言しています。
もし、その後imas:Idol
という文字列が出てきたら、それはhttps://sparql.crssnky.xyz/imasrdf/URIs/imas-schema.ttl#Idol
として解釈されます。
下部あるSQLに似ている所が実際のクエリです。
SQLと同じように、SELECT
以下は表示したい変数を指定するところです。
distinct
などのSQLにも存在するキーワードが使える場合があります。詳しくはこちらから。
WHERE
以下は条件を設定するところです。
SPARQLでは、頭に「?」を付けた文字列を変数として認識します。im@sparqlが建っているApache JenaのFuseki2では、マルチバイト文字も変数として利用できます。なので、上記のサンプルクエリでも正常に動作します。
12行目の?主語 ?述語 ?目的語.
は、トリプル全てに対して条件無しで受け入れることになります。
一方で13行目の?述語 rdfs:label ?述語名
は、述語がrdfs:label
のものだけを受け入れることになります。また、この行のトリプルの主語である?述語
(ややこしいな)は、12行目のトリプルの述語の変数?述語
と同じため、このとき検索されるトリプルの主語としての?述語
はトリプルの述語として利用されたもののみとなります。
さらに、13行目に現れるoptional
句は、そのスコープ内の条件を満たさなくてもスコープ外の条件さえ満たしていれば検索に引っかけられるようにするものです。言い換えれば、「optionalの条件に合うものもあれば結果に付け足しといて。あればでいいから。」ということです。
14行目は、WHERE
を閉じ、得られた結果に対してorder
でソートを指定しています。ルールについてはドキュメントをご覧ください。
以上より、このクエリの内容を日本語で表現するとすれば、
「データベース内のトリプルを無条件に取得し、その中で述語(?述語
)を主語とした時にrdfs:label
という述語を持つものがあれば、その時の目的語(?述語名
)も取得する。その結果を述語(?述語
)に対するソートを行い、?述語
、?述語名
の組み合わせを被りなしで表示する。」
というものになります。結果はこちら。
取得できる結果は、im@sparqlで使われている述語と、取得できればその述語の名前になります。