Icon

Partager Envoyer

(Document) Wikidata

Bibliothèque d'extraction et d'interprétation d'informations Wikidata

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.)




This website uses 'cookies' to enhance user experience and provide authentification. You may change which cookies are set at any time by clicking on more info. Accept
x