Event 1.Web 1.GUI 1.導入 2.画面説明 3.入力書式 2.API 1.パラメータ 2.データ形式 A.Dataset B.Cash 2.Lib 1.DataSets 2.DataSet 3.Event Event_FAQ
「イベント機能」に関する Frequently Asked Questions と Rarely Asked Questions です。
本 Wiki で「イベント機能」と称するのは、時間情報(と空間情報)を含んだ(オープンな)データセットをWhen.exe Ruby版で扱うための仕組み一式のことです。 「イベント」はそのデータセットに含まれる情報のまとまりで、CSVでは一行のレコード、RDFでは主語を同じくするトリプル群に対応します。
「イベント機能」を含む When.exe Ruby版全体については [Calendar/When/Ruby] をご覧ください。
When.exe Ruby版の基本的な目的は「古今東西あらゆる文化および言語で用いられた暦日・暦法・時法・暦年代・暦注などに ユニークな名前付けを行い、統一的に扱うための枠組みを提供する」ことです。
外部から提供されるデータセットを利用できるようにすることで、このユニークな名前付けを行った語彙やWhen.exe Standard Representationのような仕様を外部のデータセットでも積極的に採用していただく契機としたいと考えています。
直接のきっかけは「国会図書館デジタルコレクション」の暦画像へのリンクから始まったものです。途中の経緯はブログテーマ「when.exe」の2015年11月12日以降の部分をご覧ください。
[Calendar/When/Ruby#著作権表示]および[Calendar/When/RDF#イベント機能]をご覧ください。
データセット登録に説明したファイルをインターネットに公開してください。
下記の点に留意願います。
【長所】
【欠点】
サーバー管理者としては、データセット本体はできるだけSPARQLサーバーに配置していただきたいと希望します。
http://hosi.org の GUI が複雑になりcookie の消費量も増えるため、ひとつだけに制限しています。ご了解ください。
「データセット本体」と「データセット定義」は必ずしも同一の提供者によるとは限らないため別管理とする必要があります。 また、「データセットリスト」のGitHubへのアップロードは認証手続きを兼ねています。
こういう次第ですので3段階に分けています。
入力した日付・日付範囲または空間位置の書式が When.exe Ruby版で想定外だっと思われます。3.入力書式の説明をお読みください。
データセットのファイルサイズが500kBを超えています。B.Cashをお読みになり、サーバー管理者にご連絡ください。
http://hosi.org の処理が重くなりすぎないようにデータセット規模に設定した制限です。ファイルサイズが500kBを超えるデータセットを登録・利用する場合はサーバー管理者にご連絡ください。
こちらをごらんください。
http://hosi.org の処理が重くなりすぎないよう、全部のデータを一度に取り出す API はあえて設けていません。
大きなpageパラメータのリクエストを発行することは可能です。
http://hosi.org/ts.ttl をごらんください。
現在の実装はまだ実験的なものです。より良いアドバイスをいただければ歓迎します。
1.DataSetsで言及されている「RDFグラフ」はRDFトリプルの集合です ( → http://www.w3.org/TR/rdf11-concepts/#section-rdf-graph )
もともとの Semantic Web には、いろいろな人たちがRDFトリプルの形式で知識を提供し合って集積していくという考え方がありました。「Semantic Web の単調増加性」と言われるものです。
しかし提供されるRDFトリプルには間違った記述や信頼性に問題のある記述もあり得ます。そこでRDFトリプルを集合にまとめて IRI を与え、情報の提供元などの管理ができるようにしたものが「RDFグラフ」です。
技術的にあとづけで追加された概念ということもあり、その扱いはアプリケーションごとに異なることが多いようです。
(→ブログ記事 2016-01-17「RDFグラフと日本暦注クエリ」に補足があります)
jsonld は規格制定が最近であるため、はじめから「RDFグラフ」が考慮されています。
しかし残念ながら、現状の Ruby gem linkeddata.rb は jsonld を十分に扱える実装になっていないようです(→ブログ記事2015-12-25「RDFグラフとAPI」)。
このため、When.exe Ruby版でも、今回の実装では jsonld への対応を見送りました。
私もそう思います。
CSVをRDF化する事例など(→例えばこちら)も事前に調べましたがテンプレートの自動生成はなかなか大変そうです。
「データセット定義ファイル」のフォーマットが全体の成否を左右する要であり、いろいろとアドバイスをいただきたいポイントです。
今後の課題だと思います。
When.exe Ruby版が“A multicultural and multilingualized calendar library”である以上、「イベント機能」でも多言語対応は必須です。
あとづけで多言語対応を付加しようとすると全体の仕組みの整理が難しい。アーキテクチャ設計の初期段階から多言語対応を考慮した結果、今回の実装となりました。
CSVをRDFに変換することを目的とした「CSVのRDF化テンプレート」と異なり、「データセット定義ファイル」はCSVの要素を表現する“[…]”、RDFの要素を表現する“<…>”、When.exe Ruby版でのロール(=役割)を表現する“{…}”の3者を扱います。ロールという概念を用いる点が最も大きな違いです。
ロールに相当する述語で SPARQL 検索をかけられるようにするには、SPARQLサーバーに“ロールに相当する述語”と“SPARQLサーバーが保持している述語”が rdfs:subPropertyOf の関係にあることを教えねばなりません。
SPARQLサーバーは本システム外に配置されるものである以上、「Semantic Web の単調増加性」の観点からこれは望ましくありません。
/test/events/make_events_ttl.rb に例示したコードのように、CSV→RDFの変換ツールとしても使用できます。japanese-holiday-index.csvの説明をご覧ください。
既存のSPARQL サーバーはWhen.exe Standard Representationが利用できないため、日時の前後関係を日時を表現する文字列の辞書式順序で判断せざるを得ません。When.exe Ruby版では、ユリウス通日などの扱いやすい順序情報を目的語とするRDFトリプルを追加できます。そのようなRDFトリプルを追加したRDFファイルを SPARQLサーバーで扱えばより効率的な検索が可能になります。
When.exe Ruby版が付加した時間や空間に関わる順序情報を用いて、あらかじめデータセットに属するイベントをソートして、その順序を内部メモリに保持しておくことです。
通常の DBMS の実装でも行っていることですが、これによりオンメモリでの検索を高速化しています。
時間スキーマ ISO19108 は、対応する空間スキーマなどとあわせて ISO191**シリーズを構成しています。
しかし、When.exe Ruby版はひとりで開発をすすめているため、シリーズ全体をカバーするだけのリソースがありません。
今回の実装での where? メソッドは、GUI/API/LIB の動作を検証するためのぎりぎり最低限の仕様とさせていただいています。
時間での“日”の分解能に対応するものが、空間位置にはないため、“..”(終点を含む)と“...”(終点を含まない)を使い分けるようなユースケースはありません。
このため“...”を省いて実装を簡略化しました。
都道府県の形は考慮していません。空間位置の重なりの判断では、都道府県の領域を南西端と東北端を対角線とする矩形範囲で代用しています。