ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
Snorql for Japan Searchのカスタマイズ方法の調査

Snorql for Japan Searchのカスタマイズ方法の調査

概要 ジャパンサーチで使用されている「Snorql for Japan Search」のカスタマイズ方法について、その調査結果です。随時更新予定です。また誤りも含まれている可能性が高いので、ご注意ください。 メニュー ページのタイトルを変更する snorql_def.js _poweredByLabel: "Cultural Japan", // "Japan Search", 問い合わせ先のエンドポイントを変更する snorql_def.js _endpoint: "https://ld.cultural.jp/sparql/", //"https://jpsearch.go.jp/rdf/sparql/", poweredByLinkのURLを変更する snorql_def.js _poweredByLink: "https://cultural.jp/", // "https://jpsearch.go.jp/", その他のフッター部分を編集する index.html footer> a href="./">Snorqla> for a id="poweredby" href="#">Japan Searcha>. Use a href="https://ld.cultural.jp/sparql">basic SPARQL endpointa> basic SPARQL endpoint --> for your application. >SPARQLエンドポイント解説 > --> footer> バージョンを変更する snorql_def.js var _sldb_version = "v0.0.1"; //"v2.20.1"; トップページの説明 ...

ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる

ジャパンサーチのSPARQLエンドポイントをYasguiで使ってみる

概要 Yasgui(Yet Another Sparql GUI)は、SPARQLクエリおよびその結果を作成、共有、可視化するための様々な高度な機能を提供します。 https://github.com/TriplyDB/Yasgui 今回は、YasguiでジャパンサーチのSPARQLエンドポイントを使用して、各種可視化を試みます。 結果 テーブル表示 データセット別件数の可視化を行います。まずは、一般的なテーブル表示です。 結果 結果の絞り込みや並び替えなども可能です。 チャート 「チャート」タブを使用して、同結果のチャート表示を試みます。 結果 「Configure」から、使用するチャートの種類を変更できます。 ギャラリー 「ギャラリー」タブを使用して、歌麿の作品を表示します。 結果 以下の記述を参考に、?widgetなどの変数を用意します。 https://triply.cc/docs/yasgui#gallery マップ 「Geo」タブを使用して、経緯度をもつ場所を表示します。 結果 以下の記述を参考にします。GeoSPARQLセマンティクスを含むSPARQLの結果が必要とのことで、concat関数やbif:st_geomfromtext関数を使用しています。 https://triply.cc/docs/yasgui#geo ネットワーク 「Network」タブを使用して、クラス同士の関係を記述します。 結果 以下の記述を参考にし、constructクエリを使用します。 https://triply.cc/docs/yasgui#network タイムライン 「Timeline」タブを使用して、歌麿の作品(一部)をタイムラインに表示します。 結果 まとめ Yasguiを用いることで、さまざまな可視化を行うことができました。本記事が参考になりましたら幸いです。

【Omeka S モジュール紹介】Data Type RDF

【Omeka S モジュール紹介】Data Type RDF

概要 Data Type RDFは、Omeka Sにデータ型 (html、xml、ブール値) を追加するモジュールです。 以下の、Numeric Data Typesと使い方は同様です。 https://nakamura196.hatenablog.com/entry/2021/08/01/070701 以下、使い方について紹介します。 使い方 インストール 他のOmekaモジュールと同じようにインストールします。 リソーステンプレートの編集 任意のリソーステンプレートを作成します。 次に、特定のプロパティのデータタイプにおいて、Data Type RDFの値を選択します。ここでは、本モジュールで追加された3つのタイプすべてを追加します。 その結果、以下のように、データタイプが指定されます。 アイテムの編集 アイテムの編集画面に移動して、先に作成したリソーステンプレートを選択します。 すると、先に指定したプロパティ(ここでは、decterms:description)に対して、入力フォームとして、「Html」「Xml」「Boolean」の3つが登場します。 それぞれ異なる入力フォームが用意され、入力方法が簡素化されます。 また以下のように、これらのデータタイプに応じて、表示方法も変更されます。 APIでの出力例 APIによるJSON-LDの出力例は以下です。@typeにURIが指定されていることが確認できます。 EasyRdfのconverterを用いて、RDF/XMLに変換した結果は以下です。(Xmlについては、datatypeが付与されない結果となりました。) まとめ Omeka Sにデータ型 (html、xml、ブール値) を追加するモジュール「Data Type RDF」の紹介でした。参考になりましたら幸いです。

Omeka SにICA RiC-Oの語彙を登録する

Omeka SにICA RiC-Oの語彙を登録する

概要 Omeka SにICA Ric-Oの語彙登録を行いましたので、その備忘録です。 https://www.ica.org/standards/RiC/RiC-O_v0-2.html 方法 Omeka Sの語彙登録の画面において、以下のように情報を入力します。 結果、106のクラス、485のプロパティ、が登録されました。 以下、プロパティ一覧の画面例ですが、各プロパティのコメント等もご確認いただけます。 まとめ ICA RiC-O、および、Omeka Sの活用について、参考になりましたら幸いです。

Wikidataから人物の生没年を取得する

Wikidataから人物の生没年を取得する

Wikidataから人物の生没年を取得するノートブックを作成しました。 参考になりましたら幸いです。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/Wikidataから人物の生没年を取得する.ipynb

[備忘録]Virtuosoの使い方

[備忘録]Virtuosoの使い方

RDFストアであるVirtuosoの使い方に関する備忘録です。 登録済みのグラフURIを確認する Conductor > Linked Data > Graphs > Graphs 手動でのRDFファイルのアップロード Conductor > Linked Data > Quad Store Upload Federated Queryを有効化する 以下の記事が参考になりました。「Account Roles」の設定が必要でした。 https://community.openlinksw.com/t/enabling-sparql-1-1-federated-query-processing-in-virtuoso/2477 以上、参考になりましたら幸いです。

[RDF] URIにアクセスしたらSnorqlの画面にリダイレクトさせる設定

[RDF] URIにアクセスしたらSnorqlの画面にリダイレクトさせる設定

以下の記事の続編です。 ジャパンサーチのRDFストアを参考として、https://xxx.abc/data/123などのURLにアクセスしたら、https://xxx.abc/?describe=https://xxx.abc/data/123にリダイレクトさせる設定の備忘録です。 ジャパンサーチの例 https://jpsearch.go.jp/entity/chname/葛飾北斎 -> https://jpsearch.go.jp/rdf/sparql/easy/?describe=https://jpsearch.go.jp/entity/chname/葛飾北斎 以下のようなconfファイルを作成し、適切な場所(例:/etc/httpd/conf.d/)に配置します。 RewriteEngine on RewriteCond %{HTTP_ACCEPT} .*text/html RewriteRule ^/((data|entity)/.*) https://xxx.abc/?describe=https://xxx.abc/$1 [L,R=303] その後、apacheを再起動します。 systemctl restart httpd これにより、snorqlの画面にリダイレクトさせることができます。

AWS EC2を用いたVirtuoso RDFストアの構築

AWS EC2を用いたVirtuoso RDFストアの構築

はじめに AWS EC2を用いたVirtuoso RDFストアの構築に関する備忘録です。独自ドメイン設定、HTTPS接続、Snorqlの設置、までを行います。 本記事以外にも、Virtuoso構築に関する有益な記事が多数存在しています。参考にしてください。 https://midoriit.com/2014/04/rdfストア環境構築virtuoso編1.html https://qiita.com/mirkohm/items/30991fec120541888acd https://zenn.dev/ningensei848/articles/virtuoso_on_gcp_faster_with_cos 前提 ACM Certificateは作成済みとします。以下の記事などを参考にしてください。 https://dev.classmethod.jp/articles/specification-elb-setting/#toc-3 EC2 まずEC2のインスタンスを作成します。 Amazon Linuxを選択し、インスタンスタイプはt2.microとしました。 ネットワーク設定については、「セキュリティグループを作成する」を選択し、「HTTPSトラフィックを許可する」と「HTTPトラフィックを許可する」の両方にチェックを入れます(以下の図では、後者にのみチェックが入っている状態ですのでご注意ください)。 インスタンスの状態が「実行中」になったら、画面右上の「接続」ボタンを押して、サーバに接続します。 接続後、以下を実行して、apacheサーバを立ち上げておきます。 sudo yum install httpd -y cd /var/www/html sudo vi index.html <p>test</p> sudo systemctl start httpd sudo systemctl enable httpd ELB作成 「ロードバランシング」の「ターゲットグループ」を選択します。 「Create target group」から、[Basic configuration]で「Instances」を選択して、あとは下図のように設定します。「VPC」は先ほど立ち上げたEC2インスタンスと同じものを選択しています。 「Register targets」の画面において、画面上部でインスタンスを選択して、「Include as pending below」ボタンをクリックします。すると、下図のように、選択したインスタンスが画面下部に移動します。 その後、「Create」ボタンを押します。 次に、「ロードバランサー」から「ロードバランサーの作成」を行います。 「Create Application Load Balancer」を選択し、以下のように「Network mapping」で複数のサブネットを選択します。 次がポイントですが、「Security groups」において、選択済みの「default」を削除して、先にEC2インスタンスの作成時に作成したセキュリティグループ「lanch-wizard-XX」など選択します。 また、「Listeners and routing」は、「HTTPS」を選択して、「Forward to」に先ほど作成したターゲットグループを選択してください。 ...

Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法

Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法

概要 Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法の備忘録です。 以下を参考にしています。 https://vos.openlinksw.com/owiki/wiki/VOS/VirtRDFInsert#HTTP PUT curl 上記のページの通りです。まず、登録用のサンプルデータとして、myfoaf.rdfを作成します。 <rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/"> <foaf:Person rdf:about="http://www.example.com/people/中村覚"> <foaf:name>中村覚</foaf:name> </foaf:Person> </rdf:RDF> 次に以下のコマンドを実行します。 curl -T ${filename1} ${endpoint}/DAV/home/${user}/rdf_sink/${filename2} -u ${user}:${passwd} 具定例は以下です。 curl -T myfoaf.rdf http://localhost:8890/DAV/home/dba/rdf_sink/myfoaf.rdf -u dba:dba python 実行例は以下です。以下では、rdflibを用いて、RDFファイルの作成から行なっています。またactionをdeleteに設定することで、削除を行うことができます。 import requests from rdflib import Graph, URIRef, Literal from rdflib.namespace import FOAF filename = "myfoaf.rdf" endpoint = "http://locahost:8890" user = "dba" passwd = "dba" action = "create" # action = "delete" ##### # RDFデータの作成 g = Graph() s = URIRef("http://example.org/people/中村覚") name = Literal("中村覚") g.add((s, FOAF.name, name)) # ファイルへの保存 g.serialize(destination=filename, format="xml") data = open(filename,'r', encoding='utf-8') data = data.read().encode() # 登録 url = f"{endpoint}/DAV/home/{user}/rdf_sink/{filename}" if action == "create": response = requests.put(url, data=data, auth=(user, passwd)) elif action == "delete": response = requests.delete(url, auth=(user, passwd)) print(response.status_code) まとめ 他にも方法があると思いますが、参考になりましたら幸いです。 ...

Omeka SにDC-NDL(国立国会図書館ダブリンコアメタデータ記述)を語彙として登録する

Omeka SにDC-NDL(国立国会図書館ダブリンコアメタデータ記述)を語彙として登録する

Omeka SにDC-NDL(国立国会図書館ダブリンコアメタデータ記述)を語彙として登録する方法です。 まず、以下のように、「語彙の一覧」を選択します。 次に、右上の「人間が理解できる語彙のタイトル。」ボタンをクリックします。(こちらは翻訳データが間違っています。今後修正したいと思います。) そして、以下の画面に示すように、必要な情報を入力します。 具体的な情報は以下です。 大項目 小項目 値 備考 基本情報 ラベル DC-NDL この値は任意です。 基本情報 名前空間URI http://ndl.go.jp/dcndl/terms/ 基本情報 名前空間の接頭語 dcndl ファイル 語彙URL https://www.ndl.go.jp/jp/dlib/standards/meta/2020/12/ndl-terms.rdf 結果、以下のように、DC-NDLが語彙として利用可能になります。 他のRDFスキーマについても同様の方法で登録可能です。参考になりましたら幸いです。

Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例

Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例

Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例を示すノートブックを作成しました。Pythonを用いたRDFストア利用時の参考になりましたら幸いです。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ジャパンサーチのRDFストアを対象したSPARQLチュートリアル.ipynb 他にも以下のような参考サイト・チュートリアルがあります。 https://www.kanzaki.com/works/ld/jpsearch/ https://lab.ndl.go.jp/data_set/tutorial/

【Omeka S モジュール紹介】Numeric Data Types:日付データに対する範囲検索を可能にする、など

【Omeka S モジュール紹介】Numeric Data Types:日付データに対する範囲検索を可能にする、など

概要 特定のプロパティを数値データとして設定できるようにするモジュール「Numeric Data Types」について説明します。プロパティは、日付と時刻(ISO)、または数値として指定できます。 特に、日付データに対する範囲検索を実現できる点などがポイントです。 github.com 公式のマニュアルは以下です。 omeka.org 上記のマニュアルを参考に、本モジュールの使い方を説明します。 リソーステンプレートの作成または編集 本モジュールを利用するには、リソーステンプレートを作成または編集して、特定のプロパティを数値データ型として設定する必要があります。リソーステンプレートの使い方は、以下に記載がありますが、いずれ紹介記事を作成したいと思います。 omeka.org 今回は、動画に関するリソーステンプレートとして「動画」を作成してみます。以下に示すように、「動画」というリソーステンプレートを作成し、その編集画面を開きます。 本モジュールでは、以下のData typesが追加されます。 Timestamp(xsd:date) 整数(o-module-numeric-xsd:integer) 期間(xsd:duration) 間隔 そのため、リソーステンプレートにおいて、これらの型を持つプロパティを作成します。具体的には、以下のように設定しました。 公開日(ex:date):Timestamp バージョン(ex:version):整数 再生時間(ex:duraion):期間 準備時間(ex:prepare):間隔 なお、独自の語彙「ex」の作成については、以下の記事を参考にしてください。 nakamura196.hatenablog.com プロパティのData types(型)の設定方法について説明します。リソーステンプレートの編集画面を開き、型を設定したいプロパティの「鉛筆」アイコンをクリックします。画面右部に表示されるパネルの「その他のオプション」 > 「Data types」において、「数字」 > 「Timestamp」を選択します。 結果として、今回は以下のリソーステンプレートを使用します。 ここで設定した各プロパティについて、入力フォーム、保存されるデータを以下で説明します。 データ登録 今回は、下図のようなデータを作成します。2021年3月11日に公開された動画について、再生時間、バージョン、準備期間、などを入力します。 アイテムの登録または編集画面において、リソーステンプレートの選択フォームで、先に作成した「動画」を選択します。 それにより、先に設定した各プロパティについて、Data types(型)に応じた入力フォームが表示されます。 例えば、Timestampを設定したプロパティ「公開日」は、下図のように日付(および時刻)の入力に特化したフォームが表示されます。 検索 上記の設定により、管理者画面および公開サイトに検索フォームが追加されます。 例えば、下図のように、プロパティ「公開日」について、「2021-03」以降の値を検索する、といった使い方が可能となります。 その他 API REST APIを通じて、登録したデータ(JSON-LD)を以下で確認できます。下図のように、型がRDFによっても記述されていること(xsd:date, xsd:duration, など)を確認できます。 https://diyhistory.org/nakamura196/api/items/13 モジュール「Bulk Import」を用いた一括登録 別のモジュール「Bulk Import」を用いることで、ここで説明した型を持つデータの一括登録を行うことができます。「Bulk Import」の使い方については、以下の記事を参考にしてください。 nakamura196.hatenablog.com 具体的には、以下に示すようなCSVファイルを用意します。ポイントとして、ヘッダー行に「^^numeric:timestamp」を与えることで、Data types(型)を指定した上での一括登録が可能です。 https://github.com/omeka-j/Omeka-S-module-BulkImport-Sample-Data/blob/main/item_with_datatype.csv まとめ 今回は、特定のプロパティを数値データとして設定できるようにするモジュール「Numeric Data Types」について説明しました。 ...

【Omeka S Tips】既存の標準語彙の追加方法

【Omeka S Tips】既存の標準語彙の追加方法

概要 Omeka SではRDF(Resource Description Framework)を用いてリソース(アイテム、アイテムセット、メディア、etc…)の情報を記述します。そのため、RDFのクラスやプロパティのコレクションである語彙をインポートする必要があります。この記事では、この既存の語彙のインポート方法について説明します。なお、公式マニュアルでは以下に記載があります。 omeka.org 具体的には、国立国会図書館が提供する国立国会図書館ダブリンコアメタデータ記述(DC-NDL)とSchema.org、ジャパンサーチの利活用スキーマの登録を例とします。 なお、代表的な語彙としてDublicon Core Terms(dcterms:)が挙げられます。Omeka Sのインストール直後のデフォルト設定では、Dublin Coreに加えて、Dublin Core タイプ(dctype:)、書誌オントロジー / Bibliographic Ontology(bibo:)、FOAF / Friend of a Friend(foaf:)が登録されています。 既存の語彙を可能限り使用することで、データの共有が容易となります。一方、独自の語彙を使用したい場合には、Custom Ontologyモジュールが使用できます。この使用方法については、以下の記事で紹介しています。 nakamura196.hatenablog.com RDFスキーマファイルの取得 語彙の登録にあたり、各語彙のRDFスキーマファイルを取得する必要があります。 DC-NDL 以下から取得することができます。 https://www.ndl.go.jp/jp/dlib/standards/meta/2020/12/ndl-terms.rdf 以下のページに掲載されています。 www.ndl.go.jp なお、接頭語は「dcndl」、名前空間のURIは「 http://ndl.go.jp/dcndl/terms/」です。 Schema.org 以下から取得できます。 https://schema.org/version/latest/schemaorg-current-https.rdf 以下のページに掲載されており、フォーマット(JSON-LD、RDF/XML、Turtleなど)を指定できます。 schema.org なお、接頭語は「schema」、名前空間のURIは「 https://schema.org/」です。 ジャパンサーチの利活用スキーマ ジャパンサーチの利活用スキーマ関連の語彙の例として、以下が挙げられます。 jps: https://jpsearch.go.jp/term/property# type: https://jpsearch.go.jp/term/type/ chname: https://jpsearch.go.jp/entity/chname/ ここでは、上記の接頭語「jps」の語彙を対象とします。本語彙は以下から取得できます。 https://jpsearch.go.jp/term/property Omeka Sへのインポート 画面左部のメニュー「語彙の一覧」にアクセスし、画面右上のボタンをクリックしてください。なお、2021年7月時点で、本ボタンの日本語訳に間違いがありますので、いずれ修正したいと思います。 その後、以下のような入力フォームが表示されますので、基本情報や登録するファイルの情報を入力します。ファイルについては、ファイルのアップロードまたはURL指定による読み込みが可能です。以下は「ジャパンサーチ利活用スキーマ」を登録した例です。 この方法で、「DC-NDL」「Schema.org」も合わせて登録した結果が、以下の「語彙の一覧」画面で確認できます。 Schema.org は膨大な数のクラスとプロパティが定義されていることがわかります。 なお、各語彙で定義されているクラスおよびプロパティ一覧の列の数字をクリックすると、当該語彙のクラスまたはプロパティの一覧画面に遷移します。また、ラベルの横にある省略アイコンをクリックすると、以下の図のように、そのクラスまたはプロパティの詳細な説明が表示され、さらに当該クラスまたはプロパティが使用されているアイテムの一覧を確認することができます。以下の例では、「dcterms:title」が2つのアイテムで使用されていることを確認できます。 更新 語彙の更新は、「語彙の一覧」ページに表示される鉛筆アイコンをクリックして編集画面に入ります。そして、新しい語彙のファイルまたはURLを指定して画面右上の「保存」をクリックします。 その後、以下のような更新前後の変更を確認する画面が表示されます。ここでは、「Schema.org」の「schema:highPrice」というプロパティのラベルを、試験的に変更した例です。問題ない場合には、画面右上の「変更を承認」をクリックして、更新作業を完了させます。 なお、2021年7月時点においては、クラスおよびプロパティの追加と変更のみが可能で、特定のクラスまたはプロパティの削除は非対応のようです。 削除 語彙の削除は、「語彙の一覧」ページに表示されるゴミ箱アイコンをクリックします。画面右部に確認パネルが表示されるので、「削除を確定」を押して作業を完了させます。 まとめ 以上、既存の語彙を追加、更新、削除する方法を説明しました。 ...

Cultural Japanで集約したIIIFマニフェストをまとめたIIIFコレクションのご紹介

Cultural Japanで集約したIIIFマニフェストをまとめたIIIFコレクションのご紹介

Cultural Japanで集約したIIIFマニフェストについて、それらをまとめたIIIFコレクションを以下からご確認いただけます。 https://www.kanzaki.com/works/2016/pub/image-annotator?u=https://app.cultural.jp/iiif-collection/collection.json なお、各々のIIIFマニフェストの利用にあたっては、各収録DBの利用条件を確認してください。 本コレクションには、Cultural Japan側で動的に生成したIIIFマニフェストを含みます。上記のコレクション一覧において、【動的生成】という表記で識別することができます。この動的生成にあたっては、AWS Lambdaを利用しており、リクエスト毎にJapan SearchのRDFストア、およびCultural JapanのRDFストアに問い合わせを行い、JSONデータを生成しています。なお、本動的生成IIIFマニフェストを作成する条件は、高精細画像(jps:accessInfo/schema:associatedMedia)を持つアイテムとしています。 動的生成マニフェストの場合、必ずしも提供元アイテムのすべての画像を含めることができていない(jps:accessInfo/schema:associatedMedia で指定された画像のみを使っている)点で不完全ではありますが、IIIFマニフェストを読み込むSelf Museumやその他のIIIF対応ビューアに取り組むことが可能となるといった利点もあります。 self-museum.cultural.jp 世界中で発信される日本文化に関するIIIFリソースを概観するとともに、IIIFを用いたアプリケーション開発の素材としてお役に立てば幸いです。