Persistence of Wikibase terms with lookups of those terms and by those terms

1.3.0 2018-01-04 01:31 UTC

This package is auto-updated.

Last update: 2024-06-28 23:51:31 UTC


QueryR TermStore

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

Stores terms of Wikibase entities to facilitate

  • lookup of EntityIds given a term
  • lookup of term(s) given an EntityId
  • storing a Fingerprint for an EntityId
  • removing all terms associated with an EntityId

System dependencies

  • PHP 5.5 or later (PHP 7 and HHVM are supported)
  • php5-sqlite (only needed for running the tests)


To add this package as a local, per-project dependency to your project, simply add a dependency on queryr/term-store to your project's composer.json file. Here is a minimal example of a composer.json file that just defines a dependency on TermStore 1.x:

    "require": {
        "queryr/term-store": "~1.0"


If you are curious what the database schema is, look at src/TermStoreInstaller.php.

All services are constructed via the TermStoreFactory class:

use Queryr\TermStore\TermStoreFactory;
$factory = new TermStoreFactory(
	new TermStoreConfig( /* optional config */ )

$dbalConnection is a Connection object from Doctrine DBAL.

Writing to the store

$writer = $factory->newTermStoreWriter();

$writer->storeEntityFingerprint( $entityId, $fingerprint );
$writer->dropTermsForId( $entityId );

Lookup up an EntityId based on terms

$idLookup = $factory->newEntityIdLookup();

$idLookup->getItemIdByLabel( $languageCode, $labelText );
$idLookup->getItemIdByText( $languageCode, $termText );
$idLookup->getIdByLabel( $languageCode, $labelText );

See the EntityIdLookup interface for all methods and their documentation.

Lookup label based on EntityId and language

$labelLookup = $factory->newLabelLookup();
$labelLookup->getLabelByIdAndLanguage( $entityId, $languageCode );

See the LabelLookup interface for documentation.

Running the tests

For tests only

composer test

For style checks only

composer cs

For a full CI run

composer ci

Release notes

Version 1.3.0 (2018-01-04)

  • Bumped minimum PHP version to 7.1
  • Added scalar and return type hints

Version 1.2.0 (2017-02-28)

  • Installation with Wikibase DataModel 6.x is now allowed
  • Installation with Wikibase DataModel 5.x is now allowed

Version 1.1.0 (2015-11-10)

  • Added newLabelLookup to TermStoreFactory
  • Improved documentation

Version 1.0.0 (2015-11-03)

  • Installation with Wikibase DataModel 4.x is now allowed
  • Installation with Wikibase DataModel 3.x is now allowed
  • Changed minimum Wikibase DataModel version to 2.5
  • Added ci command that runs PHPUnit, PHPCS, PHPMD and covers tags validation
  • Added TravisCI and ScrutinizerCI integration

Version 0.2.2 (2014-10-21)

  • Installation with Wikibase DataModel 2.x is now allowed

Version 0.2.1 (2014-10-05)

  • Improved performance of TermStore::storeEntityFingerprint via usage of a transaction

Version 0.2 (2014-09-11)

  • Added TermStoreFactory. Service construction should now happen via this factory
  • Added EntityIdLookup, which is now implemented by TermStore
  • Added getItemIdByLabel, getPropertyIdByLabel, getItemIdByText and getPropertyIdByText to TermStore

Version 0.1 (2014-06-23)

  • Initial release