Module:WikidataIdentifiers
MyWikiBiz, Author Your Legacy — Thursday November 21, 2024
Jump to navigationJump to search
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 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
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 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