dbym4820 / hozophp
HozoPHP is a ontology data management library for treat hozo-formed ontology
v1.2.0
2023-02-09 11:13 UTC
Requires
- php: >=7.3.0
- vlucas/phpdotenv: ^5.5
README
アップロードした法造形式オントロジーのデータをPHPで処理するためのライブラリ. オントロジーの修正・ファイルの変更に柔軟に対応できるよう設計したもの.
Installation
環境構築
Composerのインストール
- Composer公式:https://getcomposer.org/download/
- Windows:ダウンローダ(Composer-Setup.ext)からインストール
- macOS
~$ brew install composer
ライブラリのインストール
~$ composer require dbym4820/hozophp
オントロジーのアップロード・バージョン管理
プロジェクトの任意の場所に法造のオントロジーファイル(XML)をアップ.
以下では,プロジェクトが
── project-root/
├── index.php
└── ontology/
└── 20220916-sample.xml
というディレクトリ構造になっていて,index.phpの中で呼び出す前提で解説.
プロジェクトへの導入
方法1:コンストラクタでオントロジーを設定
require_once('./vendor/autoload.php'); // autoloaderの読み込み
use HozoPHP\OntologyManager; // 名前空間の使用宣言
$ontology = new OntologyManager(__DIR__."/ontology/", "20220916-sample.xml"); // 初期設定の反映とインスタンス化
もちろん,useせずに, new HozoPHP\OntologyManager("/ontology/", "20220916-sample.xml") としても別にいい
方法2:個別に設定
require_once('./vendor/autoload.php'); // autoloaderの読み込み
use HozoPHP\OntologyManager; // 名前空間の使用宣言
$ontology = new OntologyManager(); // インスタンス化
$ontology->setOntologyDirectory(__DIR__."/ontology/"); // オントロジーのディレクトリを指定
$ontology->setOntology("20220916-sample.xml"); // 自分のオントロジーの指定
$ontology->treatOntology(); // オントロジーをPHPオブジェクト化
方法3:オントロジーのXML文字列を渡してパージング
require_once('./vendor/autoload.php'); // autoloaderの読み込み
use HozoPHP\OntologyManager; // 名前空間の使用宣言
$ontology = new OntologyManager(); // インスタンス化
$ontology->treatOntologyString("オントロジーのXML文字列"); // 文字列を入力してオントロジーを変換
方法4:URLを指定してオントロジーのXML文字列を取得してパージング
require_once('./vendor/autoload.php'); // autoloaderの読み込み
use HozoPHP\OntologyManager; // 名前空間の使用宣言
$ontology = new OntologyManager(); // インスタンス化
$ontology->treatRemoteOntologyString("https://"); // 文字列を入力してオントロジーを変換(外部のサーバーを参照)
$ontology->treatRemoteOntologyString("./"); // 文字列を入力してオントロジーを変換(自分のプロジェクトでホストしているサーバーを参照)
使用例
require_once('./vendor/autoload.php'); // autoloaderの読み込み
use HozoPHP\OntologyManager; // 名前空間の使用宣言
$ontology = new OntologyManager(__DIR__."/ontology/", "20220916-sample.xml"); // 初期設定の反映とインスタンス化
$result_array = $ontology->getAllConcepts(); //処理の実行(全概念の取得)
$ontology->showJson($result_array); // 結果のArrayをJSONとして表示
詳細な使用例は,本プロジェクトのindex.phpを参照のこと.
提供メソッド一覧
ユーティリティ
表示ユーティリティ
- XMLファイルをテキストとして表示(ファイルをコンバートしている場合)
$ontology->showXMLFile();
- XMLファイルをテキストとして表示(treatOntologyStringかtreatRemoteOntologyStringを使用して文字列をコンバートしている場合)
$ontology->showXMLString();
- XMLを変換したJSONオブジェクトを表示
$ontology->showJson();
基本概念の取得
- 全基本概念の一覧
$result = $ontology->getAllConcepts();
- 特定のIDを持つ基本概念
$result = $ontology->getConceptInfoFromID('基本概念ID');
- 特定のラベルを持つ基本概念
$result = $ontology->getConceptInfoFromLabel('基本概念ラベル');
- 特定のIDのを持つ基本概念の親概念
$result = $ontology->getParentConcept('基本概念ID');
- 特定のIDのを持つ基本概念の子概念一覧
$result = $ontology->getChildrenConcepts('基本概念ID');
- 特定のIDのを持つ基本概念の祖先概念
$result = $ontology->getAncestorConcepts('基本概念ID');
- 特定のIDのを持つ基本概念の子孫概念一覧
$result = $ontology->getDescendantConcepts('基本概念ID');
部分概念の取得
- 特定の基本概念に付随する部分概念・属性概念の一覧
$result = $ontology->getPartOfConceptInfo('基本概念ID');
- 特定の基本概念に付随する部分概念・属性概念(祖先のものも含む)一覧
$result = $ontology->getAncestorSubConcepts('基本概念ID');
特定のIDを持つ部分概念
インスタンス概念の取得
- 全インスタンスの一覧
$result = $ontology->getAllInstance()
特定の部分概念を持つインスタンスの一覧
$result = $ontology->getAllInstanceWhichHasSpecificPartInput(..........)
関係概念の取得
- IS-A関係の一覧
$result = $ontology->getISARelationshipList();
その他
概念の構造
基本概念/インスタンス概念
[
'id' => '概念ID(string)',
'label' => '概念ラベル(string)',
'instantiation' => 'インスタンスか否か(string:"true"か"false")',
'sub_concept' => [
[
'id' => '部分・属性概念のID(string)',
'kind' => '部分概念か属性概念か(string:"p/o"か"a/o"),
'cardinality' => '個数制約(string)',
'role' => 'ロール概念名(string)',
'class_constraint' => 'クラス制約概念ラベル(string)',
'role_holder' => 'ロールホルダー名(string)',
'value' => '値(string)',
'sub_concept' =>
[
// *以下同形(部分概念の部分概念があれば)
]
]
// *以下同形(他の部分概念があれば)
]
]
依存ライブラリ・対応システムなど
- PHP(>=7.3)
- Composer(>=2)
- 法造(https://hozo.jp/index_jp.html)(5.7)