Modiwl:Authority control

Disgrifiad

golygu

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

golygu

As a metadata template, the Authority control template should be placed after the external links section and navigation templates, right before the Persondata template.

{{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:

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

golygu

The template applies the following categories:

Wikidata

golygu

The 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

golygu

The 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

TemplateData

golygu

This 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

Paramedrau'r nodyn

ParamedrDisgrifiadMathStatws
VIAFVIAF

International authority data from the Online Computer Library Center (OCLC)

Rhifdewisol
GNDGND PND

Authority data on people, corporations and subjects from the German National Library

Llinyndewisol
LCCNLCCN

Library of Congress Control Number. See [[Wikipedia:Authority control#LCCN]] for formatting instructions

Rhifdewisol
ISNIISNI

ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles

Llinyndewisol
SELIBRSELIBR

Authority data from the National Library of Sweden

Llinyndewisol
ORCIDORCID

Authority data on researchers, academics, etc. The ID range has been defined as a subset of the forthcoming ISNI range

Llinyndewisol
BNFBNF

Authority data of people listed in the general catalogue of the National Library of France

Llinyndewisol
BPNBPN

Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands

Rhifdewisol
RIDRID

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

Llinyndewisol
BIBSYSBIBSYS

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

Llinyndewisol
ULANULAN

ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists

Llinyndewisol
MBAMBA

MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.

Llinyndewisol
NLANLA

Authority control number issued by the National Library of Australia.

Llinyndewisol
NDLNDL

Authority control number issued by the National Diet Library (National Library of Japan).

Rhifdewisol
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