Allows lookup of EntityIds by term or vice versa
PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
tests Add missing covers tags Nov 3, 2015
.gitignore
.scrutinizer.yml Add ScrutinizerCI config Nov 3, 2015
.travis.yml Add PHPCS and PHPMD Nov 3, 2015
README.md Add to README Nov 11, 2015
composer.json Correct sqlite dev dependency Nov 9, 2015
phpcs.xml
phpmd.xml Add PHPCS and PHPMD Nov 3, 2015
phpunit.xml.dist Update phpunit.xml.dist Nov 4, 2015

README.md

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)

Installation

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"
    }
}

Usage

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(
    $dbalConnection,
    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.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