Module:WD-gildi
Þessi skrifta sækir og lagar til upplýsingar úr staðhæfingum (statements) frá Wikidata. Henni er ætlað til að vera notuð í sniðum þar sem koma fram upplýsingar um viðkomandi viðfangsefni.
Í grunninn tekur skriftan við tveimur ónefndum gildum. Í fyrsta gildið er sett eiginleikinn (t.d. P112) og ef áhugi er fyrir því að sækja upplýsingar frá öðrum hlut (item) þá er sett númer hans í seinna gildið (t.d. Q100). Annars er notaður sami hluturinn og er tengt við síðunna sem unnið er að. Skriftan sjálf sér um að setja upplýsingarnar á læsilegt form. Notkun: {{#invoke:WD-gildi|main|P112|Q100}}. Útkoma: (stofnandi Boston borgar í Bandaríkjunum).
Til dæmis:
- Tími er upphaflega á ISO sniði á Wikidata, en sýndur á forminu "mánaðardagur. mánuður ár" hér
- Hnit eru gefin upp á Wikidata með "E" (East) og "W" (West), en þetta er leiðrétt í "A" (Austur) og "V" (Vestur)
- Staðhæfingar með hlutum eða eiginleikum eru gefin sem auðkenni frá Wikidata, en eru sýnd hér með nafni þeirra
- Magntölur eru gefnar í tvennu lagi en eru sýndar hér saman
- Allar upplýsingar eru gefnar upp með breytingartengli á Wikidata í smáu letri, svo ekki fari á milli mála hvaðan upplýsingarnar koma
Fyrir þá sem vilja frá ákveðnar útkomur úr sniðinu eru fleiri möguleikar, þeir eru allir valkvæðir.
- Gildið "sérgreinir" (qualifier) sækir undirgildi undir staðhæfingunni. Þetta getur til dæmis verið útgáfudagsetningin á staðhæfingunni (þ.e.a.s upprunalegu heimildinni). Tilgreindur er eiginleikinn sem á við, t.d. P100.
- Gildið "timeformat" gefur þér færi á að setja dagsetningar á annað form. Nota þarf kóðana sem tilgreindir eru á Hjálp:Þáttunar_aðgerðir##time. Sjálfgefið er að gefa upp dagsetninguna á forminu dagur. mánaðarnafn ár.
- Gildið "delimiter" gefur þér færi á að setja eitthvað annað á milli staðhæfingar og sérgreinis en bil.
Sjá einnig
breyta- Þáttunaraðgerðina {{#property:}}
local p = {}
function p._main(frame)
local pframe = frame:getParent()
return p.main(pframe)
end
function p.main(frame)
local args = frame.args
local eiginleiki = args[1]
local hlutur = nil
if args[2] and mw.wikibase.entityExists( args[2] ) then
hlutur = args[2]
else
hlutur = mw.wikibase.getEntityIdForCurrentPage()
end
if args["sérgreinir"] then
sergreinir = args["sérgreinir"]
end
local statements = nil
local qualifier = nil
if eiginleiki and hlutur and mw.ustring.sub(eiginleiki, 0, 1) == "P" and mw.wikibase.entityExists( hlutur ) and
mw.wikibase.getBestStatements(hlutur, eiginleiki)[1] and mw.wikibase.getBestStatements(hlutur, eiginleiki)[1].mainsnak.datavalue
and mw.wikibase.getBestStatements(hlutur, eiginleiki)[1].rank == "preferred" and mw.wikibase.getBestStatements(hlutur, eiginleiki)[1].references
and mw.wikibase.getBestStatements(hlutur, eiginleiki)[1].references[1] then
local Bstat = mw.wikibase.getBestStatements(hlutur, eiginleiki)[1]
-- Þessi hluti sækir og færir innihald staðhæfinga (statements) á skiljanlegt form
-- hnit
if Bstat.mainsnak.datavalue.type == "globecoordinate" then
local hnit = mw.wikibase.renderSnak(Bstat.mainsnak)
hnit = mw.ustring.gsub(hnit, "E", "A")
statement = mw.ustring.gsub(hnit, "W", "V")
-- tími
elseif Bstat.mainsnak.datavalue.type == "time" then
statement = mw.language.getContentLanguage():formatDate((args.timeformat or "j. F Y"),
Bstat.mainsnak.datavalue.value.time)
-- strengur
elseif Bstat.mainsnak.datavalue.type == "string" then
statement = Bstat.mainsnak.datavalue.value
-- hlutur eða eiginleiki
elseif Bstat.mainsnak.datavalue.type == "wikibase-entityid" then
statement = mw.wikibase.getLabel(Bstat.mainsnak.datavalue.value.id)
-- magn
elseif Bstat.mainsnak.datavalue.type == "quantity" then
statement = mw.wikibase.renderSnak(Bstat.mainsnak)
end
if sergreinir and mw.ustring.sub(sergreinir, 0,1) == "P" and mw.wikibase.entityExists( sergreinir ) and
Bstat.qualifiers[sergreinir][1] and
Bstat.qualifiers[sergreinir][1].datavalue then
-- Þessi hluti sækir og færir innihald sérgreina (qualifiers) á skiljanlegt form
-- hnit
if Bstat.qualifiers[sergreinir][1].datavalue.type == "globecoordinate" then
local hnit = mw.wikibase.renderSnak(Bstat.mainsnak)
hnit = mw.ustring.gsub(hnit, "E", "A")
qualifier = "(" .. mw.ustring.gsub(hnit, "W", "V") .. ")"
-- tími
elseif Bstat.qualifiers[sergreinir][1].datavalue.type == "time" then
qualifier = "(" .. mw.language.getContentLanguage():formatDate((args.timeformat or "j. F Y"),
Bstat.qualifiers[sergreinir][1].datavalue.value.time) .. ")"
-- strengur
elseif Bstat.qualifiers[sergreinir][1].datavalue.type == "string" then
qualifier = "(" .. Bstat.qualifiers[sergreinir][1].datavalue.value .. ")"
--hlutur eða eiginleiki
elseif Bstat.qualifiers[sergreinir][1].datavalue.type == "wikibase-entityid" then
qualifier = "(" .. mw.wikibase.getLabel(Bstat.qualifiers[sergreinir][1].datavalue.value.id) .. ")"
-- magn
elseif Bstat.qualifiers[sergreinir][1].datavalue.type == "quantity" then
qualifier = "(" .. mw.wikibase.renderSnak(Bstat.qualifiers[sergreinir][1]) .. ")"
end
end
local reftable = nil
local reftext = nil
if Bstat.references[1].snaks["P123"] and Bstat.references[1].snaks["P123"][1].datavalue
and Bstat.references[1].snaks["P854"] and Bstat.references[1].snaks["P854"][1].datavalue then
reftext = '[' .. Bstat.references[1].snaks["P854"][1].datavalue.value .. ' ' ..
mw.wikibase.getLabel(Bstat.references[1].snaks["P123"][1].datavalue.value.id) .. '] '
if Bstat.references[1].snaks["P813"] and Bstat.references[1].snaks["P813"][1].datavalue then
reftext = reftext .. mw.language.getContentLanguage():formatDate((args.timeformat or "j. F Y"),
Bstat.references[1].snaks["P813"][1].datavalue.value.time)
end
reftable = frame:extensionTag( "ref", reftext )
end
return (statement or "") .. (args.delimiter or " ") .. (qualifier or "") .. (reftable or "") ..
" <small>[[Mynd:Antu document-edit-sign.svg|14px|link=d:" .. (hlutur or mw.wikibase.getEntityIdForCurrentPage()) .. "]]</small>"
else
return ""
end
end
function p._langlink(frame)
local pframe = frame:getParent()
return p.langlink(pframe)
end
function p.langlink(frame)
local args = frame.args
if args[1] and mw.wikibase.getEntityIdForTitle(args[1]) then
hlutur = mw.wikibase.getEntityIdForTitle(args[1])
elseif args[1] and mw.wikibase.entityExists( args[1] ) then
hlutur = args[1]
else
hlutur = mw.wikibase.getEntityIdForCurrentPage()
end
local projects = {
["wikipedia"] = "wiki",
["wikipedía"] = "wiki",
["wikiorðabók"] = "wiktionary",
["wikibækur"] = "wikibooks",
["wikivitnun"] = "wikiquote",
["wikiheimild"] = "wikisource",
["wikilífverur"] = "specieswiki",
["wikispecies"] = "specieswiki",
["commons"] = "commonswiki",
["meta"] = "metawiki",
["mediawiki"] = "mediawikiwiki",
["wikidata"] = "wikidatawiki"
}
local projectlinks = {
["wikipedia"] = "",
["wikipedía"] = "",
["wikiorðabók"] = "wikt:",
["wiktionary"] = "wikt:",
["wikibækur"] = "b:",
["wikibooks"] = "b:",
["wikivitnun"] = "q:",
["wikiquote"] = "q:",
["wikiheimild"] = "s:",
["wikisource"] = "s:",
["wikilífverur"] = "wikispecies:",
["wikispecies"] = "wikispecies:",
["commons"] = "commons:",
["meta"] = "m:",
["mediawiki"] = "mw:",
["wikidata"] = "d:"
}
if hlutur and args[2] and mw.text.trim(args[2]) ~= "" and args[3] then
return "[[:" .. projectlinks[mw.ustring.lower(args[3])] .. args[2] .. ":" .. mw.wikibase.getSitelink(hlutur, args[2] ..
(projects[mw.ustring.lower(args[3])] or args[3])) .. "]]"
elseif hlutur and args[2] and mw.text.trim(args[2]) == "" and args[3] then
local languages = {}
local project = (projects[mw.ustring.lower(args[3])] or args[3])
local projectlink = projectlinks[mw.ustring.lower(args[3])]
for x, y in pairs(mw.wikibase.getEntity( hlutur ).sitelinks) do
if project == "commonswiki" or project == "specieswiki" or project == "metawiki" or
project == "wikidatawiki" or project == "mediawikiwiki" then
break;
end
local lang = string.gsub(x, project, "")
if lang == "zh_min_nan" then
lang = 'nan'
end
if string.find(x, project .. "$", 1, false) then
if project == "wiki" and x == "commonswiki" or x == "specieswiki" or x == "metawiki" or
x == "wikidatawiki" or x == "mediawikiwiki" then
--nothing
else
table.insert(languages, "[[:" ..projectlink .. lang ..
':' .. y.title .. ']]')
end
end
end
if mw.wikibase.getEntity( hlutur ).sitelinks[project] and project == "commonswiki" or project == "specieswiki" or project == "metawiki" or
project == "wikidatawiki" or project == "mediawikiwiki" then
table.insert(languages, "[[:" ..projectlink .. mw.wikibase.getEntity( hlutur ).sitelinks[project].title .. ']]')
end
if project == "commonswiki" then
if mw.wikibase.getBestStatements(hlutur, "P373")[1] and mw.wikibase.getBestStatements(hlutur, "P373")[1].mainsnak.datavalue then
table.insert(languages, "[[:" ..projectlink .. 'category:' .. mw.wikibase.getBestStatements(hlutur, "P373")[1].mainsnak.datavalue.value .. ']]')
end
end
if args["aðgreining"] == nil then
args["aðgreining"] = ", "
end
return table.concat(languages, args["aðgreining"])
else
return ''
end
end
return p