Module:WikidataIdentifiers
| This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing. |
| This module is currently under extended confirmed protection. Extended confirmed protection prevents edits from all unregistered editors and registered users with fewer than 30 days tenure and 500 edits. The policy on community use specifies that extended confirmed protection can be applied to combat disruption, if semi-protection has proven to be ineffective. Extended confirmed protection may also be applied to enforce arbitration sanctions. Please discuss any changes on the talk page; you may submit an edit request to ask for uncontroversial changes supported by consensus. |
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
getIdentifierQualifier
This returns the value of a qualifier for an identifier such as Art UK artist ID (P1367).
There is an assumption is that one value exists for the property, and only one qualifier exists for that value.
Constraint violations for Art UK artist ID (P1367) are at d:Wikidata:Databasereports/Constraintviolations/P1367 #Single_value
Usage
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
Retrieving the quantity (P1114) qualifier for the Art UK artist ID (P1367) within an article:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |P1367 |qual=P1114}}
Retrieving the quantity (P1114) qualifier for the Art UK artist ID (P1367) for Charles Walter Simpson (Q5083334) outside of the article:
{{#invoke:WikidataIdentifiers |getIdentifierQualifier |P1367 |qual=P1114 |qid=Q5083334}}→
-- 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