Module:Sandbox/Rexxs/PropIDs

-- This is used to get the QIDs of all of the values of a property, as a comma separated list if multiple values exist

-- Usage: {{#invoke:Sandbox/Rexxs/PropIDs |getPropertyIDs | |FETCH_WIKIDATA}}

-- Usage: {{#invoke:Sandbox/Rexxs/PropIDs |getPropertyIDs | | |qid=}}

local p = {}

p.getPropertyIDs = function(frame)

local propertyID = mw.text.trim(frame.args[1] or "")

local input_parm = mw.text.trim(frame.args[2] or "")

-- can take a named parameter |qid which is the Wikidata ID for the article. This will not normally be used.

local qid = frame.args.qid

if qid and (#qid == 0) then qid = nil end

if input_parm == "FETCH_WIKIDATA" then

local entity = mw.wikibase.getEntityObject(qid)

local propclaims

if entity and entity.claims then

propclaims = entity.claims[propertyID]

end

if propclaims then

-- if wiki-linked value collect the QID in a table

if (propclaims[1] and propclaims[1].mainsnak.snaktype == "value" and propclaims[1].mainsnak.datavalue.type == "wikibase-entityid") then

local out = {}

for k, v in pairs(propclaims) do

out[#out + 1] = "Q" .. v.mainsnak.datavalue.value["numeric-id"]

end

return table.concat(out, ", ")

else

-- not a wikibase-entityid, so return empty

return ""

end

else

-- no claim, so return empty

return ""

end

else

return input_parm

end

end

return p