نماد توضیحات توضیحات پودمان[ایجاد]
local check    = require('Module:Check2') local yesno    = require('Module:Yesno')  local cfgI18         = mw.loadData('Module:Wikidata2/i18n') local cfgParams      = mw.loadData('Module:Wikidata2/Params') local cfgDelimiters  = mw.loadData('Module:Wikidata2/Delimiters') local cfgFormats     = mw.loadData('Module:Wikidata2/Formats') local cfgPOITypes    = mw.loadData('Module:Wikidata2/POITypes') local cfgGeography   = mw.loadData('Module:Wikidata2/Geography') local cfgUnits       = mw.loadData('Module:Wikidata2/Units')  local lang = mw.language.getContentLanguage()  -- Auswertung und Prüfung von übergebenen Parametern local function wdGetParameter ( Frame, Params, Parameter )    local argsParent = Frame:getParent().args    local argsFrame = Frame.args    for key,value in pairs ( argsParent ) do       argsParent[string.lower(key)] = value    end    for key,value in pairs ( argsFrame ) do       argsParent[string.lower(key)] = value    end    return argsParent[Parameter] or argsFrame[Parameter] or Params[Parameter] end  local function getEntityId ()    local entity = mw.wikibase.getEntityObject ()    local result = {}    if ( entity ~= nil ) then       result = {           ["id"]      = entity.id,           ["hasID"]   = true,           ["errCode"] = 1,           ["errMsg"]  = cfgI18["getEntityId"]["1"],          ["entity"]  = entity          }    else       result = {           ["id"]      = "",           ["hasID"]   = false,           ["errCode"] = 0,           ["errMsg"]  = cfgI18["getEntityId"]["0"],          ["entity"]  = nil          }    end    return result end  local wdEntityId = getEntityId()  local wd = {}  function wd.formatNumberT ( number )     local decimalPosition = mw.ustring.find( number, ".", 1, true)     local minus = mw.ustring.find( number, "-", 1, true)      number = mw.ustring.gsub ( number, '%.', ',' )     if ( minus ) then number = mw.ustring.sub( number, 2) end      if (not decimalPosition) then         decimalPosition = mw.ustring.len ( number ) + 1;     end     if (decimalPosition > 4 ) then         local i = decimalPosition - 3;         while (i > 1) do             number = mw.ustring.sub(number, 1, i - 1) .. '.' .. mw.ustring.sub( number, i );             decimalPosition = decimalPosition + 1;             i = i - 3;         end     end     if ( minus ) then number = '−' .. number end     return number; end  function wd.getLabel ( id )    local result   = {}    local label = ''    if ( id == nil or id == "" or id == "self" ) then       if ( wdEntityId.hasID ) then           result = {              ["label"]   = mw.wikibase.label(),              ["errCode"] = 1,              ["errMsg"]  = cfgI18["getLabel"]["1"]             }       else           result = {              ["label"]   = "",              ["errCode"] = 0,              ["errMsg"]  = cfgI18["getLabel"]["0"]             }       end    else       label = mw.wikibase.label ( id )       if ( label ~= nil  ) then           result = {              ["label"]   = label,              ["errCode"] = 1,              ["errMsg"]  = cfgI18["getLabel"]["1"]             }       else           result = {              ["label"]   = "",              ["errCode"] = 2,              ["errMsg"]  = cfgI18["getLabel"]["2"]             }       end    end    return result end  function wd.getLabelLang ( id, lang )    local result   = {}    local label    = ''    if ( id == nil or id == "" or id == "self" ) then       -- local entity = mw.wikibase.getEntityObject ()       if ( wdEntityId.hasID ) then           result = {              ["label"]   = wdEntityId.entity:getLabel( lang ),              ["errCode"] = 1,              ["errMsg"]  = cfgI18["getLabelLang"]["1"]             }       else           result = {              ["label"]   = "",              ["errCode"] = 0,              ["errMsg"]  = cfgI18["getLabelLang"]["0"]             }       end    else       local entity = mw.wikibase.getEntityObject(id)       if ( entity ~= nil  ) then           label = entity:getLabel( lang )          if ( label ~= nil ) then             result = {                 ["label"]   = label,                 ["errCode"] = 1,                 ["errMsg"]  = cfgI18["getLabelLang"]["1"]             }          else             result = {                 ["label"]   = "",                 ["errCode"] = 0,                 ["errMsg"]  = cfgI18["getLabelLang"]["0"]                }          end       else           result = {              ["label"]   = "",              ["errCode"] = 2,              ["errMsg"]  = cfgI18["getLabelLang"]["2"]             }       end    end    return result end  function wd.getSiteLink ( id, wiki )    local result   = {}    local sitelink = {}    if ( wiki == nil ) then wiki = 'dewikivoyage' end    if ( id == nil or id == "" or id == "self" ) then       -- local entity = mw.wikibase.getEntityObject ()       if ( wdEntityId.hasID ) then          if ( wdEntityId.entity.sitelinks ~= nil ) then             sitelink = wdEntityId.entity.sitelinks[wiki]             if ( sitelink == nil ) then                result = {                    ["sitelink"]   = '',                    ["errCode"]    = 0,                    ["errMsg"]     = cfgI18["getSiteLink"]["0"]                }             else                result = {                    ["sitelink"]   = sitelink.title,                    ["errCode"]    = 1,                    ["errMsg"]     = cfgI18["getSiteLink"]["1"]                   }             end          else             result = {                 ["sitelink"]   = '',                 ["errCode"] = 3,                 ["errMsg"]  = cfgI18["getSiteLink"]["3"]                }          end       else           result = {              ["sitelink"]   = '',              ["errCode"]    = 2,              ["errMsg"]     = cfgI18["getSiteLink"]["2"]             }       end    else       local entity = mw.wikibase.getEntityObject(id)       if ( entity ~= nil  ) then           if ( entity.sitelinks ~= nil ) then             sitelink = entity.sitelinks[wiki]             if ( sitelink == nil ) then                result = {                    ["sitelink"]   = '',                    ["errCode"]    = 0,                    ["errMsg"]     = cfgI18["getSiteLink"]["0"]                }             else                result = {                    ["sitelink"]   = sitelink.title,                    ["errCode"]    = 1,                    ["errMsg"]     = cfgI18["getSiteLink"]["1"]                   }             end          else             result = {                 ["sitelink"]   = '',                 ["errCode"] = 3,                 ["errMsg"]  = cfgI18["getSiteLink"]["3"]                }          end       else           result = {              ["sitelink"]   = '',              ["errCode"] = 2,              ["errMsg"]  = cfgI18["getSiteLink"]["2"]             }       end    end    return result end  -- zählt die Einträge einer Eigenschaft function wd.getPropertyCount ( claim )        -- local count = 0    -- for k,v in pairs ( claim ) do count = count + 1 end    -- return count;    return #claim end  function wd.getBestStatement ( id, property )    local result   = {}    local statement = {}    if ( id == nil or id == "" or id == "self" ) then       if ( wdEntityId.hasID ) then          statement = wdEntityId.entity:getBestStatements( property )          if ( next(statement) == nil ) then             result = {                 ["statement"]  = '',                 ["errCode"]    = 0,                 ["errMsg"]     = cfgI18["getStatement"]["0"],                ["count"]      = 0             }          else             result = {                 ["statement"]  = statement,                 ["errCode"]    = 1,                 ["errMsg"]     = cfgI18["getStatement"]["1"],                ["count"]      = wd.getPropertyCount ( statement )                }          end       else           result = {              ["statement"]  = '',              ["errCode"]    = 2,              ["errMsg"]     = cfgI18["getStatement"]["2"],             ["count"]      = 0             }       end    else       local entity = mw.wikibase.getEntityObject(id)       if ( entity ~= nil  ) then           statement = entity:getBestStatements( property )          if ( next(statement) == nil ) then             result = {                 ["statement"]  = '',                 ["errCode"]    = 0,                 ["errMsg"]     = cfgI18["getStatement"]["0"],                ["count"]      = 0             }          else             result = {                 ["statement"]  = statement,                 ["errCode"]    = 1,                 ["errMsg"]     = cfgI18["getStatement"]["1"],                ["count"]      = wd.getPropertyCount ( statement )                }          end       else           result = {              ["statement"]  = '',              ["errCode"] = 2,              ["errMsg"]  = cfgI18["getStatement"]["2"],             ["count"]      = 0             }       end    end    return result end  function wd.getStatementAll ( id, property )    local result   = {}    local statement = ''    if ( id == nil or id == "" or id == "self" ) then       -- local entity = mw.wikibase.getEntityObject ()       if ( wdEntityId.hasID ) then          statement = wdEntityId.entity:getBestStatements( property )          if ( next(statement) == nil ) then             result = {                 ["statement"]  = '',                 ["errCode"]    = 0,                 ["errMsg"]     = cfgI18["getStatement"]["0"],                ["count"]      = 0                }          else             result = {                 ["statement"]  = wdEntityId.entity.claims[property],                 ["errCode"]    = 1,                 ["errMsg"]     = cfgI18["getStatement"]["1"],                ["count"]      = wd.getPropertyCount ( wdEntityId.entity.claims[property] )                }          end       else           result = {              ["statement"]  = "",              ["errCode"]    = 0,              ["errMsg"]     = cfgI18["getStatement"]["0"],             ["count"]      = 0             }       end    else       local entity = mw.wikibase.getEntityObject(id)       if ( entity ~= nil  ) then           statement = entity.claims[property]          if ( next(statement) == nil ) then             result = {                 ["statement"]  = '',                 ["errCode"]    = 0,                 ["errMsg"]     = cfgI18["getStatement"]["0"],                ["count"]      = 0                }          else             result = {                 ["statement"]  = statement,                 ["errCode"]    = 1,                 ["errMsg"]     = cfgI18["getStatement"]["1"],                ["count"]      = wd.getPropertyCount ( statement )                }          end       else           result = {              ["statement"]  = "",              ["errCode"] = 2,              ["errMsg"]  = cfgI18["getStatement"]["2"],             ["count"]      = 0             }       end    end    return result end  function wd.Entity ()    return wdEntityId end  function wd.EntityId ()    return wdEntityId.id end  function wd.hasEntity ()    return wdEntityId.hasID end  function wd.EntityIdErrCode ()    return wdEntityId.errCode end  function wd.EntityIdErrText ()    return wdEntityId.errMsg end  function wd.Label ()    return wd.getLabel().label end  function wd.getQualifier ( property, qualifier, formatting, delimiter )   local formatString = formatting or ''   local delimiterString = delimiter or ','   local result = {       ["errCode"]    = 0,       ["errText"]    = '',       ["qualifier"]  = ''       }    if property.qualifiers ~=  nil then     if property.qualifiers[qualifier] ~= nil then       local out = {}       for k,v in pairs(property.qualifiers[qualifier]) do         if ( v.datavalue.type == 'time' ) then            wdValue = v.datavalue.value.time           -- Workaround für Timestamps, die nur ein Jahr repräsentieren           wdValue = mw.ustring.gsub ( wdValue, '%-00%-00T00:00:00Z', '-01-01T00:00:00Z' )           if ( formatString ~= '' ) then             wdValue = lang:formatDate ( formatString, wdValue )           end           out[#out + 1] = wdValue         end       end       result.errCode = 1       result.errText = cfgI18["getQualifier"]["1"]       result.qualifier = table.concat(out, delimiterString)     else       result.errText = cfgI18["getQualifier"]["0"]     end     else     result.errText = cfgI18["getQualifier"]["0"]   end    return result end  function wd.getProperty ( claim, formatting, showRanking, label, parameters )       if ( claim[1] ~= nil ) then        local wdValue  = ''             local delimiter = cfgDelimiters[claim[1].mainsnak.property]     if ( delimiter == nil ) then delimiter = cfgDelimiters["default"] end      if ( formatting == nil ) then formatting = 'default' end     local formatString = cfgFormats[formatting] or cfgFormats["default"]     local formatStringParameters = mw.ustring.match ( formatString, '//.-#' )     if ( formatStringParameters ~= nil ) then       formatString = string.sub ( formatString, 1 , string.find ( formatString, formatStringParameters ) - 1 ) .. '#'     end      local qualifierParameters = mw.ustring.match ( formatString, '#QUALIFIER:.-#' ) or ''     local qualifierParameter = mw.ustring.gsub( qualifierParameters, '#QUALIFIER:(.-):(.-)#', '%1' ) or ''     local qualifierFormat = mw.ustring.gsub( qualifierParameters, '#QUALIFIER:(.-):(.-)#', '%2' ) or ''     local qualifierResult = {}      if ( showRanking == nil ) then showRanking = false end      if ( label == nil ) then label = wd.getLabel().label end      local out = {}      if ( claim[1].mainsnak.datatype == 'wikibase-item' ) then        for k,v in pairs ( claim ) do          wdValue = wd.getLabel( "Q" .. v.mainsnak.datavalue.value["numeric-id"] ).label          if ( wdValue == '' ) then          	wdValue = wd.getLabelLang( "Q" .. v.mainsnak.datavalue.value["numeric-id"], 'en' ).label          end          if ( formatStringParameters ~= nil ) then             local tmpFormatStringParameters = string.sub ( formatStringParameters, 3 )             if ( string.sub ( tmpFormatStringParameters, 1, 9 ) == 'sitelink:' ) then                local interwiki = string.sub ( tmpFormatStringParameters, 10 )                interwiki = mw.ustring.gsub( interwiki, '#', '' )                if ( interwiki ~= 'no' ) then                   local Link = wd.getSiteLink ( "Q" .. v.mainsnak.datavalue.value["numeric-id"], interwiki )                   if ( Link.errCode == 1 ) then                       if ( interwiki == 'dewiki' ) then                         wdValue = '[[:w:' .. Link.sitelink .. '|' .. wdValue .. ']]'                       elseif ( interwiki == 'dewikivoyage' ) then                         wdValue = '[[' .. Link.sitelink .. '|' .. Link.sitelink:gsub ( '%(.*%)', '' ) .. ']]'                      end                   end                end             end          else             local deLink = wd.getSiteLink ( "Q" .. v.mainsnak.datavalue.value["numeric-id"] )             if ( deLink.errCode == 1 ) then wdValue = '[[' .. deLink.sitelink .. '|' .. wdValue .. ']]' end          end          wdValue = mw.ustring.gsub ( mw.ustring.gsub ( mw.ustring.gsub ( formatString, '#ID#', "Q" .. v.mainsnak.datavalue.value["numeric-id"] ), '#LABEL#', label ), '#PROPERTY#', wdValue )          if showRanking then             out[#out + 1] = '<span class="wd-rank-' .. v.rank .. '">' .. wdValue .. '</span>'          else             out[#out + 1] = wdValue          end       end     elseif ( claim[1].mainsnak.datatype == 'commonsMedia' ) then       for k,v in pairs ( claim ) do          wdValue = v.mainsnak.datavalue.value          wdValue = mw.ustring.gsub ( formatString, '#PROPERTY#', wdValue )          out[#out + 1] = wdValue       end     elseif ( claim[1].mainsnak.datatype == 'quantity' ) then       for k,v in pairs ( claim ) do         wdValue = tostring ( tonumber ( v.mainsnak.datavalue.value.amount ) )         wdValue = mw.ustring.gsub ( mw.ustring.gsub ( formatString, '#FORMAT:T#', wd.formatNumberT ( wdValue ) ), '#PROPERTY#', wdValue )         if ( qualifierParameters ~= '' ) then           qualifierResult = wd.getQualifier ( v, qualifierParameter, qualifierFormat )           wdValue = mw.ustring.gsub ( wdValue, qualifierParameters, qualifierResult.qualifier )         end         local unit = cfgUnits[v.mainsnak.datavalue.value.unit] or ''         wdValue = mw.ustring.gsub ( wdValue, '#UNIT#', unit )         if showRanking then           out[#out + 1] = '<span class="wd-rank-' .. v.rank .. '">' .. wdValue .. '</span>'         else           out[#out + 1] = wdValue         end       end     elseif ( claim[1].mainsnak.datatype == 'globe-coordinate' ) then       local lat      = ''       local long     = ''       local precision   = ''       for k,v in pairs ( claim ) do          lat      = tonumber ( v.mainsnak.datavalue.value.latitude )          long     = tonumber ( v.mainsnak.datavalue.value.longitude )          precision   = tonumber ( v.mainsnak.datavalue.value.precision )          wdValue = mw.ustring.gsub ( mw.ustring.gsub ( mw.ustring.gsub ( formatString, '#LAT#', lat ), '#LONG#', long ), '#PRECISION#', precision )          if showRanking then             out[#out + 1] = '<span class="wd-rank-' .. v.rank .. '">' .. wdValue .. '</span>'          else             out[#out + 1] = wdValue          end       end     elseif ( claim[1].mainsnak.datatype == 'url' ) then       for k,v in pairs ( claim ) do          out[#out + 1] = mw.ustring.gsub ( mw.ustring.gsub ( mw.ustring.gsub ( formatString, '#PROPERTY#', v.mainsnak.datavalue.value ), '#PROPERTY_NO_HTTP#', v.mainsnak.datavalue.value:gsub ( 'https?://', '' ) ), '#LABEL#', label )       end     elseif ( claim[1].mainsnak.datatype == 'string' ) then       for k,v in pairs ( claim ) do          out[#out + 1] = mw.ustring.gsub ( formatString, '#PROPERTY#', v.mainsnak.datavalue.value )       end     end     local propertyValue    = table.concat(out, delimiter)     if ( parameters ~= nil ) then       for k,v in pairs ( parameters ) do          propertyValue    = mw.ustring.gsub ( propertyValue   , '#PARAMETER' .. k .. '#', v )       end     end     return propertyValue      else     return ''   end  end  -- Funktionen für spezielle Properties zur Verwendung in anderen Moduleen function wd.getDomain ( id )    local result = wd.getBestStatement ( id, 'P17' )    if ( result.errCode == 1 ) then       local country = "Q" .. result.statement[1].mainsnak.datavalue.value["numeric-id"]       result = wd.getBestStatement ( country, 'P78' )       if ( result.errCode == 1 ) then          -- return wd.getLabel ( "Q" .. result.statement[1].mainsnak.datavalue.value["numeric-id"] ).label )          return mw.wikibase.label ( "Q" .. result.statement[1].mainsnak.datavalue.value["numeric-id"] )       else          return ''       end    else       return ''    end end  function wd.getCoordinates ( id )    local item = wd.getBestStatement ( id, 'P625' )    local result = {       ["errCode"]    = 0,       ["lat"]        = 0,       ["long"]    = 0,       ["precision"]  = 0       }    result.errCode = item.errCode    if ( item.errCode == 1 ) then       result.lat = tonumber ( item.statement[1].mainsnak.datavalue.value.latitude )       result.long = tonumber ( item.statement[1].mainsnak.datavalue.value.longitude )       result.precision = tonumber ( item.statement[1].mainsnak.datavalue.value.precision )    end    return result end  function wd.getProvince ( id )    local newSearch   = true    local provinceID        = id    local provinceLabelID      = ''    local labelProvince        = wd.getLabel().label    local labelProvinceLink    = ''    local labelProvinceLabel   = ''        local isAn     = {}        local result = {       ["errCode"]       = 0,       ["errTxt"]        = '',       ["errTxtShort"]      = '',       ["province"]      = '',       ["provinceLink"]    = '',       ["provinceLabel"] = 'Provinz'    }        local item = wd.getBestStatement ( id, 'P131' )    result.errCode = item.errCode    while newSearch do       if ( item.errCode == 1 and item.statement[1].mainsnak.datavalue ~= nil ) then          provinceID = 'Q' .. item.statement[1].mainsnak.datavalue.value["numeric-id"]          isAn = wd.getBestStatement ( provinceID, 'P31' )          if ( isAn.errCode == 1 ) then             provinceLabelID = 'Q' .. isAn.statement[1].mainsnak.datavalue.value["numeric-id"]             labelProvince = wd.getLabel ( provinceID ).label             labelProvinceLabel = wd.getLabel ( provinceLabelID ).label             if ( cfgGeography["counties"][provinceLabelID] ) then                item = wd.getBestStatement ( provinceID, 'P131' )                --newSearch = false             elseif ( cfgGeography["provinces"][provinceLabelID] ) then                result.errCode       = 1                result.errTxt        = cfgI18["getProvince"]["1"]                result.province         = labelProvince                labelProvinceLink    = wd.getSiteLink ( provinceID ).sitelink                if ( labelProvinceLink == '' ) then                   result.provinceLink     = labelProvince                else                   result.provinceLink     = '[[' .. labelProvinceLink .. '|' .. mw.ustring.gsub( labelProvinceLink, '%s%(.*%)', '' ) .. ']]'                end                -- derzeit eigenes Label. Wenn Wikidata gewünscht: labelProvinceLabel benutzen                result.provinceLabel = cfgGeography["provinces"][provinceLabelID]                newSearch = false             else                result.errCode = 3                result.errTxt = cfgI18["getProvince"]["3"] .. provinceLabelID                result.errTxtShort = 'unbekannte Verwaltungseinheit: [[:wikidata:' .. provinceLabelID .. '|' .. provinceLabelID .. ']] ([[Module:Wikidata2/Geography|edit]])[[Kategorie:Artikel mit unbekannter Verwaltungseinheit auf Wikidata]]'                newSearch = false              end          else             result.errCode = 2             result.errTxt = cfgI18["getProvince"]["2"] .. wd.getLabel ( provinceID ).label             result.errTxtShort = 'Verwaltungseinheit [[:wikidata:' .. provinceID .. '|' .. provinceID .. ']] hat kein <em>ist ein(e)</em>[[Kategorie:Artikel mit unbekannter Verwaltungseinheit auf Wikidata]]'             newSearch = false          end       else          if ( provinceID == 'self' ) then provinceID = wd.EntityId() end          result.errCode = 0          result.errTxt = cfgI18["getProvince"]["0"]          result.errTxtShort = '[[:wikidata:' .. provinceID .. '|' .. labelProvince .. ']] hat keine übergeordnete Region.[[Kategorie:Artikel ohne übergeordnete Verwaltungseinheit auf Wikidata]]'          newSearch = false       end    end    return result end  -- Funktionen zur Verwendung in Vorlagen function wd.LabelByID ( frame )    local display  = ''    local errorStr = ''    local id = wdGetParameter ( frame, cfgParams["LabelByID"], "id" )    local result = wd.getLabel(id)    display = result.label    if ( result.errCode ~= 1 ) then       errorStr = errorStr .. check._error ( 'Funktion <span style="font-weight: bold; font-style:italic">LabelByID</span>: ' .. result.errMsg .. "ID: " .. id, 'Wikidata2' )    end    return errorStr .. check._testParams ( frame:getParent().args, cfgParams["LabelByID"], 'Wikidata2', 'lower' ) .. display end  function wd.LabelLang ( frame )    local display  = ''    local lang= wdGetParameter ( frame, cfgParams["LabelLang"], "lang" )    local result = wd.getLabelLang ( 'self', lang )    if ( result.label ~= nil ) then        display = result.label    end    return check._testParams ( frame:getParent().args, cfgParams["LabelLang"], "Wikidata2", 'lower' ) .. display end  function wd.LabelLangByID ( frame )    local display  = ''    local id= wdGetParameter ( frame, cfgParams["LabelLang"], "id" )    local lang= wdGetParameter ( frame, cfgParams["LabelLang"], "lang" )    local result = wd.getLabelLang ( id, lang )    if ( result.label ~= nil ) then        display = result.label    end    return check._testParams ( frame:getParent().args, cfgParams["LabelLangByID"], 'Wikidata2', 'lower' ) .. display end  function wd.LabelLangByIDRaw ( id, lang )    return wd.getLabelLang ( id, lang ) end  function wd.dumpEntity ( frame )    local vd = require('Module:VarDump')    local display  = ''    local id = wdGetParameter ( frame, cfgParams["dumpEntity"], "id" )    local property = mw.ustring.gsub ( wdGetParameter ( frame, cfgParams["dumpEntity"], "p" ), 'p', 'P' )    if ( property == '' ) then       display  = display .. vd.dump ( mw.wikibase.getEntityObject(id) )    else       display  = display .. vd.dump ( wd.getStatementAll ( id, property ).statement )    end    return check._testParams ( frame:getParent().args, cfgParams["dumpEntity"], "Wikidata2", 'lower' ) .. display end  function wd.getValue ( frame )    local vd = require('Module:VarDump')    local errorStr = ''    local display  = ''    local result   = {}    local id = wdGetParameter ( frame, cfgParams["getValue"], "id" )    if ( id == 'self' ) then id = wdEntityId.id end    local property = mw.ustring.gsub ( wdGetParameter ( frame, cfgParams["getValue"], "p" ), 'p', 'P' )    local ranking = wdGetParameter ( frame, cfgParams["getValue"], "ranking" )    local formatting = wdGetParameter ( frame, cfgParams["getValue"], "format" )    if (formatting == '' ) then formatting = property end    local showRanking = wdGetParameter ( frame, cfgParams["getValue"], "showRanking" )        if ( ranking == 'all' ) then       result = wd.getStatementAll ( id, property )    else       result = wd.getBestStatement ( id, property )    end        if ( result.errCode == 1 ) then       display = display .. wd.getProperty ( result.statement, formatting, yesno ( showRanking ), wd.getLabel(id).label )    else       errorStr = errorStr .. check._error ( 'FEHLER (Code: ' .. result.errCode .. '): ' .. result.errMsg .. '(ID= ' .. id .. ', Property= ' .. property .. ')', 'Wikidata2' )       if ( result.errCode == 2 ) then display = display .. '[[Kategorie:Artikel ohne Objekt auf Wikidata]]' end    end        -- display  = display .. vd.dump ( result.statement )    return errorStr .. check._testParams ( frame:getParent().args, cfgParams["getValue"], 'Wikidata2', 'lower' ) .. display end  function wd.getPOIType ( frame )    local errorStr = ''    local display  = ''    local poiType  = ''    local result   = {}    local id = wdGetParameter ( frame, cfgParams["getValue"], "id" )    result = wd.getBestStatement ( id, 'P31' )        if ( result.errCode == 0 ) then       -- Property nicht befüllt > Standard       display = display .. cfgPOITypes["default"]    elseif ( result.errCode == 1 ) then       -- was gefunden, ersten Eintrag holen, wenn nichts brauchbares da, dann Standard       poiType = cfgPOITypes["Q" .. result.statement[1].mainsnak.datavalue.value["numeric-id"]]       if ( poiType == nil ) then poiType = cfgPOITypes["default"] end       display = display .. poiType    else       -- kein Objekt mit der ID vorhanden: Fehlermeldung und Standardtyp       display = display .. cfgPOITypes["default"]       errorStr = errorStr .. check._error ( 'FEHLER (Code: ' .. result.errCode .. '): ' .. result.errMsg .. '(ID= ' .. id .. ')', 'Wikidata2' ) .. '[[Kategorie:Artikel ohne Objekt auf Wikidata]]'    end     return errorStr .. check._testParams ( frame:getParent().args, cfgParams["getPOIType"], 'Wikidata2', 'lower' ) .. display end  function wd.getPOITypeDefault ()    return cfgPOITypes["default"] end  function wd.getOfficialWebsite ( frame ) 	local display  = '' 	local result   = {} 	local text     = wdGetParameter ( frame, cfgParams["getValue"], "text" ) 	local id       = wdGetParameter ( frame, cfgParams["getValue"], "id" ) 	result = wd.getBestStatement ( id, 'P856' ) 	 	if ( result.errCode == 0 ) then 		-- Property nicht befüllt > Standard 		display = 'Eine offizielle Webseite ist nicht bekannt.<span class="wd-tools-message-inline"> Bitte auf [[:wikidata:' .. wdEntityId.id .. '|Wikidata]] nachtragen.</span>[[Kategorie:Artikel ohne offizielle Webseite auf Wikidata]]' 	elseif ( result.errCode == 1 ) then 		-- was gefunden, ersten Eintrag holen, wenn nichts brauchbares da, dann Standard 		display = display .. wd.getProperty ( result.statement, 'P856-link+site' ) 		if ( text ~= '' ) then  			display = '<span class="wikidata-content">' .. display .. '</span>' .. ' – ' .. text 		else 			if ( result.count == 1 ) then 				display = '<span class="wikidata-content">' .. display .. '</span>' .. ' – Offizielle Webseite von ' .. wd.getLabel(id).label 			elseif ( result.count > 1 ) then 				display = '<span class="wikidata-content">' .. display .. '</span>' .. ' – Offizielle Webseiten von ' .. wd.getLabel(id).label 			else 				 			end 		end    else       -- kein Objekt mit der ID vorhanden: Fehlermeldung und Standardtyp       display = 'Eine offizielle Webseite ist nicht bekannt.<span class="wd-tools-message-inline"> Objekt bitte auf [[:wikidata:Wikidata:Main Page|Wikidata]] nachtragen.</span>[[Kategorie:Artikel ohne Objekt auf Wikidata]]'    end     return check._testParams ( frame:getParent().args, cfgParams["getOfficialWebsite"], 'Wikidata2', 'lower' ) .. display end  return wd