请输入您要查询的百科知识:

 

词条 Module:WikidataF
释义 --script that retrieves basic data stored in Wikidata, for the datamodel, see https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua

local p = {}

local i18n = {

    ["errors"] = {        ["property-param-not-provided"] = "Paramètre propriété non renseigné.",        ["qualifier-param-not-provided"] = "Paramètre qualifier non renseigné.",        ["entity-not-found"] = "Entité non trouvée.",        ["unknown-claim-type"] = "type d'affirmation inconnu.",        ["unknown-snak-type"] = "Type de snak inconnu.",        ["unknown-datavalue-type"] = "Type de donnée non reconnu.",        ["unknown-entity-type"] = "Type d'entité non reconnu.",        ["unknown-value-module"] = "You must set both value-module and value-function parameters.",        ["value-module-not-found"] = "The module pointed by value-module not found.",        ["value-function-not-found"] = "The function pointed by value-function not found.",        ["ambigous"] = "Ambigu : plusieurs valeurs possibles",    },    ["somevalue"] = "inconnu",    ["novalue"] = "pas applicable"

}

local function getEntityFromId( id )

end

local function formatError( key )

end

local function withrank(claims, rank)

if rank == 'best' then

local preferred = withrank(claims, 'preferred')

if #preferred > 0 then

return preferred

else

return withrank(claims, 'normal')

end

end

if rank == 'valid' then

return validclaims(claims)

end

local oldclaims = claims

local claims = {}

for i, statement in pairs(oldclaims) do

if statement.rank == rank then

table.insert(claims, statement)

end

end

return claims

end

function p.getDatavalue(snak, formatting)

if snak.snaktype ~= 'value' then

return nil

end

local datatype = snak.datavalue.type

local value = snak.datavalue.value

if datatype == 'wikibase-entityid' then

if formatting == 'raw' then

return "Q" .. tostring(value['numeric-id'])

else

return p.formatEntityId("Q" .. tostring(value['numeric-id']), formatting)

end

elseif datatype == 'string' then

return value

elseif datatype == 'time' then -- format example: +00000001809-02-12T00:00:00Z

return value.time

elseif datatype == 'globecoordinate' then

-- retourne une table avec clés latitude, longitude, précision et globe à formater par un autre module (à changer ?)

value.globe = mw.loadData('Module:Wikidata/Globes')[value.globe] -- transforme l'ID du globe en nom anglais utilisable par geohack

if formatting == 'latitude' then

return value.latitude

elseif formatting == 'longitude' then

return value.longitude

else

return value -- note : les coordonnées Wikidata peuvent être utilisée depuis Module:Coordinates. Faut-il aussi autoriser à appeler Module:Coordiantes ici ?

end

elseif datatype == 'url' then

return value.url

elseif datatype == 'quantity' then

return value.amount

else

return formatError( 'unknown-datavalue-type' )

end

end

function p.getClaims( args ) -- returns a table of the claims matching some conditions given in args

    if not args.property then        return formatError( 'property-param-not-provided' )    end    --Get entity    local entity = nil    local property = string.upper(args.property)    if args.entity and type( args.entity ) == "table" then        entity = args.entity    else        entity = getEntityFromId( args.entityId )    end
    if not entity or not entity.claims or not entity.claims[property] then        return nil    end

claims = entity.claims[property]

if args.rank ~= 'all' then -- à laisser vers la fin, quan les élimination sont faites

if not args.rank or args.rank == then

args.rank = 'best'

end

claims = withrank(claims, args.rank)

end

return claims

end

function p._formatStatements( args )--Format statement and concat them cleanly

--If a value is already set, use it

if args.value and args.value ~= then

return args.value

end

local rawStatements = p.getClaims( args )

local formattedStatements = {}

if not rawStatements or #rawStatements == 0 then

return nil

end

    for i, statement in pairs( rawStatements ) do 		table.insert( formattedStatements, formatStatement( statement, args ))    end    return mw.text.listToText( formattedStatements, args.separator, args.conjunction )    -- .. ''

end

function p.formatStatements( frame )

local args = {}

if frame == mw.getCurrentFrame() then

args = frame:getParent().args -- paramètres du modèle appelant (est-ce vraiment une bonne idée ?)

for k, v in pairs(frame.args) do

args[k] = v

end

else

args = frame

end

return p._formatStatements( args )

end

function formatStatement( statement, args )

    if not statement.type or statement.type ~= 'statement' then        return formatError( 'unknown-claim-type' )    end

end

function p.formatSnak( snak, args )

if not args then args = {} end -- pour faciliter l'appel depuis d'autres modules

    if snak.snaktype == 'somevalue' then        return i18n['somevalue']    elseif snak.snaktype == 'novalue' then        return i18n['novalue']    elseif snak.snaktype == 'value' then        return p.getDatavalue( snak, args.formatting)    else        return formatError( 'unknown-snak-type' )    end

end

function p.formatEntityId( entityId, formatting )

local label = mw.wikibase.label( entityId )

    if not label then    	label = entityId --TODO what if no links and label + fallback language?    end

if formatting == 'nolink' then

return label

else

local link = mw.wikibase.sitelink( entityId )

if link then

return '' .. label .. ''

else

return '' .. label .. ''

end

end

end

return p

1 : Page utilisant des données de Wikidata/' .. string.upper(args.property) .. '

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/12 10:25:04