dbym4820 / hozophp
HozoPHP 是一个用于处理以 Hozo 形式构建的本体数据管理的库。
v1.2.0
2023-02-09 11:13 UTC
Requires
- php: >=7.3.0
- vlucas/phpdotenv: ^5.5
README
用于在 PHP 中处理上传的 Hozo 形式本体数据的库。为了能够灵活地应对本体的修改和文件更改而进行设计。
安装
环境构建
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();
- 显示转换后的 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)