queryr / term-store
Persistence of Wikibase terms with lookups of those terms and by those terms
Installs: 349
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 2
pkg:composer/queryr/term-store
Requires
- php: >=7.1
 - doctrine/dbal: ~2.4
 - wikibase/data-model: ~6.0
 
Requires (Dev)
- ext-pdo_sqlite: *
 - ockcyp/covers-validator: ~0.6.1
 - phpmd/phpmd: ~2.6
 - phpunit/phpunit: ~6.5
 - squizlabs/php_codesniffer: ~3.2
 
README
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.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 
newLabelLookuptoTermStoreFactory - 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::storeEntityFingerprintvia 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 byTermStore - Added 
getItemIdByLabel,getPropertyIdByLabel,getItemIdByTextandgetPropertyIdByTexttoTermStore 
Version 0.1 (2014-06-23)
- Initial release