Modul:SmwWikibase: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Kein Link im Subobjekt) |
(Changed to work with coordinate objects) |
||
Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local set = require('Module:Smw').set | local set = require('Module:Smw').set | ||
− | + | ||
+ | local function getLabel( entity ) | ||
+ | rvalue = "Keine Bezeichnung gefunden" | ||
+ | |||
+ | if (entity["labels"] ~= nil) | ||
+ | then | ||
+ | labels = entity["labels"] | ||
+ | -- prioritize german over english for now | ||
+ | if (labels["de"] ~= nil) then rvalue = labels["de"]["value"] | ||
+ | elseif (labels["en"] ~= nil) then rvalue = labels["en"]["value"] | ||
+ | end | ||
+ | end | ||
+ | return rvalue | ||
+ | end | ||
+ | |||
+ | -- find wikibase objects with coordinates and make subobjects of them | ||
function p.smwfromwikibase() | function p.smwfromwikibase() | ||
local i | local i | ||
Zeile 14: | Zeile 29: | ||
if (entity["claims"] ~= nil) | if (entity["claims"] ~= nil) | ||
then | then | ||
− | if (entity["claims"][" | + | if (entity["claims"]["P2"] ~= nil) |
then | then | ||
− | value = entity["claims"][" | + | latitude = entity["claims"]["P2"][1]["mainsnak"]["datavalue"]["value"]["latitude"] |
− | result = result .. "* [[Item:" .. id .. "]] value: " .. value | + | longitude = entity["claims"]["P2"][1]["mainsnak"]["datavalue"]["value"]["longitude"] |
+ | value = latitude .. "," .. longitude | ||
+ | |||
+ | label = getLabel(entity) | ||
+ | |||
+ | result = result .. "* [[Item:" .. id .. "]] label: " .. label .. " value: " .. value | ||
smwData = {} | smwData = {} | ||
smwData["Quelle"] = "wikibase" | smwData["Quelle"] = "wikibase" | ||
− | smwData[" | + | smwData["Koordinaten"] = value |
+ | smwData["Name"] = label | ||
+ | smwData["Belongs to"] = "Anthroposophische Medizin in Berlin" | ||
smwData["Bezeichnung"] = "Aus Wikibase erzeugtes SMW - Subobjekt (" .. id .. ")" | smwData["Bezeichnung"] = "Aus Wikibase erzeugtes SMW - Subobjekt (" .. id .. ")" | ||
success = mw.smw.subobject(smwData) | success = mw.smw.subobject(smwData) |
Version vom 26. August 2021, 18:31 Uhr
Ausgabe dieses Moduls (mit Aufruf: {{#invoke:SmwWikibase|smwfromwikibase}}):
- Gemeinschaftskrankenhaus Havelhöhe (Q9) label: Gemeinschaftskrankenhaus Havelhöhe value: 52.461111,13.16 - (ok)
- Dachverband Anthroposophische Medizin in Deutschland (Q10) label: Dachverband Anthroposophische Medizin in Deutschland value: 52.510193,13.401249 - (ok)
- Klinik Arlesheim (Q11) label: Klinik Arlesheim value: 47.493888888889,7.6147219444444 - (ok)
- Praxis Bettina Schulz (Q12) label: Praxis Bettina Schulz value: 52.54791,13.34934 - (ok)
- Arztpraxis Alexanderplatz (Q17) label: Arztpraxis Alexanderplatz value: 52.5197917,13.4107139 - (ok)
local p = {}
local set = require('Module:Smw').set
local function getLabel( entity )
rvalue = "Keine Bezeichnung gefunden"
if (entity["labels"] ~= nil)
then
labels = entity["labels"]
-- prioritize german over english for now
if (labels["de"] ~= nil) then rvalue = labels["de"]["value"]
elseif (labels["en"] ~= nil) then rvalue = labels["en"]["value"]
end
end
return rvalue
end
-- find wikibase objects with coordinates and make subobjects of them
function p.smwfromwikibase()
local i
local result
result = ''
for i = 1, 20, 1 do
pageId = "Q" .. i
id, entity, wrongQualifier = p.getEntity(pageId)
if (not wrongQualifier)
then
if (entity["claims"] ~= nil)
then
if (entity["claims"]["P2"] ~= nil)
then
latitude = entity["claims"]["P2"][1]["mainsnak"]["datavalue"]["value"]["latitude"]
longitude = entity["claims"]["P2"][1]["mainsnak"]["datavalue"]["value"]["longitude"]
value = latitude .. "," .. longitude
label = getLabel(entity)
result = result .. "* [[Item:" .. id .. "]] label: " .. label .. " value: " .. value
smwData = {}
smwData["Quelle"] = "wikibase"
smwData["Koordinaten"] = value
smwData["Name"] = label
smwData["Belongs to"] = "Anthroposophische Medizin in Berlin"
smwData["Bezeichnung"] = "Aus Wikibase erzeugtes SMW - Subobjekt (" .. id .. ")"
success = mw.smw.subobject(smwData)
if (success) then
result = result .. " - (ok)"
else
result = result .. " - (Fehler)"
end
result = result .. '\n'
end
end
end
end
return result
end
local function isSet( arg )
return arg and arg ~= ''
end
function p.getEntity( id )
local wrongQualifier = false
local entity = nil
if not isSet( id ) then
return '', entity, wrongQualifier
end
if mw.wikibase.isValidEntityId( id ) then
-- expensive function call
-- redirect ids marked false, too
entity = mw.wikibase.getEntity( id )
end
if not entity then
id = ''
wrongQualifier = true
end
return id, entity, wrongQualifier
end
return p