Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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


Allows lookup of EntityIds by term or vice versa







No packages published