Modiwl:Authority control
Uses Lua: |
Disgrifiad
golygu- Prif: Rheolaeth awdurdod
Mae'r Nodyn yma'n cysylltu erthyglau ar Wicipedia i gatalogau'r amryfal Lyfrgelloedd ynghyd a'u systemau. This metadata template links Wikipedia articles to various library catalogue systems: gan fwyaf, erthyglau ar bobl h.y. bywgrafiadau.
- Cefnogir y canlynol
- Virtual International Authority File (VIAF)
- Library of Congress Control Number (LCCN)
- International Standard Name Identifier (ISNI)
- Open Researcher and Contributor ID (ORCID)
- Integrated Authority File (Gemeinsame Normdatei or GND)
- LIBRIS by the National Library of Sweden (SELIBR)
- National Library of France (Bibliothèque nationale de France or BNF)
- Dutch Biography Portal (Biografisch Portaal or BPN)
- ResearcherID (RID)
- BIBSYS (BIBSYS)
- Union List of Artist Names (ULAN)
- MusicBrainz Artist ID (MBA)
- National Library of Australia (NLA)
- National Diet Library (NDL)
- Newidiwyd
- Corporate Bodies Authority File (Gemeinsame Körperschaftsdatei or GKD), now part of GND
- Name Authority File (Personennamendatei or PND), now part of GND
- Subject Headings Authority File (Schlagwortnormdatei or SWD), now part of GND
Defnyddiwr Wicidata ar gyfer y dynodwyr canlynol BNF, BPN, GND, ISNI, LCCN, MBA, NDL, ORCID, ULAN, NLA a VIAF.
Mae'r Nodyn yn gwiro gwerthoedd ISNI a ORCID ac yn galw Nodyn 'Gwall' pe cyfyd problem.
Wherever possible, the template also generates a link to WorldCat Identities, using the LCCN variable. (It will shortly be possible to link using VIAF values—this is being tested by OCLC and will be activated in the template as soon as it goes live.)
Position
golyguAs a metadata template, the Authority control template should be placed after the external links section and navigation templates, right before the Persondata template.
Usage
golygu{{Authority control |VIAF=xxxxxx |LCCN=n/xx/xxxxxx |ISNI=xxxx xxxx xxxx xxxx |ORCID=xxxx xxxx xxxx xxxx |GND=xxxxxx |SELIBR=xxxxxx |BNF=xxxxxx |BPN=xxxxx |RID=xxxxx |BIBSYS=xxxxx |ULAN=xxxxx |MBA=xxxxxx |NLA=xxxxxxx |NDL=xxxxxxxx}}
- Blank
{{Authority control |VIAF= |LCCN= |ISNI= |ORCID= |GND= |SELIBR= |BNF= |BPN= |RID= |BIBSYS= |ULAN= |MBA= |NLA= |NDL=}}
- Blank (reliant wholly on Wikidata)
{{Authority control}}
- The following data sources are accepted
Parameter | Scope | Name | Search | Remarks |
---|---|---|---|---|
VIAF | People | Virtual International Authority File | [1] | International authority data from the Online Computer Library Center (OCLC) |
LCCN | People | Library of Congress Control Number | [2] | See Wikipedia:Authority control#LCCN for formatting instructions |
ISNI | People | International Standard Name Identifier | [3] | ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers. |
ORCID | People | ORCID | [4] | Authority data on researchers, academics, etc. The ID range is a subset of the ISNI range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at orcid.org. Please take care not to confuse ORCID and ISNI identifiers. |
GND | All | Integrated Authority File (Gemeinsame Normdatei) | [5] [6] | Authority data on people, corporations and subjects from the German National Library |
SELIBR | People | LIBRIS | [7] | Authority data from the National Library of Sweden |
BNF | People | Bibliothèque nationale de France | [8] (Ffrangeg) | Authority data of people listed in the general catalogue of the National Library of France |
BPN | People | Dutch Biography Portal (Biografisch Portaal) | [9] | Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands. |
RID | People | ResearcherID | [10] | An identifying system for scientific authors. The system was introduced in January 2008 by Thomson Reuters. The combined use of the Digital Object Identifier with the ResearcherID allows for a unique association of authors and scientific articles. |
BIBSYS | People | BIBSYS | [11] | BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions. |
ULAN | Artists | Union List of Artist Names | [12] | ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names). |
MBA | Artists | MusicBrainz Artist ID | [13] | MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public. |
NLA | People or groups | National Library of Australia | [14] | NLA Trove’s People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via VIAF. |
NDL | People | National Diet Library | [15] | Authority data listed in the catalog of the national library of Japan. Search also available via VIAF. |
- The following data sources are deprecated
and will cause articles to be added to hidden tracking sub-categories of Category:Wikipedia articles with authority control information:
Deprecated parameters | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Examples
golygu{{Authority control |VIAF=59263727 |LCCN=n/79/113947 |ISNI=0000 0000 8138 6064 |GND=119408643 |BNF=13746617f |MBA=9dd93d09-24b4-41f1-a48b-ef48b07499c3 }} – for Alexander Graham Bell produces:
{{Authority control |VIAF=66861474 |LCCN=n/87/142671 |ISNI=0000 0001 0911 2808 |GND=117421863 }} – for Harry Forbes Witherby produces:
Categories
golyguThe template applies the following categories:
- Specific identifiers are in subcategories of Category:Pages with authority control information
- Faulty parameters
- Category:Wikipedia articles with faulty authority control identifiers (BPN)
- Category:Wikipedia articles with faulty authority control identifiers (ISNI)
- Category:Wikipedia articles with faulty authority control identifiers (LCCN)
- Category:Wikipedia articles with faulty authority control identifiers (ORCID)
- Category:Wikipedia articles with faulty authority control identifiers (SELIBR)
- Category:Wikipedia articles with faulty authority control identifiers (VIAF)
Wikidata
golyguThe template can get its information from Wikidata:
Parameter | Type | Property ID |
---|---|---|
VIAF | VIAF | p214 |
LCCN | LCCN | p244 |
ISNI | ISNI | p213 |
ORCID | ORCID | p496 |
GND | GND | p227 |
SELIBR | LIBRIS | p906 |
BNF | BNF | p268 |
BPN | BPN | p651 |
ULAN | ULAN | p245 |
MBA | MBID | p434 |
NLA | NLA | p409 |
NDL | NDL | p349 |
BIBSYS | BIBSYS | p1015 |
The MusicBrainz Artist ID (MBID) is currently restricted to items that have occupation set to either:
or are an instance of either
If none of these is applicable, it can be forced with: {{authority control|MBA={{#Property:P434}}}} which for The Beatles would produce:
Note that for The beatles {{authority control}} would work out of the box already.
RID (ResearcherID) currently does not have a property.
Microformat
golyguThe template wraps each UID value with the HTML markup: <span class="uid">...</span>
, which enables the first-found value to be included in an hCard microformat. For that reason, VIAF, where present, is emitted first.
See also
golygu- Wikipedia:Authority control—editor information
- Help:Authority control—reader help
- Template:Infobox book—supporting some library classification systems
- Template:German National Library portal
- For more information:
- de:Wikipedia:Normdaten (Almaeneg)
- de:Hilfe:GND (Almaeneg)
- Commons:Template:Authority control
TemplateData
golyguThis is the TemplateData documentation for the template used by the new VisualEditor.
Authority control
A template to link Wikipedia articles to various library catalogue systems
Paramedr | Disgrifiad | Math | Statws | |
---|---|---|---|---|
VIAF | VIAF | International authority data from the Online Computer Library Center (OCLC) | Rhif | dewisol |
GND | GND PND | Authority data on people, corporations and subjects from the German National Library | Llinyn | dewisol |
LCCN | LCCN | Library of Congress Control Number. See [[Wikipedia:Authority control#LCCN]] for formatting instructions | Rhif | dewisol |
ISNI | ISNI | ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles | Llinyn | dewisol |
SELIBR | SELIBR | Authority data from the National Library of Sweden | Llinyn | dewisol |
ORCID | ORCID | Authority data on researchers, academics, etc. The ID range has been defined as a subset of the forthcoming ISNI range | Llinyn | dewisol |
BNF | BNF | Authority data of people listed in the general catalogue of the National Library of France | Llinyn | dewisol |
BPN | BPN | Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands | Rhif | dewisol |
RID | RID | An identifying system for scientific authors. The system was introduced in January 2008 by Thomson Reuters. The combined use of the Digital Object Identifier with the ResearcherID allows for a unique association of authors and scientific articles | Llinyn | dewisol |
BIBSYS | BIBSYS | BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions | Llinyn | dewisol |
ULAN | ULAN | ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists | Llinyn | dewisol |
MBA | MBA | MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public. | Llinyn | dewisol |
NLA | NLA | Authority control number issued by the National Library of Australia. | Llinyn | dewisol |
NDL | NDL | Authority control number issued by the National Diet Library (National Library of Japan). | Rhif | dewisol |
External links
golygu- Maintenance reports
require('strict')
local function getCatForId( id )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if namespace == 0 then
return '[[Category:Wikipedia articles with ' .. id .. ' identifiers]]'
elseif namespace == 2 and not title.isSubpage then
return '[[Category:User pages with ' .. id .. ' identifiers]]'
else
return '[[Category:Miscellaneous pages with ' .. id .. ' identifiers]]'
end
end
-- the DWB one is experimental and not on enwiki!
-- the string change is because all Wikidata entries are stored with the English links (start with s...)
-- and we need to use the Welsh ones (start with c...)
local function dwbLink( id )
local id2 = mw.ustring.gsub(id, '^s', 'c')
return '[https://bywgraffiadur.cymru/article/' .. id2 .. ' Y Bywgraffiadur Cymreig] [[Categori:Dalennau gyda gwybodaeth am Reolaeth Awdurdod]]'
end
local function viafLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[https://viaf.org/viaf/' .. id .. ' ' .. id .. ']' .. getCatForId( 'VIAF' )
end
local function kulturnavLink( id )
return '[http://kulturnav.org/language/en/' .. id .. ' id]'
end
local function sikartLink( id )
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id=' .. id .. '&lng=en ' .. id .. ']'
end
local function tlsLink( id )
local id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'WIKI') end)
return '[http://tls.theaterwissenschaft.ch/wiki/' .. id2 .. ' ' .. id .. ']'
end
local function ciniiLink( id )
return '[http://ci.nii.ac.jp/author/' .. id .. '?l=en ' .. id .. ']'
end
-- the ODNB one is experimental and not on enwiki!
local function odnbLink( id )
return '[https://doi.org/10.1093/ref:odnb/' .. id .. ' Bywgraffiadur Cenedlaethol Geiriadur Rhydychen] ([http://global.oup.com/oxforddnb/info/freeodnb/libraries/ Mynediad llyfrgelloedd cyhoeddus]) [[Categori:Wikipedia articles with ODNB identifiers]]'
end
local function bneLink( id )
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id .. ' ' .. id .. ']'
end
local function uscongressLink( id )
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index=' .. id .. ' ' .. id .. ']'
end
local function narapersonLink( id )
return '[http://research.archives.gov/person/' .. id .. ' ' .. id .. ']'
end
local function naraorganizationLink( id )
return '[http://research.archives.gov/organization/' .. id .. ' ' .. id .. ']'
end
local function botanistLink( id )
local id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'PATH') end)
return '[http://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=' .. id2 .. ' ' .. id .. ']'
end
local function mgpLink( id )
-- TODO Implement some sanity checking regex
return '[http://www.genealogy.ams.org/id.php?id=' .. id .. ' ' .. id .. ']'
end
local function rslLink( id )
-- TODO Implement some sanity checking regex
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=' .. id .. '&CON_LNG=ENG ' .. id .. ']'
end
local function leonoreLink( id )
-- Identifiants allant de LH/1/1 à LH/2794/54 (légionnaires)
-- Identifiants allant de C/0/1 à C/0/84 (84 légionnaires célèbres)
-- Identifiants allant de 19800035/1/1 à 19800035/385/51670 (légionnaires décédés entre 1954 et 1977, et quelques dossiers de légionnaires décédés avant 1954)
if not string.match( id, '^LH/%d%d?%d?%d?/%d%d?%d?$' ) and
not string.match( id, '^C/0/%d%d?$' ) and
not string.match( id, '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) then
return false
end
return '[//www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1=' .. id .. ' ' .. id .. ']'
end
local function sbnLink( id )
if not string.match( id, '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and not string.match( id, '^IT\\ICCU\\%u%u[%d%u]%u\\%d%d%d%d%d%d$' ) then
return false
end
return '[http://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid=' .. id .. ' ' .. id .. ']'
end
local function nkcLink( id )
return '[http://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=' .. id .. '&CON_LNG=ENG ' .. id .. ']'
end
local function nclLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=' .. id .. '&CON_LNG=ENG ' .. id .. ']'
end
local function ndlLink( id )
return '[http://id.ndl.go.jp/auth/ndlna/' .. id .. ' ' .. id .. ']'
end
local function sudocLink( id )
if not string.match( id, '^%d%d%d%d%d%d%d%d[%dxX]$' ) then
return false
end
return '[http://www.idref.fr/' .. id .. ' ' .. id .. ']'
end
local function hlsLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.hls-dhs-dss.ch/textes/f/F' .. id .. '.php ' .. id .. ']'
end
local function lirLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.e-lir.ch/e-LIR___Lexicon.' .. id .. '.450.0.html ' .. id .. ']'
end
local function splitLccn( id )
if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
end
if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
return mw.text.split( id, '/' )
end
return false
end
local function append(str, c, length)
while str:len() < length do
str = c .. str
end
return str
end
local function lccnLink( id )
local parts = splitLccn( id )
if not parts then
return false
end
local lccnType = parts[1] ~= 'sh' and 'names' or 'subjects'
id = parts[1] .. parts[2] .. append( parts[3], '0', 6 )
return '[http://id.loc.gov/authorities/' .. lccnType .. '/' .. id .. ' ' .. id .. ']' .. getCatForId( 'LCCN' )
end
local function mbLink( id )
-- TODO Implement some sanity checking regex
return '[//musicbrainz.org/artist/' .. id .. ' ' .. id .. ']' .. getCatForId( 'MusicBrainz' )
end
--Returns the ISNI check digit isni must be a string where the 15 first elements are digits
local function getIsniCheckDigit( isni )
local total = 0
for i = 1, 15 do
local digit = isni:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
local remainder = total % 11
local result = (12 - remainder) % 11
if result == 10 then
return "X"
end
return tostring( result )
end
--Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid
--See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
local function validateIsni( id )
id = id:gsub( '[ %-]', '' ):upper()
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
if getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then
return false
end
return id
end
local function isniLink( id )
id = validateIsni( id )
if not id then
return false
end
return '[http://isni.org/' .. id .. ' ' .. id:sub( 1, 4 ) .. ' ' .. id:sub( 5, 8 ) .. ' ' .. id:sub( 9, 12 ) .. ' ' .. id:sub( 13, 16 ) .. ']' .. getCatForId( 'ISNI' )
end
local function orcidLink( id )
id = validateIsni( id )
if not id then
return false
end
id = id:sub( 1, 4 ) .. '-' .. id:sub( 5, 8 ) .. '-' .. id:sub( 9, 12 ) .. '-' .. id:sub( 13, 16 )
return '[http://orcid.org/' .. id .. ' ' .. id .. ']' .. getCatForId( 'ORCID' )
end
local function gndLink( id )
return '[http://d-nb.info/gnd/' .. id .. ' ' .. id .. ']' .. getCatForId( 'GND' )
end
local function selibrLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[//libris.kb.se/auth/' .. id .. ' ' .. id .. ']' .. getCatForId( 'SELIBR' )
end
local function bnfLink( id )
--Add cb prefix if it has been removed
if not string.match( id, '^cb.+$' ) then
id = 'cb' .. id
end
return '[http://catalogue.bnf.fr/ark:/12148/' .. id .. ' ' .. id .. '] [http://data.bnf.fr/ark:/12148/' .. id .. ' (data)]' .. getCatForId( 'BNF' )
end
local function bpnLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.biografischportaal.nl/en/persoon/' .. id .. ' ' .. id .. ']' .. getCatForId( 'BPN' )
end
local function ridLink( id )
return '[http://www.researcherid.com/rid/' .. id .. ' ' .. id .. ']' .. getCatForId( 'RID' )
end
local function bibsysLink( id )
return '[http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid ' .. id .. ']' .. getCatForId( 'BIBSYS' )
end
local function ulanLink( id )
return '[//www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id .. ' ' .. id .. ']' .. getCatForId( 'ULAN' )
end
local function nlaLink( id )
return '[//nla.gov.au/anbd.aut-an' .. id .. ' ' .. id .. ']' .. getCatForId( 'NLA' )
end
local function getIdsFromWikidata( item, property )
local ids = {}
if not item.claims[property] then
return ids
end
for _, statement in pairs( item.claims[property] ) do
if statement.mainsnak.datavalue then
table.insert( ids, statement.mainsnak.datavalue.value )
end
end
return ids
end
local function matchesWikidataRequirements( item, reqs )
for _, group in pairs( reqs ) do
local property = 'p' .. group[1]
local qid = group[2]
if item.claims[property] ~= nil then
for _, statement in pairs ( item.claims[property] ) do
if statement.mainsnak.datavalue ~= nil then
if statement.mainsnak.datavalue.value['numeric-id'] == qid then
return true
end
end
end
end
end
return false
end
local function createRow( id, label, rawValue, link, withUid )
if link then
if withUid then
return '* ' .. label .. ' <span class="uid">' .. link .. '</span>\n'
else
return '* ' .. label .. ' ' .. link .. '\n'
end
else
return '* <span class="error">The ' .. id .. ' id ' .. rawValue .. ' is not valid.</span>[[Category:Wikipedia articles with faulty authority control identifiers (' .. id .. ')]]\n'
end
end
--In this order: name of the parameter, label, propertyId in Wikidata, formatting function
local conf = {
{ 'DWB', '[[Y Bywgraffiadur Cymreig|YBC]]', 1648, dwbLink },
{ 'VIAF', '[[Virtual International Authority File|VIAF]]', 214, viafLink },
{ 'LCCN', '[[Library of Congress Control Number|LCCN]]', 244, lccnLink },
{ 'ISNI', '[[International Standard Name Identifier|ISNI]]', 213, isniLink },
{ 'ORCID', '[[ORCID]]', 496, orcidLink },
{ 'GND', '[[Integrated Authority File|GND]]', 227, gndLink },
{ 'SELIBR', '[[LIBRIS|SELIBR]]', 906, selibrLink },
{ 'SUDOC', '[[Système universitaire de documentation|SUDOC]]', 269, sudocLink },
{ 'BNF', '[[Bibliothèque nationale de France|BNF]]', 268, bnfLink },
{ 'BPN', '[[Biografisch Portaal|BPN]]', 651, bpnLink },
{ 'RID', '[[ResearcherID]]', 1053, ridLink },
{ 'BIBSYS', '[[BIBSYS]]', 1015, bibsysLink },
{ 'ULAN', '[[Union List of Artist Names|ULAN]]', 245, ulanLink },
{ 'HDS', '[[Historical Dictionary of Switzerland|HDS]]', 902, hlsLink },
{ 'LIR', '[[Historical Dictionary of Switzerland#Lexicon_Istoric_Retic|LIR]]', 886, lirLink },
{ 'MBA', '[[MusicBrainz]]', 434, mbLink },
{ 'MGP', '[[Mathematics Genealogy Project|MGP]]', 549, mgpLink },
{ 'NLA', '[[National Library of Australia|NLA]]', 409, nlaLink },
{ 'NDL', '[[National Diet Library|NDL]]', 349, ndlLink },
{ 'NCL', '[[National Central Library|NCL]]', 1048, nclLink },
{ 'NKC', '[[National Library of the Czech Republic|NKC]]', 691, nkcLink },
{ 'Léonore', '[[:fr:Base Léonore|Léonore]]', 640, leonoreLink },
{ 'SBN', '[[Istituto Centrale per il Catalogo Unico|ICCU]]', 396, sbnLink },
{ 'RLS', '[[Russian State Library|RLS]]', 947, rslLink },
{ 'Botanist', '[[Author citation (botany)|Botanist]]', 428, botanistLink },
{ 'NARA-person', '[[National Archives and Records Administration|NARA]]', 1222, narapersonLink },
{ 'NARA-organization', '[[National Archives and Records Administration|NARA]]', 1223, naraorganizationLink },
{ 'USCongress', '[[Biographical Directory of the United States Congress|US Congress]]', 1157, uscongressLink },
{ 'BNE', '[[Biblioteca Nacional de España|BNE]]', 950, bneLink },
{ 'CINII', '[[CiNii]]', 271, ciniiLink },
{ 'TLS', '[[Theaterlexikon der Schweiz|TLS]]', 1362, tlsLink },
{ 'SIKART', '[[SIKART]]', 781, sikartLink },
{ 'KULTURNAV', '[[KulturNav]]', 1248, kulturnavLink },
{ 'ODNB', '[[Bywgraffiadur Cenedlaethol Geiriadur Rhydychen|ODNB]]', 1415, odnbLink },
}
-- Check that the Wikidata item has this property-->value before adding it
local reqs = {}
reqs['MBA'] = {
{ 106, 177220 }, -- occupation -> singer
{ 31, 177220 }, -- instance of -> singer
{ 106, 13385019 }, -- occupation -> rapper
{ 31, 13385019 }, -- instance of -> rapper
{ 106, 639669 }, -- occupation -> musician
{ 31, 639669 }, -- instance of -> musician
{ 106, 36834 }, -- occupation -> composer
{ 31, 36834 }, -- instance of -> composer
{ 106, 488205 }, -- occupation -> singer-songwriter
{ 31, 488205 }, -- instance of -> singer-songwriter
{ 106, 183945 }, -- occupation -> record producer
{ 31, 183945 }, -- instance of -> record producer
{ 106, 10816969 }, -- occupation -> club DJ
{ 31, 10816969 }, -- instance of -> club DJ
{ 106, 130857 }, -- occupation -> DJ
{ 31, 130857 }, -- instance of -> DJ
{ 106, 158852 }, -- occupation -> conductor
{ 31, 158852 }, -- instance of -> conductor
{ 31, 215380 }, -- instance of -> band
{ 31, 5741069 }, -- instance of -> rock band
}
local p = {}
function p.authorityControl( frame )
local parentArgs = frame:getParent().args
--Create rows
local elements = {}
local withLocalArgs = false
for _,_ in pairs( parentArgs ) do
withLocalArgs = true
end
--redirect PND to GND
if (parentArgs.GND == nil or parentArgs.GND == '') and parentArgs.PND ~= nil and parentArgs.PND ~= '' then
parentArgs.GND = parentArgs.PND
end
--Wikidata fallback if requested
local item = mw.wikibase.getEntityObject()
if item ~= nil and item.claims ~= nil then
for _, params in pairs( conf ) do
if params[3] ~= 0 then
local val = parentArgs[params[1]]
if not val or val == '' then
local canUseWikidata = nil
if reqs[params[1]] ~= nil then
canUseWikidata = matchesWikidataRequirements( item, reqs[params[1]] )
else
canUseWikidata = true
end
if canUseWikidata then
local wikidataIds = getIdsFromWikidata( item, 'P' .. params[3] )
if wikidataIds[1] then
parentArgs[params[1]] = wikidataIds[1]
end
end
end
end
end
end
--Worldcat
if parentArgs['WORLDCATID'] and parentArgs['WORLDCATID'] ~= '' then
table.insert( elements, createRow( 'WORLDCATID', '', parentArgs['WORLDCATID'], '[//www.worldcat.org/identities/' .. parentArgs['WORLDCATID'] .. ' WorldCat]', false ) ) --Validation?
elseif parentArgs['LCCN'] and parentArgs['LCCN'] ~= '' then
local lccnParts = splitLccn( parentArgs['LCCN'] )
if lccnParts then
table.insert( elements, createRow( 'LCCN', '', parentArgs['LCCN'], '[//www.worldcat.org/identities/lccn-' .. lccnParts[1] .. lccnParts[2] .. '-' .. lccnParts[3] .. ' WorldCat]', false ) )
end
end
--Configured rows
local rct = 0
for k, params in pairs( conf ) do
local val = parentArgs[params[1]]
if val and val ~= '' then
table.insert( elements, createRow( params[1], params[2] .. ':', val, params[4]( val ), true ) )
rct = rct + 1
end
end
local Navbox = require('Module:Navbox')
local elementscats = ''
if rct > 13 then
elementscats = '[[Category:AC with ' .. rct .. ' elements]]'
end
if withLocalArgs then
elementscats = elementscats .. '[[Category:Pages using authority control with parameters]]\n'
end
if table.maxn(elements) ~= 0 then
return Navbox._navbox( {
name = 'Awdurdod',
bodyclass = 'hlist',
group1 = '[[Awdurdod]]' .. elementscats,
list1 = table.concat( elements )
} )
else
return ""
end
end
return p