dbym4820/hozophp

HozoPHP 是一个用于处理以 Hozo 形式构建的本体数据管理的库。

v1.2.0 2023-02-09 11:13 UTC

This package is auto-updated.

Last update: 2024-09-09 15:00:51 UTC


README

用于在 PHP 中处理上传的 Hozo 形式本体数据的库。为了能够灵活地应对本体的修改和文件更改而进行设计。

API 演示

安装

环境构建

Composer 的安装

~$ 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)