botk/core

用于开发轻量级RDF网关的类和工具

9.0.0 2023-05-21 09:21 UTC

README

logo

BOTK\Core

Build Status Scrutinizer Code Quality Code Coverage Latest Version Total Downloads License

用于开发智能网关以填充RDF知识库的轻量级基类。

安装

该软件包可在 Packagist 上找到。您可以使用 Composer 进行安装。

composer require botk/core

概述

此软件包提供了一些简单的工具,用于将原始数据转换为RDF链接数据。

此软件包与 LinkedData.Center SDaaS 架构 兼容。

它提供:

  • 一套帮助网关开发的库
  • 一套帮助推理器开发的库

库的使用

库的目标是简化将原始数据(例如 .csv 或 xml 文件)转换为 RDF 的过程。有大量工具可以完成这项工作,这只是其中之一。想法只是使用 PHP 执行简单的数据转换,而不是构建和配置复杂的工具。

使用 BOTK,您可以通过一组简单的属性定义简单模型来描述事物(例如,一个业务实体、一个联系人、一个产品)。然后,FactFactory 处理器根据 BOTK 语言配置文件清理数据并翻译属性,形成一个 RDF 图。大致上,这就是处理 csv 或 excel 文件时需要逐行执行的操作。

使用 BOTK 库,轻松创建“网关”,即从 stdin 获取数据流并产生 stdout RDF turtle 流的处理程序。

例如,此代码片段

$options = [
    'factsProfile' => [
        'model' => 'SampleSchemaThing',
        'modelOptions' => [
            'base' => [ 'default'=> 'urn:yp:registry:' ]
        ],
        'datamapper'	=> function($rawdata){
            $data = array();
            $data['identifier'] = $rawdata[0];
            $data['homepage'] =  $rawdata[1];
            $data['alternateName'] = [ $rawdata[2], $rawdata[3]] ;
            return $data;
        },
        'rawdataSanitizer' => function( $rawdata){
            return (count($rawdata)==4)?$rawdata:false;
        },
     ],
    'skippFirstLine'	=> true,
    'fieldDelimiter' => ','
];

BOTK\SimpleCsvGateway::factory($options)->run();

处理此 csv 数据集

 id,url,name,aka 
 1,http://linkeddata.center/,LinkedData.Center,LDC
 2,https://github.org/,GitHub,

并生成类似以下 RDF turtle 文件的内容

@prefix schema: <http://schema.org/> .

<urn:yp:registry:1> 
	schema:alternateName "LDC","LinkedData.Center" ;
    schema:url <http://linkeddata.center/> .

<urn:yp:registry:2> 
	schema:alternateName "GitHub" ;
    schema:url <https://github.org/> .

数据集处理由 SimpleCsvGateway 类驱动,该类使用一组您可以选择覆盖的选项

factProfile 由使用以下选项的 FactsFactory 类处理

modelOptions 覆盖由 $DEFAULT_OPTIONS 变量中选择的模型提供的默认字段选项。例如,请参阅从 Thing 模型 中提取的以下代码片段,该模型是 LocalBusiness 模型 的超类

配置模型选项可以强制字段清理和验证。

...
	'uri' => array(
		'filter'    => FILTER_CALLBACK,
		'options' 	=> '\BOTK\Filters::FILTER_VALIDATE_URI',
		'flags'  	=> FILTER_REQUIRE_SCALAR
	),
	'base' => array(
		'default'	=> 'urn:local:',
		'filter'    => FILTER_CALLBACK,
		'options' 	=> '\BOTK\Filters::FILTER_VALIDATE_URI',
		'flags'  	=> FILTER_REQUIRE_SCALAR
	),
	'id' => array(
		'filter'    => FILTER_CALLBACK,
		'options' 	=> '\BOTK\Filters::FILTER_SANITIZE_ID',
		'flags'  	=> FILTER_REQUIRE_SCALAR
	),
	'page' => array(	
		'filter'    => FILTER_CALLBACK,
		'options' 	=> '\BOTK\Filters::FILTER_SANITIZE_HTTP_URL',
		'flags'  	=> FILTER_FORCE_ARRAY
	),
...

字段定义驱动模型实现提供的数据清理和 RDF 生成过程。请注意,字段不总是生成 RDF 三元组:有时 RDF 生成处理需要创建空白节点或引用命名节点。对于命名节点生成,通常使用 'base' uri 命名空间(默认为 "urn:local:.")

请参阅 更多示例

为此项目做出贡献

请参阅 贡献指南

许可证

版权 © 2018-2021 由 LinkedData.Center®

特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)的副本的权利,在不加限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者授予上述权利的人这样做,前提是遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是因合同、侵权或其他方式产生的,与软件或软件的使用或其他交易有关。