メインコンテンツまでスキップ
v0.129.0 で App Settings へ移動

本ページの調整値は .env ではなく、アプリ内の App Settings 画面(サイドバー下部の スライダーアイコン)で設定し、app_settings.jsonc に保存されます。.env に残った値は 無視され、起動ログにキー名が 1 度だけ列挙されます。既存の設定を引き継ぐには chatwalaau settings migrate --write を実行してください。機能の有効化ゲートと シークレットは .env のままです。 詳細は 設定 -> アプリケーション設定。

オントロジー概念モデリング

オントロジーワークスペースでは、ドメインの本質的な Entity・Relationship・プロパティ からなる概念モデルを、Subject-Predicate-Object トリプルによる RDF ナレッジ グラフとして設計できます。各オントロジーは標準的で自己完結した Turtle ファイル (名前付きグラフを持つと TriG ファイル) であり、バージョン管理・共有・他の RDF ツールでの利用が可能です。

この機能は v0.130.2 からデフォルトで有効です。使わない限りコストはかかりません —— シークレットを持たず、シェルも起動せず、外部通信もせず、.ontologies/ は最初の書き込み時に のみ作成されます。

無効化する​

ONTOLOGY_ENABLED=false
# 任意: オントロジーファイルの保存先 (必要時に自動作成)
ONTOLOGY_DIR=.ontologies

false にすると、サイドバーのアイコンが消え、API は 404 を返し、エージェントから 読み取り専用の ontology_query ツールが外れます。

有効な場合、サイドバーフッター (Declarative Agents アイコンの隣) にネットワーク アイコンが表示されます。クリックすると、自由にリサイズできる 3 ペインのフルスクリーン ワークスペースが開きます。

ワークスペース​

  • 左 -- カタログ。 オントロジーの一覧 (名前と説明)。説明はアシスタントが対象 オントロジーを選ぶ手掛かりになるため、丁寧に書くのがおすすめです。新規作成、 名称変更 (名前と説明をその場で変更 -- オントロジー本体とグラフは保持)、 RDF ファイルのインポート (Turtle・TriG・N-Triples・N-Quads・RDF/XML・JSON-LD)、 その 6 形式でのエクスポート、削除 (確認ダイアログ + 進行インジケーター付き、バックアップは ディスクに保持) ができます。一覧はドラッグで好きな順に並べ替えられます (v0.190.0)。
  • 中央 -- 設計キャンバス。 Entity は二重の円です。内側の円をドラッグ するとノードを移動でき、外側のリング上のどこからでも Relationship を開始 / 終了できます (全 360°、どの方向からでも接続でき、ノードの移動に追従)。エッジは 方向性とカーディナリティ (1:1、1:N、N:1、N:M) を持ちます。同じ 2 つの Entity を 2 本以上の Relationship がつなぐ場合は扇状に広がり (それぞれ個別に 選択でき、ラベルも別々)、自己参照の Relationship はループとして描画されます。 Entity をクリックすると、その In/Out の Relationship と接続先の Entity まで一緒に ハイライトされます (Relationship をクリックすると両端の Entity とその In/Out エッジがハイライト)。解除は空き領域のクリックです。ノード間のドラッグで Relationship を作成。パン・ズーム・全体表示・ワンクリックの自動レイアウト・ グラフの PNG ダウンロードに対応します。
  • 右 -- 詳細 / リソース / 検索。 詳細タブでは選択中の Entity / Relationship を 編集します。Entity の各プロパティはキー属性としてマークでき、ノードにキー バッジが表示されます。All statements には、フォームに出ない内容も含め、選択中の 項目について記述されたすべての文が表示され、追加・編集・削除できます。 Resources タブにはキャンバスが描かないものがすべて並びます (後述)。検索タブでは SPARQL (シンタックスハイライト付きエディタ。 Reset ボタンでデフォルトクエリに戻せます) または自然言語の 質問で検索できます。送信ボタンを押すとモデルが SPARQL に変換し、生成された クエリはエディタに挿入されるため手直しして再実行できます。テーブル結果は キャンバス上のマッチした Entity を強い色でハイライトし、それ以外は薄く表示、 接続された Relationship も色が変わります。

保存時はタイムスタンプ付きバックアップを作成してからアトミックに置き換えます。 未保存の変更があるまま閉じようとすると確認ダイアログが表示されます。開いた後に別の タブで保存されていた場合は保存が拒否され Reload ボタンが表示されるため、あるタブが 別のタブの内容を黙って上書きすることはありません。

編集しても何も失われない (v0.175.0)​

Entity / Relationship のフォームに収まる部分だけでなく、オントロジーのすべての文が 編集対象になります。

  • Resources タブ。 インスタンス、他の語彙の用語、注釈 (reifier)、リスト、空白ノード など、キャンバスが描かないものはすべてここに一覧され、絞り込みもできます。1 つ選ぶと その文を表示・編集でき、+ Resource で新しいリソースも追加できます。
  • 型付きの値エディタ。 値には IRI (owl:Class のような接頭辞付き名も可)、空白 ノード、データ型・言語・文字方向付きのリテラル、RDF 1.2 のトリプル項 <<( s p o )>> を指定できます。1 回だけ使われる空白ノードは入れ子で、RDF リストは 順序付き一覧で表示されます。注釈の付いた文には annotated バッジ、データ型に合わない 値には ill-typed の警告が付きますが、値は書かれたとおりに保持されます。
  • 複数の値を保持。 英語のラベルと日本語のラベルは両方とも残ります。入力欄には 1 つ (タグなし、次に英語) が表示され、他の値はその下にチップとして表示されます。表示中の ラベルを編集しても言語は保たれます。複数の domain を持つプロパティは各 Entity の下に shared 付きで表示されます。式になっている range ([ owl:oneOf ( ... ) ] など) は expression と表示され、文の一覧で編集します。
  • Document ダイアログ (ヘッダーのボタン)。オントロジーの接頭辞・base・VERSION です。インポート (Turtle と RDF/XML) から引き継がれ、エクスポートした Turtle の先頭に 書き出されます。インポートしたファイルのコメントや元の書式は保持されず、正規化された 形で書き出されます。
  • 位置。 位置が保存されていない Entity は、開いたときに自動で配置されます。位置が 保存されるのは、ノードを動かしたときか Reset Layout を使ったときだけです。編集せずに 保存しても、ファイルに何も追加されません。
  • 削除と注釈。 Entity を削除しても、他のリソースがその Entity について記述している 文は残り、その件数が表示されます。注釈の付いた文を編集すると、注釈を編集に追従させるか (既定)、元の文に残すかを確認します。
v0.175.0 での API 変更

GET / PUT /api/ontology/{id} の JSON 形状が変わりました: document (接頭辞・ base・version)、resources (主語ごとにすべての文を持ち、値はすべて型付き)、 revision です。この 2 つのエンドポイントを直接呼んでいるスクリプトは更新が必要です。 古い revision を付けた PUT は 409 stale_revision で拒否されます。

検索結果がファイルどおりになる (v0.176.0)​

検索結果とアシスタントの回答には、オントロジーファイルに書かれたとおりの値が 表示されます。

  • 値はそのまま。 "01" は 01、"1.50" は 1.50 のままで、日時のミリ秒も 残ります。表の各値には言語 (@ja)・文字方向・データ型 (xsd:integer) が表示されるので、数値と文字列を見分けられます。
  • エディタへのリンク。 結果に出る IRI と空白ノードはエディタと同じ名前 (_:b1) で表示され、クリックするとそのリソースが開きます。
  • 検索エンジンがファイルと一致させられないときの注記。 検索エンジンは "01"・ "1"・"+1" (整数) を 1 つの値として扱います。CONSTRUCT の結果ではそれらがすべて 戻ります。件数や文字列関数 (STR・REGEX など) がエンジン側の 1 つの値で計算された ときは、結果の上に注記が表示されます。複数の書き方がある値には曖昧の印が付き、 ファイル内の書き方が一覧されます。
  • base のないファイルも取り込める。 相対 IRI (<#Person>、rdf:about="#Person") を使っていて base を宣言していないファイルも取り込めるようになりました。それらの IRI は、新しいオントロジー自身の名前空間に置かれます。
  • W3C のテストで確認。 Turtle と RDF/XML について、W3C の RDF 1.1 と RDF 1.2 の 公式テストスイートを、インポート・編集・保存・エクスポート・検索の経路でテストの たびに実行しています。XML リテラルの書式に関する RDF/XML のテスト 4 件は、利用して いる RDF ライブラリ側の既知の例外です。

名前付きグラフ・入出力形式・注釈 (v0.177.0)​

名前付きグラフ​

RDF のデータセットは、文を名前付きグラフに分けて持ちます。たとえば情報源ごと、 版ごと、チームごとに 1 つのグラフです。TriG (.trig) や N-Quads (.nq) のファイルを 取り込むか、キャンバス上部のレイヤーボタンでグラフを追加できます。

  • グラフ選択。 名前付きグラフを持つオントロジーでは、キャンバス上部の選択で すべてのグラフ・デフォルトグラフ・名前付きグラフ 1 つを切り替えられます。 キャンバスと Search タブはこの選択に従い、検索がどのグラフを対象にしているかも 表示されます。「すべてのグラフ」では、複数のグラフにある同じ事実は 1 件と 数えます。SPARQL の GRAPH <名前> { ... } では、どのグラフも指定できます。
  • 新しい文の行き先。 名前付きグラフを選んでいる間に追加した文は、そのグラフに 入ります。ノードの配置は常にデフォルトグラフに残ります。
  • 文のグラフを表示。 インスペクターの各文にグラフのチップが付きます。文を 編集すると別のグラフへ移せます。Resources タブはグラフで絞り込めます。
  • TriG で保存。 名前付きグラフを持つオントロジーは <id>.trig に保存され、 最後の名前付きグラフが空になると <id>.ttl に戻ります。文のないグラフは保存 されません。
ダウングレード

v0.177.0 より前の版は <id>.ttl しか扱えないため、TriG で保存されたオントロジーを 見つけられません。ダウングレードの可能性がある場合は、先にエクスポートしてください。

取り込みと書き出しの形式​

形式拡張子名前付きグラフ注釈 (triple term)
Turtle.ttl不可可
TriG.trig可可
RDF/XML.rdf・.owl・.xml不可可
JSON-LD.jsonld・.json可不可
N-Triples.nt不可可
N-Quads.nq可可
  • 落とさずに拒否する。 形式がオントロジーを保持できない場合 (Turtle での名前付き グラフ、JSON-LD での注釈、末尾が数字のプロパティなど RDF/XML で書けない名前) は、 書き出しメニューが理由と例の文を示します (クリックでその文を開けます)。黙って 一部を省くことはありません。
  • 書き出しはすべて検証。 ダウンロードの前に、ファイルを読み戻してオントロジーと 比べています。
  • 接頭辞。 N-Triples・N-Quads・JSON-LD には接頭辞がないため、IRI は完全な形で 書かれ、メニューにもその旨が表示されます。
  • JSON-LD の取り込み。 最上位の @context の接頭辞と @base は残ります。@json の値は JSON-LD の規則で正規化されます (キーの並べ替えなど)。外部の @context (たとえば "https://schema.org/") を参照するファイルは、メッセージ付きで拒否され、 サーバーが取得しに行くことはありません。URL をコンテキストの中身に置き換えて ください。

注釈​

インスペクターの文にマウスを重ねて 注釈を追加 を選ぶと、その文自体について (情報源・日付・確からしさなど) 書けます。reifier が作られます。これはオントロジー 内の IRI (...#r-1a2b3c4d、変更可) を持つリソースで、その文を rdf:reifies し、 最初の注釈も付けられます。注釈は文と同じグラフに入り、1 つの文に複数付けられます。 注釈付きの文を削除するときは、注釈も削除するかを確認します。既定は注釈を残す です。

スクリプトから使う​

POST /api/ontology/{id}/statements は、add・remove・replace・annotate の 操作を 1 回の原子的な保存で適用します (現在の revision を付けます)。replace では、 古い文が別のグラフにまだない限り、その注釈も新しい文に移ります。PUT には projection_version: 3 を付けてください。名前付きグラフを持つオントロジーにこれを 付けずに保存すると拒否されます (graph_unaware_client)。古いスクリプトが、すべての 文を誤ってデフォルトグラフへ移すことを防ぐためです。

検索が速くなり、保存が安全に (v0.178.0)​

2 回目以降の検索はすぐに答えます。 最初の検索でオントロジーを読み込み、その後の SPARQL 検索・自然言語検索・アシスタントの質問は、読み込んだものを使い回します。 10 MiB の上限の大きさでは、最初の検索に数秒、2 回目以降は数十ミリ秒です。読み込んだ ものはファイルのバイト列そのものに結び付いているため、保存すれば次の検索は新しい内容を 見ます。使うメモリは App Settings > Limits > Ontology query cache (MiB) で上限を 決めます (既定 512、0 で無効)。最後に使われたのが最も古いオントロジーから捨てます。 また、大きなオントロジーを読み込んでいる間も、他の利用者のチャットが止まらなくなりました。

保存は変わった部分だけを送ります。 編集画面は、オントロジー全体ではなく、追加・削除 した文だけを送ります。別の人 (または別のタブ) が先に保存していた場合:

  • 別々の文への編集は統合され、両方の変更が見えるように読み直します。
  • 別の場所で削除・変更された文への編集は一覧で示され、何も保存されません。 Reload で最新の内容を表示します (保存していない変更は捨てられます)。
  • ノードの位置は、後から保存したほうになります。

2 人が同じ資源に別々のラベルを追加すると、両方のラベルが残ります。RDF のオントロジーは 文の集合だからです。接頭辞・base・VERSION の変更 (Document ダイアログ) は、今までどおり オントロジー全体を保存し、先に別の保存があれば拒否されます。

スクリプトからは、POST /api/ontology/{id}/statements に "on_stale": "rebase" (上の規則。409 stale_conflict で衝突した操作を一覧します) と "fresh_blank_nodes" (スクリプトが作った空白ノードのラベル。ファイルですでに使われていればサーバーが付け直し、 blank_nodes で返します) を付けられます。on_stale を付けなければ、今までどおり古い revision では 409 stale_revision です。

変更履歴と復元 (v0.179.0)​

オントロジーの保存・取り込み・復元のたびに、ひとつの版ができます。Detail / Resources / Search の隣の History タブを開くと:

  • 各版が、何によって作られたか (「Saved 3 changes」「Imported」「Restored the version of ...」) と時刻つきで一覧されます。
  • 版を選ぶと Changes in this version に、その版で追加された文 (緑) と削除された文 (赤) がグラフつきで正確に表示されます。Compared with now に切り替えると、その版を 復元したら何が変わるかが分かります。接頭辞・base・VERSION の変更も表示されます。
  • Restore this version は、追加・削除される文の数を示して確認したうえで、その版を 新しい版として保存します。何も失われません。置き換えられた版も一覧に残るので、同じ 方法で復元を取り消せます。
  • Download で、その版を Turtle または TriG で保存できます。

削除したオントロジー。 カタログ上部のアーカイブのボタンで、削除したオントロジーが 名前つきで一覧されます。Restore で同じ id のまま戻せるので、その中で作った IRI も そのまま使えます。既定では削除から 30 日間戻せます。

残す履歴の量。 保存のたびに、そのオントロジーのバックアップを整理します: 新しい 20 個、さらに直近 30 日は 1 日 1 個を残し、オントロジーごとに最大 200 MiB までです。 いちばん新しいものは消しません。App Settings > Ontology で変更できます (ontology_history_keep_recent、ontology_history_keep_days、 ontology_history_max_mb)。v0.179.0 より前のバックアップは「Earlier version」として 一覧され、自動では消えません。

スクリプトからは GET /api/ontology/{id}/history、GET .../history/{version}/diff、 GET .../history/{version}/file、今の revision を付けた POST .../history/{version}/restore、GET /api/ontology/trash、 POST /api/ontology/trash/{id}/restore を使えます。復元は DEMO_MODE では拒否されます。

RDFS のスキーマとクラス階層 (v0.180.0)​

キャンバスは、OWL に加えて RDFS で書かれたオントロジーも描きます。

  • rdfs:Class はエンティティになります。rdf:Property は、range がすべてデータ型 (xsd:*、rdfs:Literal、rdf:langString、rdf:JSON、rdfs:Datatype と宣言された型など) なら属性、それ以外なら関係になります。range のないものは Resources タブに残ります。
  • 「is a」の辺。 2 つのエンティティの間の rdfs:subClassOf は、上位クラスを指す開いた 矢印の破線で、どのオントロジーでも描かれます。キャンバスのツールバーの Show "is a" を 外すと隠せます (このブラウザで覚えます)。
  • 階層を描く。 ツールバーの切り替えを Link: Is a にして、下位クラスから上位クラスへ ドラッグすると、rdfs:subClassOf の文が 1 つ追加されます。「is a」の辺を選ぶと削除でき ます。エンティティの Detail には上位クラスと下位クラス、関係には上位プロパティが表示されます。
  • 新しい語彙はオントロジーに合わせる。 切り替えの隣のバッジに OWL か RDFS が 表示されます。RDFS だけで書かれたオントロジーでは、新しいエンティティ・関係・属性は rdfs:Class / rdf:Property で作られます。それ以外 (新しい空のオントロジーを含む) は OWL です。RDFS の書き方では、プロパティの種類は range で決まります。
  • 宣言のないクラス。 rdfs:subClassOf、rdfs:domain、rdfs:range で使われているが オントロジー内で宣言されていないクラスは描かれません。その文には not declared の印が 付き、Resources タブにその数が表示されます。
  • 自然言語検索は RDFS のクラス・プロパティとクラス階層を理解し、下位クラスの個体も rdfs:subClassOf* で探します。検索そのものは推論をせず、書かれた文を読みます。

これらの役割はエディタでの見せ方だけで、ファイルには何も追加されません。

OWL 2 とプロパティ特性 (v0.181.0)​

OWL 2 のオントロジーに書かれた内容はすべて保持されます: 制約、基数 (Qualified を含む)、 プロパティチェーン、キー、パニング (クラスでも個体でもある IRI)、公理への注釈、互いに素や AllDifferent の公理、否定のプロパティ表明、データ範囲。これらは取り込み・保存・検索・6 つの 書き出し形式・履歴のすべての経路で自動テストの対象です。

プロパティ特性。 関係を選ぶと、Characteristics の欄に Functional、Inverse functional、 Transitive、Symmetric、Asymmetric、Reflexive、Irreflexive が表示されます。クリックでオン / オフを 切り替えると、対応する rdf:type owl:...Property の文だけが追加・削除されます。矛盾する組み合わせ (Symmetric と Asymmetric、Reflexive と Irreflexive) や、OWL 2 DL で認められない組み合わせ (Transitive のプロパティを Functional、Inverse functional、Asymmetric、Irreflexive にする) には 注意が表示されますが、保存はできます。RDFS だけで書かれたオントロジーでは、最初の特性を加える前に、 OWL の語彙を加えてよいかを確認します (その後に作る語彙が OWL になるため)。

Data 表示での個体 (v0.182.0)​

キャンバスはスキーマ (クラス、プロパティ、「is a」) を表示します。個体 (:rex a :Dog のように、 それらのクラスを型に持つデータ) には専用の表示があります。

  • Schema | Data。 ツールバーの左の切り替えで表示を変えます。選んだ方はこのブラウザに覚えます。 キャンバスでは、個体のあるクラスに小さなバッジ (x12) が付きます。クリックすると、そのクラスの Data 表示を開きます。
  • クラスのツリー。 左に、クラスを (rdfs:subClassOf から作った) ツリーで並べ、それぞれの個体数を 示します。個体の型として使われているのにクラスとして宣言されていないものは Not declared、 owl:NamedIndividual だけを型に持つ個体は No class にまとめます。Include subclasses で 下位クラスの個体も並べます (既定はオフ。並べ方が変わるだけで、推論も保存もしません)。
  • 表。 1 行が個体 1 つです。列は、スキーマがそのクラスに与えるプロパティ (rdfs:domain がその クラスか上位クラス) と、個体が使っているその他のプロパティ (* の印) です。Columns で不要な 列を隠せます。
  • 値は文です。 セルにはそのプロパティの値をすべて表示します (個体は、言語の違う名前や、複数の 飼い主を持てます)。セルをクリックすると、値の変更・削除・追加ができます。どの変更も文 1 つだけを 変え、グラフ・データ型・言語を保ちます。データ型に合わない値や、Functional のプロパティの 2 つ目の 値には注意が出ますが、保存はできます。
  • Detail。 個体を選ぶと、型、ラベル、プロパティごとの欄、All statements を表示します。
  • + Individual は、編集中のグラフに文を 1 つ (そのクラスの rdf:type) だけ加えます。ラベルを 入れたときはラベルも加えます。Delete individual は、その個体を参照しているほかの resource の 文の件数を示し、それらも一緒に削除します (それらに付いた注釈は残ります)。どちらも、ほかの変更と 同じく History から元に戻せます。

Resources タブには、描かれず個体でもないもの (型のない resource、ほかの語彙、reifier) だけが並ぶ ようになりました。絞り込みで個体を表示することもできます。

検査 (v0.183.0)​

Checks タブには、オントロジーで確認しておきたい点を並べます。バッジは warning の件数です。ここに 出るものが保存を止めることはなく、多くは RDFS / OWL として正しい書き方です。誤りではなく、ヒントです。

WarningInformation (畳んで表示)
宣言のないクラス (上位クラス・domain・range・型として使われているのに宣言がなく、描かれない)自分自身への「is a」(A is a A)
subClassOf / subPropertyOf の循環 (循環の中のクラスは同値になる)domain や range のないプロパティ (そのためにキャンバスに描かれない場合は印を付ける)
種類の衝突 (1 つの IRI が 2 種類のプロパティ、またはクラスとデータ型の両方)孤立した宣言 (宣言されているが、どこからも使われず参照もされない)
データ型に合わない値ラベルの重複
プロパティ特性の注意、値が複数ある Functional のプロパティ

直し方。 Declare as class は owl:Class の文を 1 つ足します (RDFS のオントロジーでは rdfs:Class)。自分の名前空間のクラスは Declare all でまとめて宣言できます。ほかの語彙のクラス (例: schema:Person) は先に確認します。ふつうはその語彙のものをそのまま使う方がよいためです。循環では、 Remove で「is a」を 1 つ外します。どの直し方も文 1 つで、History から元に戻せます。ほかの気づきは その語を選ぶので、Detail で直せます。

Ignore はこのブラウザでだけ気づきを隠します。Show ignored でまた並べます。

取り込み (v0.184.0)​

オントロジーは owl:imports でほかのオントロジーを土台にできます。ChatWalaʻau はこの取り込みを カタログの中のオントロジーに限って たどります。何かをダウンロードすることはありません。

取り込み先の見つけ方。 次の順に探します。対応付け表 (下記)、W3C の語彙 rdf・rdfs・owl・xsd (常に既知)、どのカタログのオントロジーにもある カタログ IRI https://chatwalaau.com/ontology/<id>、 そしてその IRI を オントロジーの IRI (<iri> a owl:Ontology) または 版の IRI (owl:versionIRI) として宣言しているカタログのオントロジー 1 つ。IRI は完全に一致する必要があります。 2 つのオントロジーが当てはまるときは 曖昧 として、対応付けるまで何も使いません。取り込み先の取り込みも たどり、循環は切ります。たどるのは最大 20 オントロジー、合計 50 MB までです (App Settings > Ontology)。

変わること。

  • 検索とアシスタント は、オントロジーと取り込み先から答えます。そのオントロジーだけで調べたい ときは、Search の Include imports を外します (App Settings で既定をオフにもできます)。
  • キャンバス には、自分のオントロジーが参照している取り込みのクラス (上位クラス、自分の プロパティの domain や range、自分の個体の型) を、取り込み元の名前付きの 薄いノード で描きます。 読み取り専用で、自動で配置され、ドラッグできず、ファイルには何も書きません。選ぶとその文と Open in its ontology が出ます。ツールバーの Imported で隠せます。
  • Checks は取り込み先で宣言されたクラスを宣言済みとして扱い、カタログにない取り込み、曖昧な 取り込み、上限を超えた取り込みを知らせます。
  • 編集 では、文の編集欄と「Add a type」に取り込みのクラスやプロパティを候補として出します。 選んだときに書くのは、入力したときと同じ 1 文です。Data 表示 では、取り込みのクラスの下に自分の 個体を並べ、取り込みのプロパティを列の候補に出します。

Imports ダイアログ (キャンバスの上の Imports ボタン。バッジは対応が必要な取り込みの数):

  • Add from the catalog か Add by IRI で owl:imports の文を 1 つ足します。見出し (<このオントロジー> a owl:Ontology) がなければ、それも足します。Remove はその文 1 つを消します。 Save で反映し、History で元に戻せます。
  • Mapping タブは、カタログ全体で 1 つの「この import の IRI は、あのオントロジー」という表です。 ファイルが取り込む IRI を手元の写しが宣言していないとき (別の版など) や、曖昧な取り込みを決めるときに 使います。取り込みの Map... を押すと IRI が入った状態で開きます。

ほかのオントロジーが取り込んでいるオントロジーを削除するときは、確認ダイアログでその名前を示します。

RDFS 推論を含めた検索 (v0.186.0)​

ふだんの検索は、ファイルに書かれた文だけを返します。Search の Entailment (Include imports の隣) で RDFS を選ぶと、そこから RDFS で推論できる文も検索に入ります。

  • 階層をたどったクラスへの所属 -- ex:rex a ex:Dog と ex:Dog rdfs:subClassOf ex:Animal から ex:rex a ex:Animal が得られます (下位クラスと下位プロパティは推移的につながります)。
  • 下位プロパティの値 -- ex:alice ex:walks ex:rex と ex:walks rdfs:subPropertyOf ex:caresFor から ex:alice ex:caresFor ex:rex が得られます。
  • domain と range による型 -- プロパティの主語は rdfs:domain の型を、IRI や空白ノードの値は rdfs:range の型を持ちます。

Include imports がオンなら、取り込んだオントロジーの階層も使います (上位クラスが中核のオントロジーに あるのはよくある形です)。自然言語の検索も同じ選択に従います。

画面での見え方。 推論で得た行には Inferred の印が付き、まとめの行でその数を示します (「3 rows, 2 inferred」)。CONSTRUCT の結果は三つ組の表 (名前付きグラフでは graph の列付き) で示し、推論 した行には同じ印を付けます。Turtle / TriG の文は表の下に折りたたみます。ASK では推論で はじめて答えが出たときにそう示します。どのグラフにも当てはまり情報のない文 (?x a rdfs:Resource、 クラスが自分自身の下位クラスであること、?p a rdf:Property、rdf / rdfs / owl / xsd の語彙についての文) は 回答から除きます。ただし、オントロジー自身が述べている組み込みの語についての文は、RDF / RDFS の公理だけから 導けるものでなければ残します。rdf:langString a rdfs:Datatype と rdfs:Datatype rdfs:subClassOf rdfs:Class が書かれていれば、rdf:langString a rdfs:Class が検索で見つかります (v0.187.0)。

しないこと。 推論した文は、検索が求めたときに計算して検索キャッシュと一緒にメモリに置くだけで、 ファイル、その変更履歴、書き出しには一切書き込みません。名前付きグラフについては下を見てください。選択はワークスペースを開くたびに None から始まります。

名前付きグラフ。 名前付きグラフを持つオントロジーでは、各グラフに、そのグラフの文とオントロジー全体の スキーマから導ける文も入ります。クラス階層が g:schema、本が g:catalog にあるとき、 GRAPH g:catalog { ?item a ex:Publication } は ex:Book の本を見つけ、Inferred の印を付けます。スキーマ だけから導ける文は、ほかのグラフには入りません。FROM と FROM NAMED でも同じで、CONSTRUCT の表では推論した 三つ組をそのグラフと一緒に示します。

上限。 推論には owlrl を使い、W3C の RDF 意味論のテストで確かめて います。Python で動くため、3,000 文で約 10 秒かかります。そのため、それより大きい入力 (取り込みを含む) は メッセージを出して断ります。上限は App Settings > Ontology > Ontology RDFS entailment: largest input です。 データ型の推論 (異なるデータ型の値の比較、型に合わない値を矛盾として見つけること) はしません。 owl:inverseOf、owl:TransitiveProperty、owl:SymmetricProperty、owl:equivalentClass、owl:sameAs は OWL の規則なので、OWL 2 RL を選んでください (下記)。

スクリプトから使う。 POST /api/ontology/{id}/query (と /nl-query) は "entailment": "simple" (既定) か "rdfs" を受け取ります。回答には entailment が付き、rdfs のときは SELECT に row_inferred (行ごとの印) と inferred_count、CONSTRUCT では書かれた部分が turtle、推論した部分が inferred_turtle、 ASK に inferred が付きます。CONSTRUCT と DESCRIBE の回答には (どのモードでも) triples ({s, p, o, graph, inferred} の行) も付きます。"owl-rl" は下記を見てください。

OWL 2 RL 推論を含めた検索 (v0.187.0)​

Entailment: OWL 2 RL を選ぶと、RDFS に加えて OWL 2 RL の規則で推論します。RDFS で得られる結果はそのまま 含まれ、さらにワークスペースで編集した OWL の項目が検索に効くようになります。

  • プロパティの特性 -- 推移的な ex:partOf では、ex:bolt ex:partOf ex:engine と ex:engine ex:partOf ex:car から ex:bolt ex:partOf ex:car が得られます。対称的なプロパティは逆向きにも成り立ち、 ex:hasChild owl:inverseOf ex:hasParent があれば ex:hasParent の質問に答えられます。関数的・逆関数的な プロパティとキー (owl:hasKey) は、同じ個体を見分けます。
  • 同値と同一性 -- 同値のクラスやプロパティはメンバーや値を共有します。ex:annie owl:sameAs ex:ann があれば、 一方の名前についての文はもう一方についても成り立ちます。
  • クラス式 -- someValuesFrom、allValuesFrom、hasValue の制約、交差、合併、プロパティの連鎖、最大基数 0 または 1。

結果には RDFS と同じく Inferred の印が付き、ファイルには書きません。規則が加える宣言 (?c a owl:Class)、 owl:Thing の型付け、自分自身との owl:sameAs は回答から除きます。名前付きグラフを持つオントロジーでは、 各グラフにも、そのグラフとオントロジー全体の OWL のスキーマから導ける文が入ります。

矛盾。 規則が矛盾を見つけたとき (互いに素な 2 つのクラスが同じメンバーを持つ、非反射・非対称の プロパティをその性質に反して使う、owl:sameAs と owl:differentFrom を同時に使う、owl:Nothing のメンバー、 最大基数 0 なのに値がある、関数的なデータプロパティに異なる 2 つの値がある、など) は、回答の上に赤い Inconsistent ontology (OWL 2 RL) の枠を出し、見つかった矛盾を 20 件まで (グラフ付きで) 並べます。回答は そのまま表示します。矛盾したオントロジーからはどんな結論も成り立ちますが、回答に含まれるのは規則で導いた結果 だけです。

上限。 OWL 2 RL は RDFS の約 7 倍遅く、1,000 文で約 4 秒かかります。App Settings の Ontology にある 2 つの設定で抑えます: Ontology OWL 2 RL entailment: largest input (1,000 文。取り込みを含む) と largest output (主張された文 1 つあたり 50 個までの推論文。超える原因の多くは owl:sameAs の組です。断った 結果はファイルが変わるまで覚えておきます)。データ型の推論はしません。推論は W3C の OWL 2 RL のテストケースで 確かめています。

スクリプトから使う。 "entailment": "owl-rl" を送ります。回答には通知 entailment_inconsistent (count、truncated、{kind, graph, message, terms} の items) と entailment_same_as (count) が付くことが あります。大きさで断るとき (422 entailment_too_large) は、reason (input か inferred_ratio) と、上げるべき setting を示します。推論エンジンが失敗したときは 422 entailment_failed です。

時間の上限、保存時の推論、Explain、推論の表示 (v0.188.0)​

インポートの表示. ファイルのインポート中は、新しいオントロジーの配置と描画が終わるまで「Importing ファイル名...」 を表示します (読み上げにも伝わります)。

時間の上限と中止. 検索は裏の検索用プロセスで動きます。Ontology 画面の検索は 30 秒、アシスタントの検索は 20 秒 で止めます (待ち時間を含みます。モデルによる SPARQL の生成は数えません)。メッセージには、上限を上げる App Settings のキーが書かれます。Search の Stop で実行中の検索をすぐ止められ、ダイアログを閉じても止まります。

保存のたびに推論を計算. 保存、版の復元、ゴミ箱からの復元、ファイルのインポートのたびに (そのオントロジーを 取り込んでいるオントロジーにも)、RDFS と OWL 2 RL を Pipeline ジョブ (ontology-entailment、Pipelines ポータルに 表示) として裏で計算し、オントロジーの隣に保存します (ファイル、履歴、エクスポートには入りません)。推論を含めた検索は 保存された結果から答え、推論エンジンを待ちません。Search の Entailment の隣に、その状態 (「Computing...」「Ready」、 計算されなかった理由) を表示します。結果より先に来た検索は時間の上限まで待ち、間に合わなければ「計算中です。 少し後でもう一度試してください」と答えます。RDFS は推論エンジンと同じ結果を約 10 倍速く出す自前の計算に変わり、上限は RDFS が 100,000 文、OWL 2 RL が 10,000 文になりました。

Checks での矛盾. Checks タブに、保存された版の OWL 2 RL の矛盾を Inconsistent (OWL 2 RL) として並べ、主語を 選択できます。計算中や大きすぎて計算しなかったときは、情報の行でそう伝えます。未保存の編集があるときは、最後に保存した 版の結果であることを表示します。

Explain. Explain タブは、推論された文や矛盾がなぜ成り立つかを示します。適用した規則 (例: prp-trp: a transitive property chains) を、クリックで選択できる 書かれた 文までたどります。Checks の矛盾の Explain、CONSTRUCT の回答の 推論行の Why?、キャンバスや Data 表示の推論の項目のクリックで開きます。どのグラフでも成り立つ文 (公理) はそう表示します。

推論した関係の表示. Inferred: Off | RDFS | OWL 2 RL の切り替え (キャンバスと Data 表示、ブラウザーごとに記憶、 既定はオフ) で、保存されたオントロジーから導かれることを薄く表示します。

  • キャンバスには、点線の「is a」「same as」の線と、プロパティがサブプロパティやクラス階層から受け継ぐ関係 (情報が 増えるものだけ。推移的な「is a」や、書かれた domain の上位クラスは描きません)、逆プロパティの線 (derived from owl:inverseOf と表示。OWL 2 RL 自体は逆プロパティに domain も range も与えません) を描きます。 最大 500 本で、凡例を付けます。
  • Data 表示には、推論されたクラスのメンバー (クラスの木の「+N inferred」、印の付いた行とチップ) と、個体の Detail に 推論された値 (Why? 付き) を表示します。

推論された項目は編集も保存もされません。未保存の編集があるときは「最後に保存した版の結果」と表示します。

スクリプトから. GET /api/ontology/{id}/entailment (モードごとの状態)、GET /api/ontology/{id}/entailment/findings (保存された OWL 2 RL の矛盾と、変わらないキー)、GET /api/ontology/{id}/entailment/statements?mode= (表示用の推論文)、 POST /api/ontology/{id}/explain ({mode, statement | finding})。新しいエラー: 422 query_timeout (limit_seconds、 phase、setting)、query_stopped、entailment_pending、explain_not_inferred、503 query_worker_failed。

SHACL による検証 (v0.189.0)​

RDFS や OWL 2 RL は事実を足すだけで、値が足りないことや型の誤りは教えてくれません。SHACL はそれを 教えます。形状 (shape) で、あるクラスのデータがどうあるべきか (「本には ISBN がちょうど 1 つ」「価格は 0 以上の decimal」) を書くと、検証が合っていない箇所をすべて一覧します。

形状の置き場所. ヘッダーの Validation を開いて選びます。

  • 形状グラフ (Shapes graphs) -- 同じオントロジー内の、形状を入れた名前付きグラフ (ダイアログで新しいグラフ IRI を追加できます)
  • 形状オントロジー (Shapes ontologies) -- ファイル全体が形状の、カタログ内の別のオントロジー。1 組の形状を いくつものオントロジーで使い回せます。

形状はデータではありません。宣言した形状グラフは、検証からも、Schema キャンバスと Data 表示からも外します (見たいときはグラフの選択で選びます)。ファイルの普通の名前付きグラフのままなので、検索でき、履歴と エクスポートにも残ります。

いつ動くか. 保存、版の復元、ゴミ箱からの復元、ファイルのインポートのたびに -- そして形状オントロジーや 取り込み先が変わったときにも -- データを裏で pyshacl で検証し (Pipeline Job ontology-shacl)、結果を版ごとに 保存済みの推論結果の隣に残します。検証前の推論の既定は「なし」です (SHACL は対象を決めるときに rdfs:subClassOf を自分でたどるので、サブクラスのメンバーも検証されます)。domain、range、同値、owl:sameAs から型が 決まるときは RDFS か OWL 2 RL を選びます。

SHACL Core のみ. SHACL-SPARQL、SHACL-AF、SHACL-JS の構文は無視し、検査に一覧します。ネットワークからは 何も取得しません。形状はまず SHACL-for-SHACL で確かめ、正しい SHACL でない形状は検証せずに報告します。

検査での結果. SHACL violations (警告)、SHACL warnings と SHACL notes (情報) は、形状・パス・制約 ごとに 1 件 -- たとえば ex:BookShape -- ex:isbn -- sh:minCount 1 -- で、合わないノードをチップで並べます (クリックで選択)。Show shape と、全件を見る「and N more」もあります。結果のある個体は Data 表示にチップが付き、 形状の対象のクラスはキャンバスに盾の印が付きます。

Shapes 表示. 形状のあるオントロジーでは、表示の切り替えに Shapes が加わります。ノード形状ごとに表で 表示し、上に対象、重大度、メッセージ、closed、deactivated、プロパティ形状ごとに 1 行で パス (ex:p か ^ex:p)、値の型 (データ型、クラス、ノードの種類)、min と max の数、メッセージ を並べます。「other」の 矢印を開くと、in、has value、pattern、長さ、範囲の上下限、言語、unique language、node shape、重大度を編集できます。 表で扱わない構文 (sh:or、qualified shape、連続のパスなど) は読み取り専用で表示し、書かれたまま残します。 編集はほかの編集と同じく Save で保存します。

厳格モード (オントロジーごと、既定はオフ): 新しい版に SHACL の違反がある保存は、違反を並べたダイアログで 断られます。Fix で編集を続け、Save anyway で保存すると、履歴に「despite SHACL violations」と残ります。 警告と情報では断りません。時間の上限内にチェックが終わらないときは、お知らせを出して保存を通します。 ファイルのインポートと復元は断りません。

スクリプトから. PATCH /api/ontology/catalog/{id} に {"shacl": {"shapes_graphs": [...], "shapes_ontologies": [...], "inference": "none" | "rdfs" | "owl-rl", "strict": false}} (null で無効)。GET /api/ontology/{id}/shacl (状態、件数、グループ) と GET /api/ontology/{id}/shacl/results?severity=&shape=&path=&focus=&limit=。厳格モードは 422 shacl_violations を返します。それでも保存するときは shacl_override: true を送ります。

マージ、リストの順、パネルのタブ (v0.190.0)​

オントロジーへのマージ。 ファイルを Upload すると、いつも新しいオントロジーができます。開いている オントロジーにファイルの内容を足すには、ヘッダーの Merge を使います。ファイル(6 つの形式の どれでも)か、Catalog の別のオントロジーを選びます。別のオントロジーの内容はコピーされます。 Imports(owl:imports)は参照するだけなので、ここが違います。何かが変わる前に、プレビューで次を 確かめられます。

  • 新しい文の数と、すでにある文の数(すでにある文は何も変えません)
  • 名前付きグラフのあるファイルでは、グラフごとのチェックボックス。外したグラフは入らないので、 ファイルの一部だけをマージできます。Turtle のファイルは、選んだグラフ(既定はエディタの今のグラフ) に入ります
  • 足される接頭辞(マージする文が使うものだけ)と、同じ名前がここでは別の名前空間を表すため、 そのまま残す接頭辞
  • マージする内容が RDF 1.2 を使うときの、VERSION 1.2 への変更
  • 元のオントロジーのヘッダー(owl:Ontology、その取り込みと注釈)。「Include the source's ontology header」にチェックを付けない限り入りません
  • 自分の SHACL の形状グラフにあたるグラフ

Merge で、文は保存していない変更として入ります。キャンバスで確かめてから Save します (保存するまでは Undo merge で戻せます)。元の空白ノードが、こちらの空白ノードと同じものになる ことはありません。保存はいつもと同じで、履歴に残り、SHACL の厳格モードが効き、保存のあとで推論と 検証が動きます。

リストの並べ替え。 行にマウスを乗せると出るハンドルでドラッグするか、ハンドルにフォーカスして Space、矢印キー、Space で動かします。順序はサーバーが保つので、どのブラウザでもアシスタントでも同じ です。新しいオントロジー(作成・Upload・ゴミ箱からの復元)はリストの先頭に出ます。

パネルのタブ。 右のパネルが狭くなると、タブが縮みます。まず開いているタブだけが名前を残し、 さらに狭いとすべてアイコンだけになります。タブにマウスを乗せると名前が出ます。

スクリプトから。 POST /api/ontology/{id}/parse(multipart の file)は、ファイルの投影を返し ます(相対 IRI はこのオントロジーのベースで解決)。何も書き込みません。 PUT /api/ontology/catalog/order に {"ids": [...]} を送ると順序を設定します(知らない id は無視、 送らなかった id は元の順で後ろに続きます)。

表の取り込み (v0.193.0)​

インスタンスデータの多くは表で届きます。Data ビューの Import table は、CSV/TSV ファイルを 1 つのクラスの個体に変換し、何かを変える前にオントロジーの SHACL の形状で検証します。先に編集を 保存するか破棄してください。プレビューは、保存される内容そのものを検証します。

  1. ファイル。 UTF-8(BOM の有無を問わず)と Excel の Shift_JIS を自動で判別します。EUC-JP、UTF-16、 Latin-1 は選べば読めます。区切りはカンマ、タブ、セミコロン、縦棒。表の上に題がある場合は見出しの 行を指定します。
  2. 対応付け。 行のクラス(Data ビューで選んでいるクラスが既定)と、キーの列から作る主語の IRI のテンプレート(例:http://example.org/library#book-{ISBN})を決めます。同じ行からは いつも同じ個体ができるので、同じファイルを 2 回取り込んでも何も増えません。列ごとに value (データ型、または言語付きの文字列)、reference(テンプレートから作る IRI、またはラベルなどの値で 探す既存の個体)、ignore を選びます。区切り文字で、1 つのセルの複数の値を分けられます。規則は クラスのプロパティと SHACL の形状から提案されます。
  3. プレビュー。 各行を変換し(1,234 → 1234、2024/4/1 → 2024-04-01、yes/no → true/false)、 オントロジーと行をまとめて検証します。違反のある行は取り込まずに一覧にし、行番号・キー・ 理由を示します。警告だけの行は警告を表示して取り込みます。もともとオントロジーにあった違反は、 表のせいにしません。Download excluded rows で、除外した行を _reason 列付きの CSV として保存 でき、直して取り込み直せます。
  4. 追加。 受け入れた行は未保存の変更として入ります(保存するまで Undo import で戻せます)。 保存はほかの編集と同じです。

既にある個体については、値を追加する(既定)、行が与えた値で置き換える(空のセルは元の値を 残す)、行を飛ばす、から選べます。対応付けはオントロジーごとに名前を付けて保存でき、.json ファイルとしてダウンロード・読み込みもできます。1 回に読む行数は ontology_table_max_rows (10,000 行)までです。1 行は 1 つのクラスの個体になり、入れ子の値(空白ノード)は作れません。 別の表にして参照してください。.xlsx は読めないので、CSV で保存してください。

リポジトリのナレッジグラフのガイド(STEP 17/18)で、サンプルのファイルを使って手順を確かめられます。

スクリプトから。 POST /api/ontology/{id}/table/inspect(multipart の file、任意で class)は ファイルを読んで対応付けを提案します。POST /api/ontology/{id}/table/preview(multipart の file、 mapping、revision)は、追加する文と行のレポートを返します。どちらも何も書き込みません。 GET /api/ontology/{id}/table/mappings、PUT/DELETE /api/ontology/{id}/table/mappings/{name} で 保存した対応付けを管理します。

組織のドメインの IRI (v0.194.0)​

用語にはすべて IRI が必要です。これまで新しい用語は ChatWalaʻau のドメインで名付けられていました (https://chatwalaau.com/ontology/ont_3f2a9c1b7d4e#Pump)。これからは、管理者が組織の管理するドメインで 新しいオントロジーを名付けられます。その IRI を、ほかのシステム(保全システム、Excel の台帳、P&ID の変換結果 など)でも組織の識別子として使えます。

  1. IRI base を 1 回設定します。 App Settings > Ontology > IRI base に、例えば https://kg.acme.co.jp/ を入れます(http(s) の絶対 IRI で、末尾は /)。

  2. 新しいオントロジーに短い名前を付けます。 New ontology ダイアログに IRI 欄があり、 Short name(英小文字・数字・- で 2〜40 文字)とプレビューが表示されます。

    種類IRI
    オントロジー自体https://kg.acme.co.jp/plant
    用語(クラス・プロパティ)https://kg.acme.co.jp/plant#Pump
    個体https://kg.acme.co.jp/plant/id/P-101

    短い名前を付けない場合は、オントロジーの id が使われます。Use a custom ontology IRI を選ぶと、 完全な IRI を 1 つ指定できます(独自の IRI base がなくても使えます)。

  3. 新しいファイルは <https://kg.acme.co.jp/plant> a owl:Ontology と、接頭辞 :(用語)・id:(個体)で 始まります。Data ビューで作る新しい個体と Import table の提案は、.../plant/id/ を使います。

IRI を安定させるための規則です。

  • IRI は作成時に 1 回だけ決まり、オントロジーと一緒に保存されます。後から IRI base を変えても、 影響するのはその後に作るオントロジーだけです。短い名前は変更できません。
  • 短い名前は重複できません。ごみ箱の中のオントロジーも、保存期間が切れるまで自分の名前を持ち続けます。 api、id、sparql などいくつかの語は、今後の機能のために予約されています。
  • 別のオントロジーで owl:imports <https://kg.acme.co.jp/plant>(または <...plant#>)と書くと、 カタログから見つかります。古い形 https://chatwalaau.com/ontology/{id} も引き続き使えます。
  • Rename ontology に IRI とコピーボタンが表示されます。以前に作ったオントロジーには、1 回だけの Set IRI... があります。既存の IRI はそのまま残り、新しい用語だけが新しい名前空間を使います。

これらの IRI をブラウザで開いても、まだ何も返りません(IRI を開けるようにするのは今後のリリースの予定です)。 古い版に戻すと、次にカタログが書き込まれたときに、保存した IRI の設定がカタログから消えます(オントロジーの ファイルの IRI はそのまま残ります)。

スクリプトから。 POST /api/ontology/catalog は short_name か ontology_iri を受け付けます (POST /api/ontology/import はフォームの項目として同じものを受け付けます)。PATCH /api/ontology/catalog/{id} は namespace: {short_name} か {ontology_iri} を 1 回だけ受け付けます。応答には base_iri と並んで iri: {ontology, vocabulary, individuals, short_name, custom, fixed} が付き、GET /api/ontology/catalog は iri_base を返します。

アシスタントに質問する​

どのチャットでも、アシスタントは ontology_query ツール (v0.186.0 より前の名前は query_ontology) を 使えます: カタログを 一覧し、説明文から対象オントロジーを特定し、質問を読み取り専用の SPARQL に変換して、 マッチした RDF を Turtle のコードブロックで回答します。サイズはキャップされるため、 大きなオントロジーでも会話があふれることはありません。 回答にはオントロジー自身の接頭辞と書き方が使われます。モデルにも検索画面と同じ注記が 渡されるので、ファイルと食い違う件数を答えることはありません。 名前付きグラフを持つオントロジーでは回答が TriG になるので、アシスタントはどのグラフの 事実かを伝えられ、1 つのグラフだけを対象に質問することもできます。 クラスへの所属や階層についての質問では、アシスタントは RDFS 推論を含めて問い合わせられます (v0.186.0)。そのとき推論した三つ組は別のブロックで届き、アシスタントは推論であることを明示するよう 指示されています。OWL に関わる質問 (推移的・逆のプロパティ、同値、owl:sameAs) では OWL 2 RL 推論を含めて 問い合わせられます (v0.187.0)。矛盾したオントロジーの回答は見つかった矛盾から始まり、アシスタントはその警告を 添えて伝えるよう指示されています。v0.188.0 から、アシスタントの検索は 20 秒で止まり (そのときは質問を絞るよう 伝えます)、ある文がなぜ成り立つか (適用した規則と、もとになった書かれた文) を説明することもできます。 v0.189.0 から、保存済みの SHACL の検証結果から「データは形状を満たしているか」に答えられます (件数、合わない形状と 例、または 1 つのノードについての結果)。

クエリ側はすべて構造的に読み取り専用です: 検索やアシスタントのクエリが オントロジーを変更することはできません。

設定​

設定デフォルト意味
ONTOLOGY_ENABLEDtrue機能全体のマスターゲート(v0.130.2 より前は false)
ONTOLOGY_DIR.ontologiesカタログ + Turtle / TriG ファイルの保存フォルダ
ONTOLOGY_RESULTS_DIR.entailment計算結果 (保存した推論と SHACL の検証) のフォルダ。相対パスは ONTOLOGY_DIR の下、絶対パスはそのまま。キャッシュなので消しても安全 (v0.189.0)
ONTOLOGY_MAX_FILE_BYTES10485760インポート/保存のサイズ上限 (10 MiB)
ONTOLOGY_TOOL_MAX_TRIPLES200アシスタント回答のトリプル数上限
Ontology query cache (MiB) (ontology_query_cache_mb、App Settings > Ontology)1024検索の間で保持する読み込み済みオントロジーのメモリ。検索用プロセスで分け合います。0 で無効 (v0.178.0。v0.188.0 より前は 512)
Ontology history: recent versions kept (ontology_history_keep_recent、App Settings > Ontology)20オントロジーごとに必ず残す新しいバックアップの数 (v0.179.0)
Ontology history: days kept (ontology_history_keep_days)301 日 1 版を残す日数。削除したオントロジーを戻せる日数でもある (v0.179.0)
Ontology history: size limit per ontology (ontology_history_max_mb)200これを超えると古いバックアップから消す。0 で上限なし (v0.179.0)
Ontology search includes imports (ontology_query_include_imports、App Settings > Ontology)オン検索、自然言語での質問、アシスタントが取り込み先からも答える。Search の切り替えの最初の値 (v0.184.0)
Ontology imports: ontologies loaded (ontology_imports_max_ontologies)201 つのオントロジーについてたどる取り込み先の最大数 (v0.184.0)
Ontology imports: total size (MiB) (ontology_imports_max_mb)50たどる取り込み先のファイルの合計サイズの上限 (v0.184.0)
Ontology RDFS entailment: largest input (statements) (ontology_entailment_max_triples、App Settings > Ontology)100000RDFS 推論が受け付ける、書かれた文の最大数 (取り込みを含む)。保存のたびに裏で計算し、100,000 文で約 13 秒 (v0.186.0。v0.188.0 より前は 3000)
Ontology OWL 2 RL entailment: largest input (statements) (ontology_owl_rl_max_triples、App Settings > Ontology)10000OWL 2 RL 推論が受け付ける、書かれた文の最大数 (取り込みを含む)。裏で計算し、10,000 文で約 20〜50 秒 (v0.187.0。v0.188.0 より前は 1000)
Ontology OWL 2 RL entailment: largest output (inferred per stated statement) (ontology_owl_rl_max_inferred_ratio、App Settings > Ontology)50書かれた文 1 つあたりの推論文がこれを超えると断ります (多くは owl:sameAs の組が原因)。ファイルが変わるか上限を上げるまで覚えておきます (v0.187.0)
Ontology search worker processes (ontology_query_workers、App Settings > Ontology)2検索を動かす裏のプロセスの数。0 でサーバーのプロセス内で動かし、時間の上限はありません (v0.188.0)
Ontology screen: search time limit (seconds) (ontology_query_timeout_seconds)30Ontology 画面の検索をこの時間で止めます。0 で上限なし (v0.188.0)
Agent ontology_query tool: time limit (seconds) (ontology_tool_timeout_seconds)20アシスタントの検索をこの時間で止めます。0 で上限なし (v0.188.0)
Ontology screen: largest search result (rows) (ontology_query_max_rows)1000検索で表示する SELECT の行と CONSTRUCT の三つ組の数 (v0.188.0)
Ontology: compute entailment after each save (ontology_entailment_precompute)オンオフにすると、検索が最初に求めたときに計算します (v0.188.0)
Ontology: entailment computation time limit (seconds) (ontology_entailment_build_timeout_seconds)600これより長い裏の推論計算を止めて報告します (v0.188.0)
Ontology SHACL validation: largest data (statements) (ontology_shacl_max_triples)100000検証するデータの文の最大数 (書かれた文と推論した文、取り込みを含む)。単純な形状で 100,000 文に約 10 秒 (v0.189.0)
Ontology SHACL validation: results kept per version (ontology_shacl_max_results)10000版ごとに保存する結果の数。件数の集計は常に正確です (v0.189.0)
Ontology SHACL validation: time limit (seconds) (ontology_shacl_build_timeout_seconds)300これより長い裏の検証を止めて報告します (v0.189.0)
Ontology SHACL strict mode: check time limit (seconds) (ontology_shacl_strict_timeout_seconds)30厳格モードで、この時間内に終わらないチェックはお知らせを出して保存を通します (v0.189.0)
Ontology table import: data rows (max) (ontology_table_max_rows)10000Data ビューから取り込む CSV/TSV ファイルの最大のデータ行数。超えるファイルは行数を示して拒否します (v0.193.0)
Ontology IRI base (ontology_iri_base)https://chatwalaau.com/ontology/新しく作るオントロジーの名前空間(例:https://kg.example.com/)。独自の base にすると、オントロジーに短い名前を付けられます。既存のオントロジーの IRI は変わりません (v0.194.0)

v0.184.0 から、オントロジーの設定は App Settings > Ontology にあります (以前は Limits。キーと値は 変わりません)。取り込みを含めると、検索はオントロジーと取り込み先をまとめてキャッシュに保持します。合計 約 36 MB を超える閉包は既定の 1,024 MiB に収まらず、検索のたびに作り直します。よく検索するなら キャッシュの上限を上げてください。

DEMO_MODE での動作​

デモホストではオントロジーのワークスペースは読み取り専用になります。作成・ インポート・改名・保存・削除は 409 で拒否されます。閲覧・グラフキャンバス・ エクスポート・SPARQL の 2 経路はそのまま利用できます —— SPARQL クエリはストアを 変更できないため、読み取りだからです。

ストアはデモ利用者全員で共有されます。カタログは全オントロジーを名前付きで一覧し、 エクスポートは Turtle 全体を返すため、書き込み可能なままだと、ある来訪者のモデルが 次の来訪者から閲覧・編集・削除できてしまいます。

デモホストでは制限が 2 つあります。カタログは空の状態から始まります(デモ用 オントロジーは同梱していません)。また自然言語の質問ボックスはエラーを返します —— デモではスタブモデルが動作しており、その出力は SPARQL にならないためです。

自然言語→SPARQL 変換のモデルは Model Offering Catalog の App Settings -> Model Offering Catalog -> Task model assignments(roles.ontology_nl、または chatwalaau models role set ontology_nl <offering-id>)で指定します。未設定なら既定モデルを使います。専用の ONTOLOGY_NL_MODEL 変数は v0.109.0 で削除されました。