parent
874cfb8a6f
commit
2a8ba31410
|
@ -910,6 +910,66 @@ final class NodaWikidataFetcher {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function for retrieving a superordinate place relation from Wikidata information
|
||||||
|
* for places
|
||||||
|
*
|
||||||
|
* @param integer $onum Place ID.
|
||||||
|
* @param array<mixed> $data Wikidata information (P131 claim).
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function retrieveSuperordinateAdministrativePlace(int $onum, array $data):void {
|
||||||
|
|
||||||
|
if (!empty($data[0]["mainsnak"]["datavalue"]["value"]["id"])) {
|
||||||
|
|
||||||
|
// Check if there already is a superordinate of the current place
|
||||||
|
$result = $this->_mysqli_noda->query_by_stmt("SELECT 1
|
||||||
|
FROM `ort_relation`
|
||||||
|
WHERE `ort_menor_id` = ?
|
||||||
|
LIMIT 1", "i", $onum);
|
||||||
|
if ($result->num_rows !== 0) {
|
||||||
|
$result->close();
|
||||||
|
$result = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$result->close();
|
||||||
|
$result = null;
|
||||||
|
|
||||||
|
// If there is no superordinate, check if the identified superordinate
|
||||||
|
// is known in the noda DB.
|
||||||
|
|
||||||
|
$superordinateId = $data[0]["mainsnak"]["datavalue"]["value"]["id"];
|
||||||
|
|
||||||
|
$result = $this->_mysqli_noda->query_by_stmt("SELECT `ort_id`
|
||||||
|
FROM `noda_orte`
|
||||||
|
WHERE `noda_source` = 'wikidata'
|
||||||
|
AND `noda_nrinsource` = ?", "s", $superordinateId);
|
||||||
|
|
||||||
|
if (!($superordinateData = $result->fetch_row())) {
|
||||||
|
$result->close();
|
||||||
|
$result = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$result->close();
|
||||||
|
$result = null;
|
||||||
|
|
||||||
|
$topPlaceId = $superordinateData[0];
|
||||||
|
|
||||||
|
// Enter superordinate place by Wikidata
|
||||||
|
$insertStmt = $this->_mysqli_noda->do_prepare("INSERT INTO `ort_relation`
|
||||||
|
(`ort_mayor_id`, `ort_menor_id`, `ort_relation`)
|
||||||
|
VALUES
|
||||||
|
(?, ?, 1)");
|
||||||
|
$insertStmt->bind_param("ii", $topPlaceId, $onum);
|
||||||
|
$insertStmt->execute();
|
||||||
|
$insertStmt->close();
|
||||||
|
$insertStmt = null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function for retrieving place information based on a Wikidata ID.
|
* Function for retrieving place information based on a Wikidata ID.
|
||||||
*
|
*
|
||||||
|
@ -941,6 +1001,11 @@ final class NodaWikidataFetcher {
|
||||||
|
|
||||||
$alreadyEntered = false;
|
$alreadyEntered = false;
|
||||||
|
|
||||||
|
// P131: Located in administrative unit
|
||||||
|
if (isset($data['claims']['P131'])) {
|
||||||
|
$this->retrieveSuperordinateAdministrativePlace($onum, $data['claims']['P131']);
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($wikilink[$lang])) {
|
if (!empty($wikilink[$lang])) {
|
||||||
|
|
||||||
$datafromwiki = MD_STD::runCurl("https://" . urlencode($lang) . ".wikipedia.org/w/api.php?action=parse&page=" . urlencode($wikilinkterm[$lang]) . "&prop=text§ion=0&format=json", 10000);
|
$datafromwiki = MD_STD::runCurl("https://" . urlencode($lang) . ".wikipedia.org/w/api.php?action=parse&page=" . urlencode($wikilinkterm[$lang]) . "&prop=text§ion=0&format=json", 10000);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user