queryr/entity-store

为 Wikibase 实体集合提供持久化和基本查找功能

1.1.0 2017-03-01 17:33 UTC

This package is auto-updated.

Last update: 2024-08-28 23:04:29 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version Download count

Wikibase 实体集合提供持久化和基本查找功能。

系统依赖

  • PHP 5.5 或更高版本(支持 PHP 7 和 HHVM)
  • php5-sqlite(仅用于运行测试)

安装

要将此包作为本地、项目特定的依赖项添加到您的项目中,只需在项目中的 composer.json 文件中添加对 queryr/entity-store 的依赖即可。以下是一个定义了 EntityStore 1.x 依赖项的 composer.json 文件的示例。

{
    "require": {
        "queryr/entity-store": "~1.0"
    }
}

用法

如果您想了解数据库模式,请查看 src/EntityStoreInstaller.php

所有服务都是通过 EntityStoreFactory 类构建的

use Queryr\EntityStore\EntityStoreFactory;
$factory = new EntityStoreFactory(
	$dbalConnection,
	new EntityStoreConfig( /* optional config */ )
);

$dbalConnection 是来自 Doctrine DBALConnection 对象。

写入值

要写入值,您需要 ItemStorePropertyStore

$itemStore = $factory->newItemStore();
$propertyStore = $factory->newPropertyStore();

主要的写入方法是“存储文档”和“根据 ID 删除文档”。

$itemStore->storeItemRow( $itemRow );
$itemStore->deleteItemById( $itemId );

请注意,$itemRow 是由本组件定义的 ItemRow 类型。它代表项目表中行中的所有值。它不需要有完全实例化的 Wikibase DataModel EntityDocument 对象,您只需要 JSON。

除了 ItemRow 之外,还有一个 ItemInfo,它除 JSON 外与 ItemRow 相同。(内部它们通过包私有特性 ItemRowInfo 共享代码。)

查询值

此列表不完整,主要用于让您了解此库包含的内容。要获取完整列表,请查看通过存储构建的服务及其接口。

通过 ID 获取项

$q42 = $itemStore->getItemRowByNumericItemId( 42 );

属性数据类型查找

$lookup = $factory->newPropertyTypeLookup();
$propertyType = $lookup->getTypeOfProperty( $propertyId );

列出项信息

获取前 100 项的便宜信息。

$itemInfoList = $itemStore->getItemInfo( 100, 0 );

将结果限制为类型为“书”的项,假设 424242 是“书”的数字 ID。

$itemInfoList = $itemStore->getItemInfo( 100, 0, 424242 );

列出项类型

这将获取表示系统中的项类型(“实例为”)的数字项 ID。

$itemTypes = $itemStore->getItemTypes();

运行测试

仅用于测试

composer test

仅用于样式检查

composer cs

用于完整的 CI 运行

composer ci

发行说明

版本 1.1.0(2017-02-28)

  • 添加了对 Wikibase DataModel 6.x 和 5.x 的支持

版本 1.0.0(2015-11-04)

  • 添加了对 Wikibase DataModel 4.x 和 3.x 的支持
  • 将最小 Wikibase DataModel 版本更改为 2.5
  • 添加了运行 PHPUnit、PHPCS、PHPMD 和 covers 标签验证的 ci 命令
  • 添加了 TravisCI 和 ScrutinizerCI 集成

版本 0.6.2(2014-12-24)

  • 不再支持 Wikibase DataModel 1.x
  • 添加了 ItemStore::getIdForEnWikiPage

版本 0.6.1(2014-10-21)

  • 允许与 DataModel 2.x 一起安装

版本 0.6.0(2014-10-03)

  • 添加了 ItemStore::deleteItemById
  • 添加了 PropertyStore::deletePropertyById
  • 插入项或属性将删除任何旧版本
  • ItemStore 现在索引 enwiki 站点链接

版本 0.5.4(2014-09-08)

  • ItemStore::getItemInfo 添加了可选的 $itemType 参数

版本 0.5.3(2014-09-06)

  • 添加了 ItemTypeExtractor 的实现 InstanceOfTypeExtractor

版本 0.5.2(2014-09-06)

  • 修复了 ItemRowFactory 中的项序列化错误

版本 0.5.1 (2014-09-06)

  • 添加了 ItemStore::getItemTypes

版本 0.5 (2014-09-06)

  • 移除了 ItemRowItemInfo 的构造函数
  • 向物品表添加了 item typeenglish label 字段
  • 添加了 ItemRow::getItemInfo
  • 添加了 EntityPageInfo
  • 添加了 ItemRowFactory。现在应通过此类构建 ItemRow

版本 0.4 (2014-08-27)

  • 添加了 EntityStoreFactory
  • EntityStore 的构建现在是包私有
  • 添加了 ItemStorePropertyStore,都可以通过 EntityStoreFactory 构建
  • 添加了 PropertyTypeLookup,可以通过 EntityStoreFactory::newPropertyTypeLookup 构建

版本 0.3.1 (2014-08-20)

  • 添加了额外的方法级别文档,以获得更好的类型提示

版本 0.3 (2014-08-20)

  • ItemRowPropertyRow 现在位于 Queryr\EntityStore\Rows
  • 更改了 ItemRowPropertyRow 的构造函数签名
  • 所有 EntityStore 方法现在抛出类型为 EntityStoreException 的异常
  • 添加了 EntityStoreException
  • 添加了 PropertyInfoItemInfo
  • EntityStore 添加了 getPropertyInfogetItemInfo

版本 0.2 (2014-06-29)

  • 将包重命名为 queryr/dump-storequeryr/entity-store
  • Store 类重命名为 EntityStore
  • StoreInstaller 类重命名为 EntityStoreInstaller
  • EntityStore 现在在其构造函数中需要 EntityStoreConfig 的实例
  • EntityStoreInstaller 现在在其构造函数中需要 EntityStoreConfig 的实例

版本 0.1 (2014-05-15)

  • 首次发布