From 5ee32135712f1ef7ca25bfd80f7887e7901f1188 Mon Sep 17 00:00:00 2001 From: Babibubebon Date: Fri, 9 Sep 2022 19:30:51 +0000 Subject: [PATCH] deploy: 148ebbc910aca8cdb229b5dfef80a9e4fb76f333 --- 404.html | 2 +- categories/index.html | 2 +- docs/federated_query/index.html | 10 +++++----- docs/index.html | 2 +- docs/index.xml | 2 +- docs/mediaartsdb/index.html | 6 +++--- docs/start/index.html | 8 ++++---- docs/useful-datasets/index.html | 2 +- docs/wikidata/index.html | 14 +++++++------- ...2b34c123454e93e7f00ec739195514b07b36cd0814.json | 1 - ...f944edef96ebfcbbf59376903110298610a1d4c8fa.json | 1 + ...f5d9bab0787571d16a86d5b2bfffcf1005b6a2b028aa.js | 2 +- index.html | 2 +- index.xml | 2 +- tags/index.html | 2 +- 15 files changed, 29 insertions(+), 29 deletions(-) delete mode 100644 en.search-data.min.17cda3e00021431c8795942b34c123454e93e7f00ec739195514b07b36cd0814.json create mode 100644 en.search-data.min.188d535b25168ca9b43c9ef944edef96ebfcbbf59376903110298610a1d4c8fa.json rename en.search.min.04bc0cab1d5828e66a6f4908fc1a8a7e2ed9741e98846707d97542aba9237dd1.js => en.search.min.118040dfcdc218686ebaf5d9bab0787571d16a86d5b2bfffcf1005b6a2b028aa.js (90%) diff --git a/404.html b/404.html index 0826bec..331611c 100644 --- a/404.html +++ b/404.html @@ -1,2 +1,2 @@ 404 Page not found | 文化・芸術とLOD ハンズオン -

404

Page Not Found

文化・芸術とLOD ハンズオン

\ No newline at end of file +

404

Page Not Found

文化・芸術とLOD ハンズオン

\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 0a88759..3b1f15f 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,5 +1,5 @@ Categories | 文化・芸術とLOD ハンズオン - +
Categories diff --git a/docs/federated_query/index.html b/docs/federated_query/index.html index 41b74f2..e063da5 100644 --- a/docs/federated_query/index.html +++ b/docs/federated_query/index.html @@ -7,12 +7,12 @@ federatedクエリを利用したクエリを紹介します。 SPARQLクエリエディタ # クエリ集 # 作品の多言語のタイトルを取得する # https://mediaarts-db.bunka.go.jp/id/C413599 P7886(メディア芸術データベース識別子) 1PREFIX rdfs: 2PREFIX schema: 3PREFIX ma: 4PREFIX wdt: 5 6SELECT 7 ?MADBLabel ?label (LANG(?label) AS ?lang) ?wikidataEntity 8WHERE { 9 10 schema:identifier ?MADBID ; 11 rdfs:label ?MADBLabel . 12 # Wikidataへクエリ 13 SERVICE { 14 # P7886: メディア芸術データベース識別子 15 ?wikidataEntity wdt:P7886 ?MADBID ; 16 rdfs:label ?label . 17 } 18} ▶ 実行する メディア芸術データベースの責任主体の法人番号を取得する # Wikidataとメディア芸術データベースを連携したfederatedクエリ">複数エンドポイントの横断的活用 | 文化・芸術とLOD ハンズオン - +

複数エンドポイントの横断的活用 #

SPARQLでは、1つのエンドポイントだけでなく、外部の複数のエンドポイントに対してクエリを実行することができるfederatedクエリという仕組みがあります。

federatedクエリを利用したクエリを紹介します。

SPARQLクエリエディタ #


クエリ集 #

作品の多言語のタイトルを取得する @@ -166,8 +166,8 @@ WHERE { schema:genre ?genre ; rdfs:label ?label . } -LIMIT 100`,"https://mediag.bunka.go.jp/sparql"),location.href="#yasgui-federated"'>▶ 実行する

federatedクエリの実行順序によっては、正しく結果が得られないことがあります。

RDFストアによっては、クエリオプティマイザに実行順序を指示する方法が用意されており、メディア芸術データベースのSPARQLクエリサービスが使用しているAmazon Neptuneでは hint:Query hint:joinOrder "Ordered" . というパターンを記述します。

参照: Amazon Neptune: SPARQL クエリヒント

「タイムトラベルを題材とした作品」を取得する -#

DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ

 1PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+LIMIT 100`,"https://mediag.bunka.go.jp/sparql"),location.href="#yasgui-federated"'>▶ 実行する

クエリは必ずしも上から順番に実行されるとは限らないため、federatedクエリの実行順序次第では非常に時間がかかる処理となり、結果が返ってこない場合があります。

RDFストアによってはクエリオプティマイザに実行順序を指示する方法が用意されており、メディア芸術データベースのSPARQLクエリサービスが使用しているAmazon Neptuneでは hint:Query hint:joinOrder "Ordered" . というパターンを記述します。

参照: Amazon Neptune: SPARQL クエリヒント

「タイムトラベルを題材とした作品」を取得する +#

DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ

 1PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
  2PREFIX owl: <http://www.w3.org/2002/07/owl#>
  3PREFIX dcterms: <http://purl.org/dc/terms/>
  4PREFIX schema: <https://schema.org/>
@@ -236,4 +236,4 @@ WHERE {
 LIMIT 200`,"https://mediag.bunka.go.jp/sparql"),location.href="#yasgui-federated"'>▶ 実行する

Wikipediaのカテゴリは上記のようなクエリで汎用的に使うことができます。

他にも以下のようなカテゴリを使うことで、いわゆる「聖地」による作品のキュレーションとして活用することができます。


クリエイティブ・コモンズ・ライセンス -By Shohei TOYOTA
この作品はクリエイティブ・コモンズ 表示 - 継承 4.0 国際ライセンスの下に提供されています。
\ No newline at end of file +By Shohei TOYOTA
この作品はクリエイティブ・コモンズ 表示 - 継承 4.0 国際ライセンスの下に提供されています。
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index c6754b2..289e4f0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,5 @@ Docs | 文化・芸術とLOD ハンズオン - +
Docs diff --git a/docs/index.xml b/docs/index.xml index 61a1ff2..d8d66a8 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -1,5 +1,5 @@ Docs on 文化・芸術とLOD ハンズオンhttps://lodc2022-culture-art.metadata.moe/docs/Recent content in Docs on 文化・芸術とLOD ハンズオンHugo -- gohugo.ioja-jpはじめにhttps://lodc2022-culture-art.metadata.moe/docs/start/Mon, 01 Jan 0001 00:00:00 +0000https://lodc2022-culture-art.metadata.moe/docs/start/はじめに # 本ハンズオンでは、LOD(Linked Open Data)として公開されている文化・芸術に関する情報に対して、 クエリ言語SPARQLを用いた活用方法をご紹介します。 -実際の公開SPARQLエンドポイントを利用して、簡単なデータを取得するクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。 +実際の公開SPARQLエンドポイントを利用して、データを取得する簡単なクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。 事前準備 # WebブラウザがあればOKです。 SPARQLをはじめて扱う方は、導入として以下の資料などを参照していただくのがオススメです。 Linked Open Data 勉強会2020 資料 - SPARQLの簡単な使い方 ナレッジグラフ推論チャレンジ2021「技術勉強会」 - ナレッジグラフ(RDF)の基礎/ナレッジグラフ(RDF)用クエリ言語SPARQLの基礎 クエリの仕様 # 本ハンズオンでは、基本的にSPARQL 1.1に準拠したクエリを扱います。 diff --git a/docs/mediaartsdb/index.html b/docs/mediaartsdb/index.html index a91f9ac..9147335 100644 --- a/docs/mediaartsdb/index.html +++ b/docs/mediaartsdb/index.html @@ -3,7 +3,7 @@ SPARQLクエリサービス データセット (Turtle, JSON-LD) GitHubリポジトリ スキーマ仕様書 Ver. 1.1 独自に定義する語彙 クラス プロパティ SPARQLクエリエディタ # Endpoint: https://mediag.bunka.go.jp/sparql クエリ集 # 全リソースを種別ごとに集計する # 1PREFIX schema: 2PREFIX class: 3 4SELECT 5 ?additionalType ?class ?genre (COUNT(*) AS ?count) 6WHERE { 7 ?resource a ?class; 8 schema:additionalType ?additionalType ; 9 schema:genre ?genre . 10} 11GROUP BY ?class ?additionalType ?genre 12ORDER BY ?additionalType ▶ 実行する マンガ単行本「鬼滅の刃 1 」の情報を取得する # https://mediaarts-db.">メディア芸術データベース | 文化・芸術とLOD ハンズオン - +
@@ -87,7 +87,7 @@ WHERE { schema:datePublished ?datePublished . } LIMIT 1000`,""),location.href="#yasgui-madb-lod"'>▶ 実行する

マンガ単行本とその所蔵館の一覧を取得する -#

https://mediaarts-db.bunka.go.jp/id/M464950 を主語とするTurtle形式のRDFデータ

 1<https://mediaarts-db.bunka.go.jp/id/M464950>
+#

https://mediaarts-db.bunka.go.jp/id/M464950 を主語とするTurtle形式のRDFデータ1

 1<https://mediaarts-db.bunka.go.jp/id/M464950>
  2        a                      class:MangaBook ;
  3        rdfs:label             "鬼滅の刃 1" ;
  4        schema:identifier      "M464950" ;
@@ -421,6 +421,6 @@ WHERE {
   # 役割名だけを抽出する
   BIND(REPLACE(?contributers, \u0022.*\\\\[(.\u002b?)\\\\]新海[\\\\s ]*誠.*\u0022, \u0022\$1\u0022) AS ?role)
 }
-GROUP BY ?series ?seriesName`,""),location.href="#yasgui-madb-lod"'>▶ 実行する
\ No newline at end of file diff --git a/docs/start/index.html b/docs/start/index.html index 7d1eb24..65ebfaf 100644 --- a/docs/start/index.html +++ b/docs/start/index.html @@ -1,20 +1,20 @@ はじめに | 文化・芸術とLOD ハンズオン - +
はじめに

はじめに #

本ハンズオンでは、LOD(Linked Open Data)として公開されている文化・芸術に関する情報に対して、 -クエリ言語SPARQLを用いた活用方法をご紹介します。

実際の公開SPARQLエンドポイントを利用して、簡単なデータを取得するクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。

事前準備 +クエリ言語SPARQLを用いた活用方法をご紹介します。

実際の公開SPARQLエンドポイントを利用して、データを取得する簡単なクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。

事前準備 #

WebブラウザがあればOKです。

SPARQLをはじめて扱う方は、導入として以下の資料などを参照していただくのがオススメです。

クエリの仕様 #

本ハンズオンでは、基本的にSPARQL 1.1に準拠したクエリを扱います。

ただし、一部のSPARQLエンドポイントにおいては、特定のRDFストアの実装に依存した機能を利用することがあります。

\ No newline at end of file diff --git a/en.search-data.min.17cda3e00021431c8795942b34c123454e93e7f00ec739195514b07b36cd0814.json b/en.search-data.min.17cda3e00021431c8795942b34c123454e93e7f00ec739195514b07b36cd0814.json deleted file mode 100644 index 307eb4e..0000000 --- a/en.search-data.min.17cda3e00021431c8795942b34c123454e93e7f00ec739195514b07b36cd0814.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":0,"href":"/docs/start/","title":"はじめに","section":"Docs","content":" はじめに # 本ハンズオンでは、LOD(Linked Open Data)として公開されている文化・芸術に関する情報に対して、 クエリ言語SPARQLを用いた活用方法をご紹介します。\n実際の公開SPARQLエンドポイントを利用して、簡単なデータを取得するクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。\n事前準備 # WebブラウザがあればOKです。\nSPARQLをはじめて扱う方は、導入として以下の資料などを参照していただくのがオススメです。\nLinked Open Data 勉強会2020 資料 - SPARQLの簡単な使い方 ナレッジグラフ推論チャレンジ2021「技術勉強会」 - ナレッジグラフ(RDF)の基礎/ナレッジグラフ(RDF)用クエリ言語SPARQLの基礎 クエリの仕様 # 本ハンズオンでは、基本的にSPARQL 1.1に準拠したクエリを扱います。\nSPARQL 1.1 Query Language ただし、一部のSPARQLエンドポイントにおいては、特定のRDFストアの実装に依存した機能を利用することがあります。\n"},{"id":1,"href":"/docs/mediaartsdb/","title":"メディア芸術データベース","section":"Docs","content":" メディア芸術データベース(ベータ版) # https://mediaarts-db.bunka.go.jp/\nメディア芸術データベース・ラボ (MADB Lab) # https://mediag.bunka.go.jp/madb_lab/\nSPARQLクエリサービス データセット (Turtle, JSON-LD) GitHubリポジトリ スキーマ仕様書 Ver. 1.1 独自に定義する語彙 クラス プロパティ SPARQLクエリエディタ # Endpoint: https://mediag.bunka.go.jp/sparql クエリ集 # 全リソースを種別ごとに集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3 4SELECT 5 ?additionalType ?class ?genre (COUNT(*) AS ?count) 6WHERE { 7 ?resource a ?class; 8 schema:additionalType ?additionalType ; 9 schema:genre ?genre . 10} 11GROUP BY ?class ?additionalType ?genre 12ORDER BY ?additionalType ▶ 実行する マンガ単行本「鬼滅の刃 1 」の情報を取得する # https://mediaarts-db.bunka.go.jp/id/M464950\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4 5SELECT * 6WHERE { 7 \u0026lt;https://mediaarts-db.bunka.go.jp/id/M464950\u0026gt; ?p ?o . 8} ▶ 実行する マンガ単行本の一覧を取得する # 「マンガ単行本」を表すクラス https://mediaarts-db.bunka.go.jp/data/class#MangaBook\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7 ?id ?label ?creator ?datePublished 8WHERE { 9 ?item a class:MangaBook ; 10 schema:identifier ?id ; 11 rdfs:label ?label ; 12 schema:creator ?creator ; 13 schema:datePublished ?datePublished . 14} 15LIMIT 1000 ▶ 実行する マンガ単行本とその所蔵館の一覧を取得する # https://mediaarts-db.bunka.go.jp/id/M464950 を主語とするTurtle形式のRDFデータ\n1\u0026lt;https://mediaarts-db.bunka.go.jp/id/M464950\u0026gt; 2 a class:MangaBook ; 3 rdfs:label \u0026#34;鬼滅の刃 1\u0026#34; ; 4 schema:identifier \u0026#34;M464950\u0026#34; ; 5 schema:additionalType class:CM ; 6 schema:genre \u0026#34;マンガ単行本\u0026#34; ; 7 dcterms:creator \u0026lt;https://mediaarts-db.bunka.go.jp/id/C53400\u0026gt; ; 8 dcterms:publisher \u0026#34;P4080000000\u0026#34; ; 9 ma:jpno \u0026#34;22740403\u0026#34; ; 10 ma:ndc \u0026#34;726.1\u0026#34; ; 11 ma:note \u0026#34;【言語】日本語 / JPN\u0026#34; ; 12 schema:alternateName \u0026#34;残酷\u0026#34; ; 13 schema:brand \u0026#34;ジャンプコミックス\u0026#34; , \u0026#34;ジャンプ コミックス\u0026#34;@ja-Hrkt-Hrkt ; 14 schema:creator \u0026#34;[著]吾峠呼世晴\u0026#34; ; 15 schema:datePublished \u0026#34;2016-06-08\u0026#34; ; 16 schema:description \u0026#34;残酷\u0026#34; ; 17 schema:inLanguage \u0026#34;日本語\u0026#34; ; 18 schema:isPartOf \u0026lt;https://mediaarts-db.bunka.go.jp/id/C361806\u0026gt; ; 19 schema:isbn \u0026#34;9784088807232\u0026#34; ; 20 schema:location \u0026#34;東京\u0026#34; ; 21 schema:name \u0026#34;キメツ ノ ヤイバ\u0026#34;@ja-Hrkt-Hrkt , \u0026#34;鬼滅の刃\u0026#34; ; 22 schema:position \u0026#34;1.0\u0026#34; ; 23 schema:provider [ ma:materialIdentifier \u0026lt;https://id.ndl.go.jp/bib/027321240\u0026gt; ; 24 ma:note \u0026#34;2016-06\u0026#34; ; 25 ma:ownerIdentifier \u0026#34;2\u0026#34; ; 26 ma:subMaterialIdentifier \u0026#34;1\u0026#34; ; 27 schema:name \u0026#34;国立国会図書館\u0026#34; ; 28 schema:price \u0026#34;400円\u0026#34; 29 ] ; 30 schema:provider [ ma:materialIdentifier \u0026#34;10071400016547\u0026#34; ; 31 ma:note \u0026#34;1刷 / 付:帯・カバー / 付:「ジャンパラ!」(JUMP PARADISE) Vol.156\u0026#34; ; 32 ma:ownerIdentifier \u0026#34;6\u0026#34; ; 33 ma:subMaterialIdentifier \u0026#34;1\u0026#34; ; 34 schema:name \u0026#34;大阪府立中央図書館国際児童文学館\u0026#34; ; 35 schema:price \u0026#34;400円\u0026#34; 36 ] ; 37 schema:publisher \u0026#34;集英社 ∥ シュウエイシャ\u0026#34; ; 38 schema:size \u0026#34;18cm / 18cm × 12cm\u0026#34; ; 39 schema:volumeNumber \u0026#34;1\u0026#34; . 空白ノードの構文を使ってパターンを指定します。\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7 ?id ?label ?creator ?datePublished ?providerName 8WHERE { 9 ?item a class:MangaBook ; 10 schema:identifier ?id ; 11 rdfs:label ?label ; 12 schema:creator ?creator ; 13 schema:datePublished ?datePublished ; 14 schema:provider [ 15 schema:name ?providerName 16 ] . 17} 18LIMIT 1000 ▶ 実行する 参考: MADB Lab: データ利活用例その2:マンガの連携機関所蔵リスト\nマンガ雑誌単号の掲載内容を取得する # https://mediaarts-db.bunka.go.jp/id/M701954\n1PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 4PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 5PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 6 7SELECT 8 ?magazineLabel ?pageStart ?pageEnd ?name ?alternativeHeadline 9WHERE { 10 \u0026lt;https://mediaarts-db.bunka.go.jp/id/M701954\u0026gt; 11 rdfs:label ?magazineLabel ; 12 schema:hasPart ?part . 13 14 ?part schema:name ?name ; 15 schema:pageStart ?pageStart ; 16 schema:pageEnd ?pageEnd ; 17 ma:pageExclude ?pageExclude . 18 OPTIONAL { 19 ?part schema:alternativeHeadline ?alternativeHeadline . 20 } 21} 22ORDER BY xsd:float(?pageStart) ▶ 実行する 「魔法少女」を含むタイトルを検索する # CONTAINS 関数を使って、文字列の部分一致を条件に指定します。\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4 5SELECT * 6WHERE { 7 ?s rdfs:label ?label ; 8 schema:genre ?genre . 9 FILTER CONTAINS(?label, \u0026#34;魔法少女\u0026#34;) 10} 11LIMIT 100 ▶ 実行する 「マリオ」が登場する作品のゲームパッケージ # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 5 6SELECT ?gamePackage ?gamePackageLabel 7WHERE { 8 ?gamePackage ma:embodimentOf ?gameVariation ; 9 rdfs:label ?gamePackageLabel . 10 ?gameVariation ma:variationOf ?gameWork . 11 ?gameWork schema:character ?character . 12 FILTER (CONTAINS(?character, \u0026#34;マリオ\u0026#34;)) 13} ▶ 実行する 発行者毎にマンガ雑誌単号の数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4 5SELECT ?publisher (COUNT(*) AS ?count) WHERE { 6 ?アイテム a class:MangaMagazineIssue ; 7 schema:publisher ?publisher 8} 9GROUP BY ?publisher 10HAVING (COUNT(*) \u0026gt;= 100) 11ORDER BY DESC(COUNT(*)) ▶ 実行する ゲームプラットフォーム毎にゲームパッケージ数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?platform (COUNT(*) AS ?count) WHERE { 7 ?s a class:GamePackage ; 8 schema:gamePlatform ?platform . 9} 10GROUP BY ?platform 11ORDER BY DESC(?count) ▶ 実行する 公開年毎にTVアニメシリーズ数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?y (COUNT(DISTINCT *) AS ?count) WHERE { 7 ?s a class:AnimationTVRegularSeries ; 8 schema:datePublished ?datePublished . 9} 10GROUP BY (SUBSTR(?datePublished, 1, 4) AS ?y) 11ORDER BY ASC(?y) ▶ 実行する タイトルに「!」「?」を多く含むTVアニメシリーズを取得する # REGEX 関数を使って正規表現パターンに一致する文字列を検索します。\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?name ?mark (STRLEN(?mark) AS ?length) WHERE { 7 ?s a class:AnimationTVRegularSeries ; 8 rdfs:label ?name . 9 FILTER(LANG(?name) = \u0026#34;\u0026#34;) 10 FILTER (REGEX(?name, \u0026#34;[!!\\\\??]+\u0026#34;)) 11 # 記号部分を抽出 12 BIND (REPLACE(?name, \u0026#34;[^!!\\\\??]*([!!\\\\??]+)[^!!\\\\??]*\u0026#34;, \u0026#34;$1\u0026#34;) AS ?mark) 13} 14ORDER BY DESC(STRLEN(?mark)) 15LIMIT 100 ▶ 実行する ※ 現在『てっぺんっ!!!!!!!!!!!!!!!』という「!」を15個含むタイトルのアニメが放送されており、恐らく過去最多を更新しました。\n登場キャラクター名がタイトルであるアニメ # schema:actor の値として以下のような形式で記述されていることを利用し、正規表現を用いて検索します。\n【キャラクター名】キャスト名 / 【キャラクター名】キャスト名 ... 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5SELECT 6\t?series ?genre ?seriesName ?actors 7WHERE { 8 ?series a ?animeColClasses ; 9 schema:name ?seriesName ; 10 schema:genre ?genre ; 11 schema:actor ?actors . 12 VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries} 13 FILTER(LANG(?seriesName) = \u0026#34;\u0026#34;) 14 # タイトルがキャラクター名と同じ 15 FILTER(REGEX(?actors, CONCAT(\u0026#34;【\u0026#34;, ?seriesName ,\u0026#34;】\u0026#34;))) 16} ▶ 実行する 新海誠さんの参加作品を取得する # schema:contributor の値として以下のような形式で記述されていることを利用し、正規表現を用いて検索します。\n[役割名]スタッフ名 / [役割名]スタッフ名 ... 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7\t?series ?seriesName (GROUP_CONCAT(DISTINCT ?role) AS ?roles) 8WHERE { 9 ?series a ?animeColClasses ; 10 schema:name ?seriesName ; 11 schema:genre ?genre ; 12 ^schema:isPartOf ?item . 13 VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries} 14 { 15 ?series schema:contributor ?contributers . 16 } UNION { 17 ?item schema:contributor ?contributers . 18 } 19 FILTER(LANG(?seriesName) = \u0026#34;\u0026#34;) 20 FILTER(REGEX(?contributers, \u0026#34;新海[\\\\s ]*誠\u0026#34;)) 21 # 役割名だけを抽出する 22 BIND(REPLACE(?contributers, \u0026#34;.*\\\\[(.+?)\\\\]新海[\\\\s ]*誠.*\u0026#34;, \u0026#34;$1\u0026#34;) AS ?role) 23} 24GROUP BY ?series ?seriesName ▶ 実行する "},{"id":2,"href":"/docs/wikidata/","title":"Wikidata","section":"Docs","content":" Wikidata # https://www.wikidata.org/\nWikidata Query Service ウィキデータ:SPARQLチュートリアル Wikidata:SPARQLクエリサービス/クエリ/例 データモデル Wikibase/DataModel/Primer Wikibase/Indexing/RDF Dump Format SPARQLクエリエディタ # Endpoint: https://query.wikidata.org/sparql 文化・芸術系に関係のあるクラス # クラスについて: Help:基本構成プロパティ\nQ838948 (芸術作品) Q7725634 (文学作品) Q747381 (ライトノベル) Q104213567 (ライトノベルシリーズ) Q8274 (日本の漫画) Q21198342 (日本の連載漫画) Q21202185 (日本の読み切り漫画) Q4502142 (視覚芸術作品) Q11424 (映画) Q1107 (日本のアニメ) Q581714 (アニメシリーズ) Q63952888 (テレビアニメシリーズ) Q11086742 (テレビアニメ) Q202866 (アニメーション映画) Q220898 (OVA) Q7889 (コンピュータゲーム) \u0026hellip;\n「芸術作品」の下位クラスを探す # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT 8 ?entity ?entityLabel 9WHERE { 10 # \u0026#34;芸術作品\u0026#34; の下位クラス 11 ?entity wdt:P279* wd:Q838948 . 12 FILTER EXISTS { ?s wdt:P31 ?entity . } 13 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 14} 15LIMIT 1000 ▶ 実行する 「日本のアニメおよび漫画」の一部分・下位クラスを探す # Q10901350 (日本のアニメおよび漫画)\n1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT 8 ?entity ?entityLabel 9WHERE { 10 # \u0026#34;日本のアニメおよび漫画\u0026#34; の下位クラス 11 # \u0026#34;日本のアニメおよび漫画\u0026#34; の一部分であるクラス 12 # \u0026#34;日本のアニメおよび漫画\u0026#34; の一部分であるクラスの下位クラス 13 ?entity wdt:P279*/wdt:P361* wd:Q10901350 . 14 FILTER EXISTS { ?s wdt:P31 ?entity . } 15 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 16} ▶ 実行する 文化・芸術系に関係のあるプロパティ # Wikidata:List of properties/art 美術関連プロパティ (Q27918607) メディア芸術データベースとのリンク # P7886 (メディア芸術データベース識別子) 使用例 # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT ?item ?itemLabel ?value 8{ 9 ?item wdt:P7886 ?value . 10 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;ja,en\u0026#34; } 11} 12LIMIT 1000 ▶ 実行する クラスごとの使用数 # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7#top 50 for P31 and P279 of items using P7886 8SELECT ?class ?classLabel ?count ?use_as_Label 9{ { SELECT ?class (COUNT(*) AS ?count) (wd:P31 as ?use_as_) 10 { ?a wdt:P7886 ?p ; wdt:P31 ?class} 11 GROUP BY ?class ORDER BY DESC(?count) LIMIT 50 12 } 13 UNION 14 { SELECT ?class (COUNT(*) AS ?count) (wd:P279 as ?use_as_) 15 { ?a wdt:P7886 ?p ; wdt:P279 ?class} 16 GROUP BY ?class ORDER BY DESC(?count) LIMIT 50 17 } 18 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;ja,en\u0026#34; } 19} 20ORDER BY DESC(?count) ?class ▶ 実行する クエリ例 # 2020年に公開された邦画 # P31 (分類, instance of) P495 (本国) P577 (出版日) 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT DISTINCT ?item ?itemLabel 8WHERE { 9 ?item wdt:P31 wd:Q11424 ; # 映画 10 wdt:P495 wd:Q17 ; # 日本 11 wdt:P577 ?pubdate . 12 FILTER((?pubdate \u0026gt;= \u0026#34;2020-01-01T00:00:00Z\u0026#34;^^xsd:dateTime) \u0026amp;\u0026amp; (?pubdate \u0026lt;= \u0026#34;2020-12-31T00:00:00Z\u0026#34;^^xsd:dateTime)) 13 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 14} ▶ 実行する wd:Q11424 を wd:Q7889 (コンピュータゲーム) など、別のクラスに変えて試してみる。\n映画とその物語の場所を地図上に # P840 (物語の舞台) P625 (位置座標) 1#defaultView:Map 2SELECT ?movie ?movieLabel ?narrative_location ?narrative_locationLabel ?coordinates 3WHERE { 4 ?movie wdt:P840 ?narrative_location ; 5 wdt:P495 wd:Q17 ; # 日本 6 wdt:P31 wd:Q11424 . # 映画 7 ?narrative_location wdt:P625 ?coordinates . 8 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 9} Wikidata Query Serviceで実行 Ref. Wikidata:SPARQLクエリサービス/クエリ/例#映画とその物語の場所を地図上により\nSFライトノベル # P31 (分類, instance of) P279 (上位クラス) P136 (ジャンル) Q747381 (ライトノベル) Q9326077 (スペキュレイティブ・フィクション ) 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT DISTINCT ?item ?itemLabel 8WHERE { 9 ?item wdt:P31/wdt:P279* wd:Q747381 ; # ライトノベル 10 wdt:P136/wdt:P279* wd:Q9326077 . # スペキュレイティブ・フィクション 11 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 12} ▶ 実行する "},{"id":3,"href":"/docs/federated_query/","title":"複数エンドポイントの横断的活用","section":"Docs","content":" 複数エンドポイントの横断的活用 # SPARQLでは、1つのエンドポイントだけでなく、外部の複数のエンドポイントに対してクエリを実行することができるfederatedクエリという仕組みがあります。\nfederatedクエリを利用したクエリを紹介します。\nSPARQLクエリエディタ # クエリ集 # 作品の多言語のタイトルを取得する # https://mediaarts-db.bunka.go.jp/id/C413599\nP7886(メディア芸術データベース識別子)\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5 6SELECT 7 ?MADBLabel ?label (LANG(?label) AS ?lang) ?wikidataEntity 8WHERE { 9 \u0026lt;https://mediaarts-db.bunka.go.jp/id/C413599\u0026gt; 10 schema:identifier ?MADBID ; 11 rdfs:label ?MADBLabel . 12 # Wikidataへクエリ 13 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 14 # P7886: メディア芸術データベース識別子 15 ?wikidataEntity wdt:P7886 ?MADBID ; 16 rdfs:label ?label . 17 } 18} ▶ 実行する メディア芸術データベースの責任主体の法人番号を取得する # Wikidataとメディア芸術データベースを連携したfederatedクエリ\n法人番号からさらにgBizINFOのSPARQLエンドポイントなどとも繋げられそうですね。\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5 6SELECT 7 ?agent ?name ?hojinBangou 8WHERE { 9 ?agent a class:Agent; 10 schema:name ?name ; 11 ma:wikidata ?wikidataPage . 12 # WikidataのリソースURIに変換 13 BIND (URI(REPLACE(?wikidataPage, \u0026#34;https://www.wikidata.org/wiki/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) AS ?wikidataEntity) 14 15 # Wikidata 16 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 17 # P3225: 法人番号 18 ?wikidataEntity wdt:P3225 ?hojinBangou ; 19 } 20} 21LIMIT 100 ▶ 実行する 「日本ゲーム大賞」を受賞したゲームを取得する # DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 3PREFIX dcterms: \u0026lt;http://purl.org/dc/terms/\u0026gt; 4PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 5PREFIX skos: \u0026lt;http://www.w3.org/2004/02/skos/core#\u0026gt; 6PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 7PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 8PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 9PREFIX hint: \u0026lt;http://aws.amazon.com/neptune/vocab/v01/QueryHints#\u0026gt; 10 11SELECT 12 ?MADBID ?genre ?label 13WHERE { 14 hint:Query hint:joinOrder \u0026#34;Ordered\u0026#34; . 15 # DBpedia Japanese 16 SERVICE \u0026lt;https://ja.dbpedia.org/sparql\u0026gt; { 17 SELECT DISTINCT 18 (URI(REPLACE(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) 19 AS ?wikidataEntity) 20 { 21 # 下位カテゴリを含める 22 \u0026lt;http://ja.dbpedia.org/resource/Category:日本ゲーム大賞受賞ソフト\u0026gt; ^skos:broader* ?category . 23 ?dbpediaEntity dcterms:subject ?category ; 24 ^owl:sameAs ?wikidataEntity . 25 FILTER(STRSTARTS(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;)) 26 } 27 } 28 # Wikidata 29 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 30 # P7886: メディア芸術データベース識別子 31 ?wikidataEntity wdt:P7886 ?MADBID . 32 } 33 # メディア芸術データベース 34 ?MADBResource schema:identifier ?MADBID ; 35 schema:genre ?genre ; 36 rdfs:label ?label . 37} 38LIMIT 100 ▶ 実行する federatedクエリの実行順序によっては、正しく結果が得られないことがあります。\nRDFストアによっては、クエリオプティマイザに実行順序を指示する方法が用意されており、メディア芸術データベースのSPARQLクエリサービスが使用しているAmazon Neptuneでは hint:Query hint:joinOrder \u0026quot;Ordered\u0026quot; . というパターンを記述します。\n参照: Amazon Neptune: SPARQL クエリヒント\n「タイムトラベルを題材とした作品」を取得する # DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 3PREFIX dcterms: \u0026lt;http://purl.org/dc/terms/\u0026gt; 4PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 5PREFIX skos: \u0026lt;http://www.w3.org/2004/02/skos/core#\u0026gt; 6PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 7PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 8PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 9PREFIX hint: \u0026lt;http://aws.amazon.com/neptune/vocab/v01/QueryHints#\u0026gt; 10 11SELECT 12 ?MADBID ?genre ?label 13WHERE { 14 hint:Query hint:joinOrder \u0026#34;Ordered\u0026#34; . 15 # DBpedia Japanese 16 SERVICE \u0026lt;https://ja.dbpedia.org/sparql\u0026gt; { 17 SELECT DISTINCT (URI(REPLACE(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) 18 AS ?wikidataEntity) { 19 \u0026lt;http://ja.dbpedia.org/resource/Category:タイムトラベルを題材とした作品\u0026gt; ^skos:broader* ?category . 20 ?dbpediaEntity dcterms:subject ?category; 21 ^owl:sameAs ?wikidataEntity . 22 FILTER(STRSTARTS(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;)) 23 } 24 } 25 # Wikidata 26 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 27 ?wikidataEntity wdt:P7886 ?MADBID . 28 } 29 # メディア芸術データベース 30 ?MADBResource schema:identifier ?MADBID ; 31 schema:genre ?genre ; 32 rdfs:label ?label . 33} 34LIMIT 200 ▶ 実行する Wikipediaのカテゴリは上記のようなクエリで汎用的に使うことができます。\n他にも以下のようなカテゴリを使うことで、いわゆる「聖地」による作品のキュレーションとして活用することができます。\nhttp://ja.dbpedia.org/resource/Category:湘南を舞台とした作品 Wikipedia: Category:湘南を舞台とした作品 http://ja.dbpedia.org/resource/Category:京都府を舞台とした作品 Wikipedia: Category:京都府を舞台とした作品 "},{"id":4,"href":"/docs/useful-datasets/","title":"SPARQLエンドポイントリスト","section":"Docs","content":" SPARQLエンドポイントリスト # ジャパンサーチ SPARQLエンドポイント: https://jpsearch.go.jp/rdf/sparql/ Cultural Japan SPARQLエンドポイント: http://ld.cultural.jp/sparql/ 国立公文書館デジタルアーカイブ SPARQLエンドポイント: https://www.digital.archives.go.jp/sparql ヨコハマ・アート・ナビ SPARQLエンドポイント: http://data.yafjp.org/sparql Europeana SPARQLエンドポイント: http://sparql.europeana.eu/ RCGSコレクション SPARQLエンドポイント: https://linkeddata.rcgs.jp バーチャルYouTuber LOD SPARQLエンドポイント: http://mdlab.slis.tsukuba.ac.jp/lodc2018/vtuber/query LODチャレンジ2018 テーマ賞 カルチャーLOD賞 im@sparql: アイドルマスター(アイマス) SPARQLエンドポイント: https://sparql.crssnky.xyz/spql/imas/query LODチャレンジ2018 データセット部門 優秀賞 PrismDB: プリティーシリーズ SPARQLエンドポイント: https://prismdb.takanakahiko.me/sparql Lemonade: アサルトリリィ SPARQLエンドポイント: https://luciadb.assaultlily.com/sparql/query LODチャレンジ2021 テーマ賞 カルチャーLOD賞 LuciaDB: https://github.com/Assault-Lily/LuciaDB 2022.07.24 アサルトリリィ関連情報を取り扱うファンサイト「Lemonade」が公認化!\nhttps://www.assaultlily.com/news/1405.html/ クエリ例 # ジャパンサーチ: 「手塚治虫」の著作を取得する # https://jpsearch.go.jp/rdf/sparql/ 1PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4PREFIX jps: \u0026lt;https://jpsearch.go.jp/term/property#\u0026gt; 5 6SELECT ?s ?label ?datePublished ?providerLabel 7WHERE { 8 ?s schema:creator/owl:sameAs* 9 \u0026lt;http://id.ndl.go.jp/auth/entity/00083890\u0026gt; ; 10 #\u0026lt;https://mediaarts-db.bunka.go.jp/id/C48012\u0026gt; ; 11 #\u0026lt;http://ja.dbpedia.org/resource/手塚治虫\u0026gt; ; 12 rdfs:label ?label ; 13 schema:datePublished ?datePublished ; 14 jps:sourceInfo [ 15 schema:provider/rdfs:label ?providerLabel ; 16 ] . 17} ▶ 実行する ジャパンサーチ: パブリックドメイン(CC0)な作品の画像を取得する # https://jpsearch.go.jp/rdf/sparql/ 1PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4PREFIX jps: \u0026lt;https://jpsearch.go.jp/term/property#\u0026gt; 5 6SELECT ?class ?label ?creatorLabel ?media WHERE { 7 ?s a ?class ; 8 schema:creator/rdfs:label ?creatorLabel ; 9 rdfs:label ?label ; 10 jps:accessInfo [ 11 schema:license \u0026lt;http://creativecommons.org/publicdomain/zero/1.0/\u0026gt; ; 12 schema:associatedMedia ?media ; 13 ] . 14} ▶ 実行する LuciaDB: レギオンとその所属リリィの数を集計する # https://luciadb.assaultlily.com/sparql/query 1PREFIX lilyrdf: \u0026lt;https://luciadb.assaultlily.com/rdf/RDFs/detail/\u0026gt; 2PREFIX lily: \u0026lt;https://luciadb.assaultlily.com/rdf/IRIs/lily_schema.ttl#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4 5SELECT 6 ?s ?name (COUNT(DISTINCT ?member) AS ?members) 7WHERE { 8 ?s a lily:Legion ; 9 schema:name ?name ; 10 schema:member ?member . 11 FILTER (LANG(?name) = \u0026#34;ja\u0026#34;) 12} 13GROUP BY ?s ?name ▶ 実行する "}] \ No newline at end of file diff --git a/en.search-data.min.188d535b25168ca9b43c9ef944edef96ebfcbbf59376903110298610a1d4c8fa.json b/en.search-data.min.188d535b25168ca9b43c9ef944edef96ebfcbbf59376903110298610a1d4c8fa.json new file mode 100644 index 0000000..7425bb6 --- /dev/null +++ b/en.search-data.min.188d535b25168ca9b43c9ef944edef96ebfcbbf59376903110298610a1d4c8fa.json @@ -0,0 +1 @@ +[{"id":0,"href":"/docs/start/","title":"はじめに","section":"Docs","content":" はじめに # 本ハンズオンでは、LOD(Linked Open Data)として公開されている文化・芸術に関する情報に対して、 クエリ言語SPARQLを用いた活用方法をご紹介します。\n実際の公開SPARQLエンドポイントを利用して、データを取得する簡単なクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。\n事前準備 # WebブラウザがあればOKです。\nSPARQLをはじめて扱う方は、導入として以下の資料などを参照していただくのがオススメです。\nLinked Open Data 勉強会2020 資料 - SPARQLの簡単な使い方 ナレッジグラフ推論チャレンジ2021「技術勉強会」 - ナレッジグラフ(RDF)の基礎/ナレッジグラフ(RDF)用クエリ言語SPARQLの基礎 クエリの仕様 # 本ハンズオンでは、基本的にSPARQL 1.1に準拠したクエリを扱います。\nSPARQL 1.1 Query Language ただし、一部のSPARQLエンドポイントにおいては、特定のRDFストアの実装に依存した機能を利用することがあります。\n"},{"id":1,"href":"/docs/mediaartsdb/","title":"メディア芸術データベース","section":"Docs","content":" メディア芸術データベース(ベータ版) # https://mediaarts-db.bunka.go.jp/\nメディア芸術データベース・ラボ (MADB Lab) # https://mediag.bunka.go.jp/madb_lab/\nSPARQLクエリサービス データセット (Turtle, JSON-LD) GitHubリポジトリ スキーマ仕様書 Ver. 1.1 独自に定義する語彙 クラス プロパティ SPARQLクエリエディタ # Endpoint: https://mediag.bunka.go.jp/sparql クエリ集 # 全リソースを種別ごとに集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3 4SELECT 5 ?additionalType ?class ?genre (COUNT(*) AS ?count) 6WHERE { 7 ?resource a ?class; 8 schema:additionalType ?additionalType ; 9 schema:genre ?genre . 10} 11GROUP BY ?class ?additionalType ?genre 12ORDER BY ?additionalType ▶ 実行する マンガ単行本「鬼滅の刃 1 」の情報を取得する # https://mediaarts-db.bunka.go.jp/id/M464950\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4 5SELECT * 6WHERE { 7 \u0026lt;https://mediaarts-db.bunka.go.jp/id/M464950\u0026gt; ?p ?o . 8} ▶ 実行する マンガ単行本の一覧を取得する # 「マンガ単行本」を表すクラス https://mediaarts-db.bunka.go.jp/data/class#MangaBook\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7 ?id ?label ?creator ?datePublished 8WHERE { 9 ?item a class:MangaBook ; 10 schema:identifier ?id ; 11 rdfs:label ?label ; 12 schema:creator ?creator ; 13 schema:datePublished ?datePublished . 14} 15LIMIT 1000 ▶ 実行する マンガ単行本とその所蔵館の一覧を取得する # https://mediaarts-db.bunka.go.jp/id/M464950 を主語とするTurtle形式のRDFデータ1\n1\u0026lt;https://mediaarts-db.bunka.go.jp/id/M464950\u0026gt; 2 a class:MangaBook ; 3 rdfs:label \u0026#34;鬼滅の刃 1\u0026#34; ; 4 schema:identifier \u0026#34;M464950\u0026#34; ; 5 schema:additionalType class:CM ; 6 schema:genre \u0026#34;マンガ単行本\u0026#34; ; 7 dcterms:creator \u0026lt;https://mediaarts-db.bunka.go.jp/id/C53400\u0026gt; ; 8 dcterms:publisher \u0026#34;P4080000000\u0026#34; ; 9 ma:jpno \u0026#34;22740403\u0026#34; ; 10 ma:ndc \u0026#34;726.1\u0026#34; ; 11 ma:note \u0026#34;【言語】日本語 / JPN\u0026#34; ; 12 schema:alternateName \u0026#34;残酷\u0026#34; ; 13 schema:brand \u0026#34;ジャンプコミックス\u0026#34; , \u0026#34;ジャンプ コミックス\u0026#34;@ja-Hrkt-Hrkt ; 14 schema:creator \u0026#34;[著]吾峠呼世晴\u0026#34; ; 15 schema:datePublished \u0026#34;2016-06-08\u0026#34; ; 16 schema:description \u0026#34;残酷\u0026#34; ; 17 schema:inLanguage \u0026#34;日本語\u0026#34; ; 18 schema:isPartOf \u0026lt;https://mediaarts-db.bunka.go.jp/id/C361806\u0026gt; ; 19 schema:isbn \u0026#34;9784088807232\u0026#34; ; 20 schema:location \u0026#34;東京\u0026#34; ; 21 schema:name \u0026#34;キメツ ノ ヤイバ\u0026#34;@ja-Hrkt-Hrkt , \u0026#34;鬼滅の刃\u0026#34; ; 22 schema:position \u0026#34;1.0\u0026#34; ; 23 schema:provider [ ma:materialIdentifier \u0026lt;https://id.ndl.go.jp/bib/027321240\u0026gt; ; 24 ma:note \u0026#34;2016-06\u0026#34; ; 25 ma:ownerIdentifier \u0026#34;2\u0026#34; ; 26 ma:subMaterialIdentifier \u0026#34;1\u0026#34; ; 27 schema:name \u0026#34;国立国会図書館\u0026#34; ; 28 schema:price \u0026#34;400円\u0026#34; 29 ] ; 30 schema:provider [ ma:materialIdentifier \u0026#34;10071400016547\u0026#34; ; 31 ma:note \u0026#34;1刷 / 付:帯・カバー / 付:「ジャンパラ!」(JUMP PARADISE) Vol.156\u0026#34; ; 32 ma:ownerIdentifier \u0026#34;6\u0026#34; ; 33 ma:subMaterialIdentifier \u0026#34;1\u0026#34; ; 34 schema:name \u0026#34;大阪府立中央図書館国際児童文学館\u0026#34; ; 35 schema:price \u0026#34;400円\u0026#34; 36 ] ; 37 schema:publisher \u0026#34;集英社 ∥ シュウエイシャ\u0026#34; ; 38 schema:size \u0026#34;18cm / 18cm × 12cm\u0026#34; ; 39 schema:volumeNumber \u0026#34;1\u0026#34; . 空白ノードの構文を使ってパターンを指定します。\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7 ?id ?label ?creator ?datePublished ?providerName 8WHERE { 9 ?item a class:MangaBook ; 10 schema:identifier ?id ; 11 rdfs:label ?label ; 12 schema:creator ?creator ; 13 schema:datePublished ?datePublished ; 14 schema:provider [ 15 schema:name ?providerName 16 ] . 17} 18LIMIT 1000 ▶ 実行する 参考: MADB Lab: データ利活用例その2:マンガの連携機関所蔵リスト\nマンガ雑誌単号の掲載内容を取得する # https://mediaarts-db.bunka.go.jp/id/M701954\n1PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 4PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 5PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 6 7SELECT 8 ?magazineLabel ?pageStart ?pageEnd ?name ?alternativeHeadline 9WHERE { 10 \u0026lt;https://mediaarts-db.bunka.go.jp/id/M701954\u0026gt; 11 rdfs:label ?magazineLabel ; 12 schema:hasPart ?part . 13 14 ?part schema:name ?name ; 15 schema:pageStart ?pageStart ; 16 schema:pageEnd ?pageEnd ; 17 ma:pageExclude ?pageExclude . 18 OPTIONAL { 19 ?part schema:alternativeHeadline ?alternativeHeadline . 20 } 21} 22ORDER BY xsd:float(?pageStart) ▶ 実行する 「魔法少女」を含むタイトルを検索する # CONTAINS 関数を使って、文字列の部分一致を条件に指定します。\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4 5SELECT * 6WHERE { 7 ?s rdfs:label ?label ; 8 schema:genre ?genre . 9 FILTER CONTAINS(?label, \u0026#34;魔法少女\u0026#34;) 10} 11LIMIT 100 ▶ 実行する 「マリオ」が登場する作品のゲームパッケージ # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 4PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 5 6SELECT ?gamePackage ?gamePackageLabel 7WHERE { 8 ?gamePackage ma:embodimentOf ?gameVariation ; 9 rdfs:label ?gamePackageLabel . 10 ?gameVariation ma:variationOf ?gameWork . 11 ?gameWork schema:character ?character . 12 FILTER (CONTAINS(?character, \u0026#34;マリオ\u0026#34;)) 13} ▶ 実行する 発行者毎にマンガ雑誌単号の数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4 5SELECT ?publisher (COUNT(*) AS ?count) WHERE { 6 ?アイテム a class:MangaMagazineIssue ; 7 schema:publisher ?publisher 8} 9GROUP BY ?publisher 10HAVING (COUNT(*) \u0026gt;= 100) 11ORDER BY DESC(COUNT(*)) ▶ 実行する ゲームプラットフォーム毎にゲームパッケージ数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?platform (COUNT(*) AS ?count) WHERE { 7 ?s a class:GamePackage ; 8 schema:gamePlatform ?platform . 9} 10GROUP BY ?platform 11ORDER BY DESC(?count) ▶ 実行する 公開年毎にTVアニメシリーズ数を集計する # 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?y (COUNT(DISTINCT *) AS ?count) WHERE { 7 ?s a class:AnimationTVRegularSeries ; 8 schema:datePublished ?datePublished . 9} 10GROUP BY (SUBSTR(?datePublished, 1, 4) AS ?y) 11ORDER BY ASC(?y) ▶ 実行する タイトルに「!」「?」を多く含むTVアニメシリーズを取得する # REGEX 関数を使って正規表現パターンに一致する文字列を検索します。\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT ?name ?mark (STRLEN(?mark) AS ?length) WHERE { 7 ?s a class:AnimationTVRegularSeries ; 8 rdfs:label ?name . 9 FILTER(LANG(?name) = \u0026#34;\u0026#34;) 10 FILTER (REGEX(?name, \u0026#34;[!!\\\\??]+\u0026#34;)) 11 # 記号部分を抽出 12 BIND (REPLACE(?name, \u0026#34;[^!!\\\\??]*([!!\\\\??]+)[^!!\\\\??]*\u0026#34;, \u0026#34;$1\u0026#34;) AS ?mark) 13} 14ORDER BY DESC(STRLEN(?mark)) 15LIMIT 100 ▶ 実行する ※ 現在『てっぺんっ!!!!!!!!!!!!!!!』という「!」を15個含むタイトルのアニメが放送されており、恐らく過去最多を更新しました。\n登場キャラクター名がタイトルであるアニメ # schema:actor の値として以下のような形式で記述されていることを利用し、正規表現を用いて検索します。\n【キャラクター名】キャスト名 / 【キャラクター名】キャスト名 ... 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5SELECT 6\t?series ?genre ?seriesName ?actors 7WHERE { 8 ?series a ?animeColClasses ; 9 schema:name ?seriesName ; 10 schema:genre ?genre ; 11 schema:actor ?actors . 12 VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries} 13 FILTER(LANG(?seriesName) = \u0026#34;\u0026#34;) 14 # タイトルがキャラクター名と同じ 15 FILTER(REGEX(?actors, CONCAT(\u0026#34;【\u0026#34;, ?seriesName ,\u0026#34;】\u0026#34;))) 16} ▶ 実行する 新海誠さんの参加作品を取得する # schema:contributor の値として以下のような形式で記述されていることを利用し、正規表現を用いて検索します。\n[役割名]スタッフ名 / [役割名]スタッフ名 ... 1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX rdf: \u0026lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#\u0026gt; 3PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 4PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 5 6SELECT 7\t?series ?seriesName (GROUP_CONCAT(DISTINCT ?role) AS ?roles) 8WHERE { 9 ?series a ?animeColClasses ; 10 schema:name ?seriesName ; 11 schema:genre ?genre ; 12 ^schema:isPartOf ?item . 13 VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries} 14 { 15 ?series schema:contributor ?contributers . 16 } UNION { 17 ?item schema:contributor ?contributers . 18 } 19 FILTER(LANG(?seriesName) = \u0026#34;\u0026#34;) 20 FILTER(REGEX(?contributers, \u0026#34;新海[\\\\s ]*誠\u0026#34;)) 21 # 役割名だけを抽出する 22 BIND(REPLACE(?contributers, \u0026#34;.*\\\\[(.+?)\\\\]新海[\\\\s ]*誠.*\u0026#34;, \u0026#34;$1\u0026#34;) AS ?role) 23} 24GROUP BY ?series ?seriesName ▶ 実行する メディア芸術データベース(ベータ版)データセット 2022年2月17日版(ver1.1)より\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n"},{"id":2,"href":"/docs/wikidata/","title":"Wikidata","section":"Docs","content":" Wikidata # https://www.wikidata.org/\nWikidata Query Service ウィキデータ:SPARQLチュートリアル Wikidata:SPARQLクエリサービス/クエリ/例 データモデル Wikibase/DataModel/Primer Wikibase/Indexing/RDF Dump Format SPARQLクエリエディタ # Endpoint: https://query.wikidata.org/sparql 文化・芸術系に関係のあるクラス # クラスについて: Help:基本構成プロパティ\nQ838948 (芸術作品) Q7725634 (文学作品) Q747381 (ライトノベル) Q104213567 (ライトノベルシリーズ) Q8274 (日本の漫画) Q21198342 (日本の連載漫画) Q21202185 (日本の読み切り漫画) Q4502142 (視覚芸術作品) Q11424 (映画) Q1107 (日本のアニメ) Q581714 (アニメシリーズ) Q63952888 (テレビアニメシリーズ) Q11086742 (テレビアニメ) Q202866 (アニメーション映画) Q220898 (OVA) Q7889 (コンピュータゲーム) \u0026hellip;\n「芸術作品」の下位クラスを探す # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT 8 ?entity ?entityLabel 9WHERE { 10 # \u0026#34;芸術作品\u0026#34; の下位クラス 11 ?entity wdt:P279* wd:Q838948 . 12 FILTER EXISTS { ?s wdt:P31 ?entity . } 13 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 14} 15LIMIT 1000 ▶ 実行する 「日本のアニメおよび漫画」の一部分・下位クラスを探す # Q10901350 (日本のアニメおよび漫画)\n1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT 8 ?entity ?entityLabel 9WHERE { 10 # \u0026#34;日本のアニメおよび漫画\u0026#34; の下位クラス 11 # \u0026#34;日本のアニメおよび漫画\u0026#34; の一部分であるクラス 12 # \u0026#34;日本のアニメおよび漫画\u0026#34; の一部分であるクラスの下位クラス 13 ?entity wdt:P279*/wdt:P361* wd:Q10901350 . 14 FILTER EXISTS { ?s wdt:P31 ?entity . } 15 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 16} ▶ 実行する 文化・芸術系に関係のあるプロパティ # Wikidata:List of properties/art 美術関連プロパティ (Q27918607) メディア芸術データベースとのリンク # P7886 (メディア芸術データベース識別子) 使用例 # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT ?item ?itemLabel ?value 8{ 9 ?item wdt:P7886 ?value . 10 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;ja,en\u0026#34; } 11} 12LIMIT 1000 ▶ 実行する クラスごとの使用数 # 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7#top 50 for P31 and P279 of items using P7886 8SELECT ?class ?classLabel ?count ?use_as_Label 9{ { SELECT ?class (COUNT(*) AS ?count) (wd:P31 as ?use_as_) 10 { ?a wdt:P7886 ?p ; wdt:P31 ?class} 11 GROUP BY ?class ORDER BY DESC(?count) LIMIT 50 12 } 13 UNION 14 { SELECT ?class (COUNT(*) AS ?count) (wd:P279 as ?use_as_) 15 { ?a wdt:P7886 ?p ; wdt:P279 ?class} 16 GROUP BY ?class ORDER BY DESC(?count) LIMIT 50 17 } 18 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;ja,en\u0026#34; } 19} 20ORDER BY DESC(?count) ?class ▶ 実行する クエリ例 # 2020年に公開された邦画 # P31 (分類, instance of) P495 (本国) P577 (出版日) 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT DISTINCT ?item ?itemLabel 8WHERE { 9 ?item wdt:P31 wd:Q11424 ; # 映画 10 wdt:P495 wd:Q17 ; # 日本 11 wdt:P577 ?pubdate . 12 FILTER((?pubdate \u0026gt;= \u0026#34;2020-01-01T00:00:00Z\u0026#34;^^xsd:dateTime) \u0026amp;\u0026amp; (?pubdate \u0026lt;= \u0026#34;2020-12-31T00:00:00Z\u0026#34;^^xsd:dateTime)) 13 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 14} ▶ 実行する wd:Q11424 を wd:Q7889 (コンピュータゲーム) など、別のクラスに変えて試してみる。\n映画とその物語の場所を地図上に # P840 (物語の舞台) P625 (位置座標) 1#defaultView:Map 2SELECT ?movie ?movieLabel ?narrative_location ?narrative_locationLabel ?coordinates 3WHERE { 4 ?movie wdt:P840 ?narrative_location ; 5 wdt:P495 wd:Q17 ; # 日本 6 wdt:P31 wd:Q11424 . # 映画 7 ?narrative_location wdt:P625 ?coordinates . 8 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 9} Wikidata Query Serviceで実行 Ref. Wikidata:SPARQLクエリサービス/クエリ/例#映画とその物語の場所を地図上により\nSFライトノベル # P31 (分類, instance of) P279 (上位クラス) P136 (ジャンル) Q747381 (ライトノベル) Q9326077 (スペキュレイティブ・フィクション ) 1PREFIX bd: \u0026lt;http://www.bigdata.com/rdf#\u0026gt; 2PREFIX wikibase: \u0026lt;http://wikiba.se/ontology#\u0026gt; 3PREFIX wd: \u0026lt;http://www.wikidata.org/entity/\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5PREFIX xsd: \u0026lt;http://www.w3.org/2001/XMLSchema#\u0026gt; 6 7SELECT DISTINCT ?item ?itemLabel 8WHERE { 9 ?item wdt:P31/wdt:P279* wd:Q747381 ; # ライトノベル 10 wdt:P136/wdt:P279* wd:Q9326077 . # スペキュレイティブ・フィクション 11 SERVICE wikibase:label { bd:serviceParam wikibase:language \u0026#34;[AUTO_LANGUAGE],ja,en\u0026#34;. } 12} ▶ 実行する "},{"id":3,"href":"/docs/federated_query/","title":"複数エンドポイントの横断的活用","section":"Docs","content":" 複数エンドポイントの横断的活用 # SPARQLでは、1つのエンドポイントだけでなく、外部の複数のエンドポイントに対してクエリを実行することができるfederatedクエリという仕組みがあります。\nfederatedクエリを利用したクエリを紹介します。\nSPARQLクエリエディタ # クエリ集 # 作品の多言語のタイトルを取得する # https://mediaarts-db.bunka.go.jp/id/C413599\nP7886(メディア芸術データベース識別子)\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5 6SELECT 7 ?MADBLabel ?label (LANG(?label) AS ?lang) ?wikidataEntity 8WHERE { 9 \u0026lt;https://mediaarts-db.bunka.go.jp/id/C413599\u0026gt; 10 schema:identifier ?MADBID ; 11 rdfs:label ?MADBLabel . 12 # Wikidataへクエリ 13 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 14 # P7886: メディア芸術データベース識別子 15 ?wikidataEntity wdt:P7886 ?MADBID ; 16 rdfs:label ?label . 17 } 18} ▶ 実行する メディア芸術データベースの責任主体の法人番号を取得する # Wikidataとメディア芸術データベースを連携したfederatedクエリ\n法人番号からさらにgBizINFOのSPARQLエンドポイントなどとも繋げられそうですね。\n1PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 2PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 3PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 4PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 5 6SELECT 7 ?agent ?name ?hojinBangou 8WHERE { 9 ?agent a class:Agent; 10 schema:name ?name ; 11 ma:wikidata ?wikidataPage . 12 # WikidataのリソースURIに変換 13 BIND (URI(REPLACE(?wikidataPage, \u0026#34;https://www.wikidata.org/wiki/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) AS ?wikidataEntity) 14 15 # Wikidata 16 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 17 # P3225: 法人番号 18 ?wikidataEntity wdt:P3225 ?hojinBangou ; 19 } 20} 21LIMIT 100 ▶ 実行する 「日本ゲーム大賞」を受賞したゲームを取得する # DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 3PREFIX dcterms: \u0026lt;http://purl.org/dc/terms/\u0026gt; 4PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 5PREFIX skos: \u0026lt;http://www.w3.org/2004/02/skos/core#\u0026gt; 6PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 7PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 8PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 9PREFIX hint: \u0026lt;http://aws.amazon.com/neptune/vocab/v01/QueryHints#\u0026gt; 10 11SELECT 12 ?MADBID ?genre ?label 13WHERE { 14 hint:Query hint:joinOrder \u0026#34;Ordered\u0026#34; . 15 # DBpedia Japanese 16 SERVICE \u0026lt;https://ja.dbpedia.org/sparql\u0026gt; { 17 SELECT DISTINCT 18 (URI(REPLACE(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) 19 AS ?wikidataEntity) 20 { 21 # 下位カテゴリを含める 22 \u0026lt;http://ja.dbpedia.org/resource/Category:日本ゲーム大賞受賞ソフト\u0026gt; ^skos:broader* ?category . 23 ?dbpediaEntity dcterms:subject ?category ; 24 ^owl:sameAs ?wikidataEntity . 25 FILTER(STRSTARTS(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;)) 26 } 27 } 28 # Wikidata 29 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 30 # P7886: メディア芸術データベース識別子 31 ?wikidataEntity wdt:P7886 ?MADBID . 32 } 33 # メディア芸術データベース 34 ?MADBResource schema:identifier ?MADBID ; 35 schema:genre ?genre ; 36 rdfs:label ?label . 37} 38LIMIT 100 ▶ 実行する クエリは必ずしも上から順番に実行されるとは限らないため、federatedクエリの実行順序次第では非常に時間がかかる処理となり、結果が返ってこない場合があります。\nRDFストアによってはクエリオプティマイザに実行順序を指示する方法が用意されており、メディア芸術データベースのSPARQLクエリサービスが使用しているAmazon Neptuneでは hint:Query hint:joinOrder \u0026quot;Ordered\u0026quot; . というパターンを記述します。\n参照: Amazon Neptune: SPARQL クエリヒント\n「タイムトラベルを題材とした作品」を取得する # DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ\n1PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 2PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 3PREFIX dcterms: \u0026lt;http://purl.org/dc/terms/\u0026gt; 4PREFIX schema: \u0026lt;https://schema.org/\u0026gt; 5PREFIX skos: \u0026lt;http://www.w3.org/2004/02/skos/core#\u0026gt; 6PREFIX class: \u0026lt;https://mediaarts-db.bunka.go.jp/data/class#\u0026gt; 7PREFIX ma: \u0026lt;https://mediaarts-db.bunka.go.jp/data/property#\u0026gt; 8PREFIX wdt: \u0026lt;http://www.wikidata.org/prop/direct/\u0026gt; 9PREFIX hint: \u0026lt;http://aws.amazon.com/neptune/vocab/v01/QueryHints#\u0026gt; 10 11SELECT 12 ?MADBID ?genre ?label 13WHERE { 14 hint:Query hint:joinOrder \u0026#34;Ordered\u0026#34; . 15 # DBpedia Japanese 16 SERVICE \u0026lt;https://ja.dbpedia.org/sparql\u0026gt; { 17 SELECT DISTINCT (URI(REPLACE(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;, \u0026#34;http://www.wikidata.org/entity/\u0026#34;)) 18 AS ?wikidataEntity) { 19 \u0026lt;http://ja.dbpedia.org/resource/Category:タイムトラベルを題材とした作品\u0026gt; ^skos:broader* ?category . 20 ?dbpediaEntity dcterms:subject ?category; 21 ^owl:sameAs ?wikidataEntity . 22 FILTER(STRSTARTS(STR(?wikidataEntity), \u0026#34;http://wikidata.dbpedia.org/resource/\u0026#34;)) 23 } 24 } 25 # Wikidata 26 SERVICE \u0026lt;https://query.wikidata.org/sparql\u0026gt; { 27 ?wikidataEntity wdt:P7886 ?MADBID . 28 } 29 # メディア芸術データベース 30 ?MADBResource schema:identifier ?MADBID ; 31 schema:genre ?genre ; 32 rdfs:label ?label . 33} 34LIMIT 200 ▶ 実行する Wikipediaのカテゴリは上記のようなクエリで汎用的に使うことができます。\n他にも以下のようなカテゴリを使うことで、いわゆる「聖地」による作品のキュレーションとして活用することができます。\nhttp://ja.dbpedia.org/resource/Category:湘南を舞台とした作品 Wikipedia: Category:湘南を舞台とした作品 http://ja.dbpedia.org/resource/Category:京都府を舞台とした作品 Wikipedia: Category:京都府を舞台とした作品 "},{"id":4,"href":"/docs/useful-datasets/","title":"SPARQLエンドポイントリスト","section":"Docs","content":" SPARQLエンドポイントリスト # ジャパンサーチ SPARQLエンドポイント: https://jpsearch.go.jp/rdf/sparql/ Cultural Japan SPARQLエンドポイント: http://ld.cultural.jp/sparql/ 国立公文書館デジタルアーカイブ SPARQLエンドポイント: https://www.digital.archives.go.jp/sparql ヨコハマ・アート・ナビ SPARQLエンドポイント: http://data.yafjp.org/sparql Europeana SPARQLエンドポイント: http://sparql.europeana.eu/ RCGSコレクション SPARQLエンドポイント: https://linkeddata.rcgs.jp バーチャルYouTuber LOD SPARQLエンドポイント: http://mdlab.slis.tsukuba.ac.jp/lodc2018/vtuber/query LODチャレンジ2018 テーマ賞 カルチャーLOD賞 im@sparql: アイドルマスター(アイマス) SPARQLエンドポイント: https://sparql.crssnky.xyz/spql/imas/query LODチャレンジ2018 データセット部門 優秀賞 PrismDB: プリティーシリーズ SPARQLエンドポイント: https://prismdb.takanakahiko.me/sparql Lemonade: アサルトリリィ SPARQLエンドポイント: https://luciadb.assaultlily.com/sparql/query LODチャレンジ2021 テーマ賞 カルチャーLOD賞 LuciaDB: https://github.com/Assault-Lily/LuciaDB 2022.07.24 アサルトリリィ関連情報を取り扱うファンサイト「Lemonade」が公認化!\nhttps://www.assaultlily.com/news/1405.html/ クエリ例 # ジャパンサーチ: 「手塚治虫」の著作を取得する # https://jpsearch.go.jp/rdf/sparql/ 1PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4PREFIX jps: \u0026lt;https://jpsearch.go.jp/term/property#\u0026gt; 5 6SELECT ?s ?label ?datePublished ?providerLabel 7WHERE { 8 ?s schema:creator/owl:sameAs* 9 \u0026lt;http://id.ndl.go.jp/auth/entity/00083890\u0026gt; ; 10 #\u0026lt;https://mediaarts-db.bunka.go.jp/id/C48012\u0026gt; ; 11 #\u0026lt;http://ja.dbpedia.org/resource/手塚治虫\u0026gt; ; 12 rdfs:label ?label ; 13 schema:datePublished ?datePublished ; 14 jps:sourceInfo [ 15 schema:provider/rdfs:label ?providerLabel ; 16 ] . 17} ▶ 実行する ジャパンサーチ: パブリックドメイン(CC0)な作品の画像を取得する # https://jpsearch.go.jp/rdf/sparql/ 1PREFIX owl: \u0026lt;http://www.w3.org/2002/07/owl#\u0026gt; 2PREFIX rdfs: \u0026lt;http://www.w3.org/2000/01/rdf-schema#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4PREFIX jps: \u0026lt;https://jpsearch.go.jp/term/property#\u0026gt; 5 6SELECT ?class ?label ?creatorLabel ?media WHERE { 7 ?s a ?class ; 8 schema:creator/rdfs:label ?creatorLabel ; 9 rdfs:label ?label ; 10 jps:accessInfo [ 11 schema:license \u0026lt;http://creativecommons.org/publicdomain/zero/1.0/\u0026gt; ; 12 schema:associatedMedia ?media ; 13 ] . 14} ▶ 実行する LuciaDB: レギオンとその所属リリィの数を集計する # https://luciadb.assaultlily.com/sparql/query 1PREFIX lilyrdf: \u0026lt;https://luciadb.assaultlily.com/rdf/RDFs/detail/\u0026gt; 2PREFIX lily: \u0026lt;https://luciadb.assaultlily.com/rdf/IRIs/lily_schema.ttl#\u0026gt; 3PREFIX schema: \u0026lt;http://schema.org/\u0026gt; 4 5SELECT 6 ?s ?name (COUNT(DISTINCT ?member) AS ?members) 7WHERE { 8 ?s a lily:Legion ; 9 schema:name ?name ; 10 schema:member ?member . 11 FILTER (LANG(?name) = \u0026#34;ja\u0026#34;) 12} 13GROUP BY ?s ?name ▶ 実行する "}] \ No newline at end of file diff --git a/en.search.min.04bc0cab1d5828e66a6f4908fc1a8a7e2ed9741e98846707d97542aba9237dd1.js b/en.search.min.118040dfcdc218686ebaf5d9bab0787571d16a86d5b2bfffcf1005b6a2b028aa.js similarity index 90% rename from en.search.min.04bc0cab1d5828e66a6f4908fc1a8a7e2ed9741e98846707d97542aba9237dd1.js rename to en.search.min.118040dfcdc218686ebaf5d9bab0787571d16a86d5b2bfffcf1005b6a2b028aa.js index c8fe67a..669479f 100644 --- a/en.search.min.04bc0cab1d5828e66a6f4908fc1a8a7e2ed9741e98846707d97542aba9237dd1.js +++ b/en.search.min.118040dfcdc218686ebaf5d9bab0787571d16a86d5b2bfffcf1005b6a2b028aa.js @@ -1 +1 @@ -"use strict";(function(){const o="/en.search-data.min.17cda3e00021431c8795942b34c123454e93e7f00ec739195514b07b36cd0814.json",i=Object.assign({cache:!0},{doc:{id:"id",field:["title","content"],store:["title","href","section"]}}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=FlexSearch.create("balance",i),window.bookSearchIndex.add(e)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.href,s.textContent=e.title,o.textContent=e.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file +"use strict";(function(){const o="/en.search-data.min.188d535b25168ca9b43c9ef944edef96ebfcbbf59376903110298610a1d4c8fa.json",i=Object.assign({cache:!0},{doc:{id:"id",field:["title","content"],store:["title","href","section"]}}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=FlexSearch.create("balance",i),window.bookSearchIndex.add(e)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.href,s.textContent=e.title,o.textContent=e.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file diff --git a/index.html b/index.html index 32fe1f1..39613bd 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ | 文化・芸術とLOD ハンズオン - +
    diff --git a/index.xml b/index.xml index 9c28f1d..e0bdb82 100644 --- a/index.xml +++ b/index.xml @@ -1,5 +1,5 @@ 文化・芸術とLOD ハンズオンhttps://lodc2022-culture-art.metadata.moe/Recent content on 文化・芸術とLOD ハンズオンHugo -- gohugo.ioja-jpはじめにhttps://lodc2022-culture-art.metadata.moe/docs/start/Mon, 01 Jan 0001 00:00:00 +0000https://lodc2022-culture-art.metadata.moe/docs/start/はじめに # 本ハンズオンでは、LOD(Linked Open Data)として公開されている文化・芸術に関する情報に対して、 クエリ言語SPARQLを用いた活用方法をご紹介します。 -実際の公開SPARQLエンドポイントを利用して、簡単なデータを取得するクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。 +実際の公開SPARQLエンドポイントを利用して、データを取得する簡単なクエリから、複数のデータベースを横断するような応用的なクエリまでを実践します。 事前準備 # WebブラウザがあればOKです。 SPARQLをはじめて扱う方は、導入として以下の資料などを参照していただくのがオススメです。 Linked Open Data 勉強会2020 資料 - SPARQLの簡単な使い方 ナレッジグラフ推論チャレンジ2021「技術勉強会」 - ナレッジグラフ(RDF)の基礎/ナレッジグラフ(RDF)用クエリ言語SPARQLの基礎 クエリの仕様 # 本ハンズオンでは、基本的にSPARQL 1.1に準拠したクエリを扱います。 diff --git a/tags/index.html b/tags/index.html index 1a37b90..65da09e 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,5 +1,5 @@ Tags | 文化・芸術とLOD ハンズオン - +
    Tags