Module:WikidataIdentifiers
Lua error in package.lua at line 80: module 'Module:Yesno' not found.
Functions for use in retrieving Wikidata for use in templates that deal with identifiers
- getIdentifierQualifier returns the value of a qualifier for an Identifier
Functions[edit source]
getIdentifierQualifier[edit source]
This returns the value of a qualifier for an identifier such as Template:Q.
There is an assumption is that one value exists for the property, and only one qualifier exists for that value.
Constraint violations for Template:Q are at d:Wikidata:Databasereports/Constraintviolations/P1367 #Single_value
Usage[edit source]
Normally use like this within a template for use in the article concerned:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |<property> |qual=<qualifier>}}
If used outside of the related article, an expensive version of the call is available:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |<property> |qual=<qualifier> |qid=<Q-value for target in Wikidata}}
Examples[edit source]
Retrieving the Template:Q qualifier for the Template:Q within an article:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |P1367 |qual=P1114}}
Retrieving the Template:Q qualifier for the Template:Q for Template:Q outside of the article:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |P1367 |qual=P1114 |qid=Q5083334}}
→ Lua error at line 24: attempt to index field 'wikibase' (a nil value).
-- Functions for use in retrieving Wikidata for use in templates that deal with identifiers
-- getIdentifierQualifier returns the value of a qualifier for an Identifier
p = {}
-- getIdentifierQualifier returns the value of a qualifier for an Identifier
-- such as 'Art UK artist ID', P1367
-- the assumption is that one value exists for the property
-- and only one qualifier exists for that value
-- Constraint violations for P1367 are at:
-- https://www.wikidata.org/wiki/Wikidata:Database_reports/Constraint_violations/P1367#Single_value
p.getIdentifierQualifier = function(frame)
local propertyID = mw.text.trim(frame.args[1] or "")
-- The PropertyID of the qualifier
-- whose value is to be returned is passed in named parameter |qual=
local qualifierID = frame.args.qual
-- Can take a named parameter |qid which is the Wikidata ID for the article.
-- This will not normally be used because it's an expensive call.
local qid = frame.args.qid
if qid and (#qid == 0) then qid = nil end
local entity = mw.wikibase.getEntityObject(qid)
local props
if entity and entity.claims then
props = entity.claims[propertyID]
end
if props then
-- Check that the first value of the property is an external id
if props[1].mainsnak.datatype == "external-id" then
-- get any qualifiers of the first value of the property
local quals = props[1].qualifiers
if quals and quals[qualifierID] then
-- check what the dataype of the first qualifier value is
-- if it's quantity return the amount
if quals[qualifierID][1].datatype == "quantity" then
return tonumber(quals[qualifierID][1].datavalue.value.amount)
end
-- checks for other datatypes go here:
end
end
end
end
return p