Une API permet d'interroger et d'obtenir les données disponibles sur wikidata.org.
chora peut utiliser une bibliothèque externe installée via Composer (freearhey/wikidata) pour interagir avec cette API afin de :
—renvoyer des résultats de recherche lorsqu'aucun enregistrement n'existe dans la base de données de l'application
—importer ces résultats dans l'application comme des contenus à part entière.
Vous trouverez un exemple d'implémentation dans views/data/search.
Voici en résumé comment utiliser bibliothèque Wikidata dans un contrôleur, avec l'initialisation de la langue souhaitée pour les résultats :
//Initialize and query Wikidata in current language/fr language:
require_once ROOT.'vendor/autoload.php';
$wikidata = new WikidataWikidata(strtolower($this->session->userdata('language_code'))); //Initialize with current language
$wikidata->language=strtolower($this->session->userdata('language_code')); //Set language to current
$results = $wikidata->search($search,'fr'); //Perform a query for 'fr' language and set the $results object
if (is_object($results) && !$results->isEmpty()) {
//There is at least one result
$singleResult = $results->first(); //Get first result as the $singleResult object
$resultId = $singleResult->id; //Get first result id
$entity = $wikidata->get($resultId); //Get complete entity after its id
//Retrieve the properties of entity in an array: $arr_prop[<name of property>]=<value of property>...
$arr_prop=array();
if (isset($entity) && is_object($entity) && $entity->properties!=NULL) {
foreach($entity->properties as $key=>$property) {
$arr_prop[$property]=$entity->get($property)[0];
}
}
}
Voici enfin comment accéder à la valeur d'une propriété d'une entité :
//Retrieve the value of 'logo' property for the $entity entity and display it as an image:
if (is_object($entity) && $entity->properties!=NULL) {
$logo=$entity->get('logo');
if (is_array($logo) && count($logo)>=1) {
echo '<img class="icon-large padding" src="'.$logo[0].'"/>';
}
}
La documentation d'origine de la bibliothèque utilisée est reprise ci-après :
Installation change current directory to the root of your installation and execute: composer require freearhey/wikidata Usage $wikidata = new Wikidata(); Search Search by entity label: $results = $wikidata->search('London'); Search by Wikidata property ID and string value: $results = $wikidata->searchBy('P238', 'LON'); Search by Wikidata property ID and entity ID: $results = $wikidata->searchBy('P17', 'Q146'); Check if no search results if($results->isEmpty()) { echo 'no results'; die(); } Result Retrieve first result data $singleResult = $results->first(); Get result ID $resultId = $singleResult->id; // Q84 Get result label $resultLabel = $singleResult->label; // London Get result aliases $resultAliases = $singleResult->aliases; // [ 'London, UK', 'London, United Kingdom', 'London, England' ] Get result description $resultDescription = $singleResult->description; // capital of England and the United Kingdom Entity Get single entity by ID: $entity = $wikidata->get('Q26'); Get entity ID $entityId = $entity->id; // Q26 Get entity label $entityLabel = $entity->label; // Northern Ireland Get entity aliases $entityAliases = $entity->aliases; // [ 'NIR', 'UKN', 'North Ireland' ] Get entity description $entityDescription = $entity->description; // region in north-west Europe, part of the United Kingdom Get list of all available properties for specific entity $properties = $entity->properties; // array(1) { [0]=> string(11) "instance_of", ... } Get value specific property $official_language = $entity->get('official_language'); // array(1) { [0]=> string(7) "English" } That's all. License Wikidata is licensed under the MIT license.
Ce document a été publié le 2018-12-28 14:49:08. (Dernière mise à jour : 2019-02-04 21:53:37.)