Authority Control

Documentation for this module may be created at मोड्युल:Authority control/doc

require('Module:No globals')  local p = {}  function p.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  function p.viafLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[https://viaf.org/viaf/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'VIAF' ) end  function p.kulturnavLink( id ) return '[http://kulturnav.org/' .. id .. ' ' .. id .. ']' end  function p.sikartLink( id ) return '[http://www.sikart.ch/KuenstlerInnen.aspx?id=' .. id .. '&lng=en ' .. id .. ']' end  function p.tlsLink( id ) local id2 = id:gsub(' +', '_') return '[http://tls.theaterwissenschaft.ch/wiki/' .. id2 .. ' ' .. id .. ']' end  function p.ciniiLink( id ) return '[https://ci.nii.ac.jp/author/' .. id .. '?l=en ' .. id .. ']' end  function p.bneLink( id ) return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id .. ' ' .. id .. ']' end  function p.uscongressLink( id ) return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index=' .. id .. ' ' .. id .. ']' end  function p.narapersonLink( id ) return '[https://research.archives.gov/person/' .. id .. ' ' .. id .. ']' end  function p.naraorganizationLink( id ) return '[https://research.archives.gov/organization/' .. id .. ' ' .. id .. ']' end  function p.botanistLink( id ) local id2 = id:gsub(' +', '%%20') return '[http://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=' .. id2 .. ' ' .. id .. ']' end  function p.mgpLink( id ) -- TODO Implement some sanity checking regex return '[http://www.genealogy.ams.org/id.php?id=' .. id .. ' ' .. id .. ']' end  function p.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  function p.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 '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1=' .. id .. ' ' .. id .. ']' end  function p.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 .. ']' .. p.getCatForId( 'SBN' ) end  function p.nkcLink( id ) return '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=' .. id .. '&CON_LNG=ENG ' .. id .. ']' end  function p.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  function p.ndlLink( id ) return '[https://id.ndl.go.jp/auth/ndlna/' .. id .. ' ' .. id .. ']' end  function p.sudocLink( id ) if not string.match( id, '^%d%d%d%d%d%d%d%d[%dxX]$' ) then return false end return '[https://www.idref.fr/' .. id .. ' ' .. id .. ']' end  function p.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  function p.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  function p.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  function p.append(str, c, length) while str:len() < length do str = c .. str end return str end  function p.lccnLink( id ) local parts = p.splitLccn( id ) if not parts then return false end local lccnType = parts[1] ~= 'sh' and 'names' or 'subjects' id = parts[1] .. parts[2] .. p.append( parts[3], '0', 6 ) return '[http://id.loc.gov/authorities/' .. lccnType .. '/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'LCCN' ) end  function p.mbLink( id ) -- TODO Implement some sanity checking regex return '[https://musicbrainz.org/artist/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'MusicBrainz' ) end  --Returns the ISNI check digit isni must be a string where the 15 first elements are digits function p.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 function p.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 p.getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then return false end return id end  function p.isniLink( id ) id = p.validateIsni( id ) if not id then return false end return '[http://isni.org/isni/' .. id .. ' ' .. id:sub( 1, 4 ) .. ' ' .. id:sub( 5, 8 ) .. ' '  .. id:sub( 9, 12 ) .. ' '  .. id:sub( 13, 16 ) .. ']' .. p.getCatForId( 'ISNI' ) end  function p.orcidLink( id ) id = p.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 '[https://orcid.org/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'ORCID' ) end  function p.gndLink( id ) return '[https://d-nb.info/gnd/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'GND' ) end  function p.selibrLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[https://libris.kb.se/auth/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'SELIBR' ) end  function p.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)]' .. p.getCatForId( 'BNF' ) end  function p.bpnLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[http://www.biografischportaal.nl/en/persoon/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'BPN' ) end  function p.ridLink( id ) return '[https://www.researcherid.com/rid/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'RID' ) end  function p.bibsysLink( id ) return '[https://authority.bibsys.no/authority/rest/authorities/html/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'BIBSYS' ) end  function p.ulanLink( id ) return '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'ULAN' ) end  function p.nlaLink( id ) return '[https://nla.gov.au/anbd.aut-an' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'NLA' ) end  function p.rkdartistsLink( id ) return '[https://rkd.nl/en/explore/artists/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'RKDartists' ) end  function p.snacLink( id ) return '[http://socialarchive.iath.virginia.edu/ark:/99166/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'SNAC-ID' ) end  function p.dblpLink( id ) return '[https://dblp.org/pid/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'DBLP' ) end  function p.acmLink( id ) return '[https://dl.acm.org/author_page.cfm?id=' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'ACM-DL' ) end  function p.autoresuyLink( id ) return '[http://autores.uy/autor/' .. id .. ' ' .. id .. ']' ..  p.getCatForId( 'autores.uy' ) end  function p.picLink( id ) return '[https://pic.nypl.org/constituents/' .. id .. ' ' .. id .. ']' .. p.getCatForId( 'PIC' ) end  function p.bildLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[https://www.bildindex.de/document/obj' .. id .. ' ' .. id .. ']' -- .. p.getCatForId( 'Bildindex' ) end  function p.jocondeLink( id ) return '[http://www2.culture.gouv.fr/public/mistral/joconde_fr?ACTION=CHERCHER&FIELD_1=REF&VALUE_1=' .. id .. ' ' .. id .. ']' -- .. p.getCatForId( 'Joconde' ) end  function p.rkdidLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[https://rkd.nl/nl/explore/images/' .. id .. ' ' .. id .. ']' -- .. p.getCatForId( 'RKDimages' ) end  function p.balatLink( id ) if not string.match( id, '^%d+$' ) then return false end return '[http://balat.kikirpa.be/object/104257' .. id .. ' ' .. id .. ']' -- .. p.getCatForId( 'BALaT' ) end  function p.getIdsFromWikidata( itemId, property ) local ids = {} local statements = mw.wikibase.getBestStatements( itemId, property ) if statements then for _, statement in ipairs( statements ) do if statement.mainsnak.datavalue then table.insert( ids, statement.mainsnak.datavalue.value ) end end end return ids end  function p.matchesWikidataRequirements( itemId, reqs ) for _, group in ipairs( reqs ) do local property = 'P' .. group[1] local qid = group[2] local statements = mw.wikibase.getBestStatements( itemId, property ) if statements ~= nil then for _, statement in ipairs( statements ) 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  function p.createRow( id, label, rawValue, link, withUid ) if link then if withUid then return '*' .. label .. ' ' .. link .. '\n' end  return '*' .. label .. ' ' .. link .. '\n' end  return '*  .. id .. ' id ' .. rawValue .. ' is not valid.[[Category:Wikipedia articles with faulty authority control identifiers (' .. id .. ')]]\n' end  -- Check that the Wikidata item has this property-->value before adding it local reqs = {}  --In this order: name of the parameter, label, propertyId in Wikidata, formatting function p.conf = { { 'ACM-DL', '[[ACM Digital Library|ACM DL]]', 864, p.acmLink }, { 'autores.uy', '[[autores.uy]]', 2558, p.autoresuyLink }, { 'BALaT', '[[:d:Q2876688|BALaT]]', 3293, p.balatLink }, { 'BIBSYS', '[[BIBSYS]]', 1015, p.bibsysLink }, { 'Bildindex', '[[Marburg Picture Index|Bildindex]]', 2092, p.bildLink }, { 'BNE', '[[Biblioteca Nacional de España|BNE]]', 950, p.bneLink }, { 'BNF', '[[Bibliothèque nationale de France|BNF]]', 268, p.bnfLink }, { 'Botanist', '[[Author citation (botany)|Botanist]]', 428, p.botanistLink }, { 'BPN', '[[Biografisch Portaal|BPN]]', 651, p.bpnLink }, { 'CINII', '[[CiNii]]', 271, p.ciniiLink }, { 'DBLP', '[[DBLP]]', 2456, p.dblpLink }, { 'GND', '[[Integrated Authority File|GND]]', 227, p.gndLink }, { 'HDS', '[[Historical Dictionary of Switzerland|HDS]]', 902, p.hlsLink }, { 'ISNI', '[[International Standard Name Identifier|ISNI]]', 213, p.isniLink }, { 'Joconde', '[[Joconde|Joconde]]' , 347, p.jocondeLink }, { 'KULTURNAV', '[[KulturNav]]', 1248, p.kulturnavLink }, { 'LCCN', '[[Library of Congress Control Number|LCCN]]', 244, p.lccnLink }, { 'LIR', '[[Historical Dictionary of Switzerland#Lexicon_Istoric_Retic|LIR]]', 886, p.lirLink }, { 'Léonore', '[[Base Léonore|Léonore]]', 640, p.leonoreLink }, { 'MBA', '[[MusicBrainz]]', 434, p.mbLink }, { 'MGP', '[[Mathematics Genealogy Project|MGP]]', 549, p.mgpLink }, { 'NARA-organization', '[[National Archives and Records Administration|NARA]]', 1223, p.naraorganizationLink }, { 'NARA-person', '[[National Archives and Records Administration|NARA]]', 1222, p.narapersonLink }, { 'NCL', '[[National Central Library|NCL]]', 1048, p.nclLink }, { 'NDL', '[[National Diet Library|NDL]]', 349, p.ndlLink }, { 'NKC', '[[National Library of the Czech Republic|NKC]]', 691, p.nkcLink }, { 'NLA', '[[National Library of Australia|NLA]]', 409, p.nlaLink }, { 'ORCID', '[[ORCID]]', 496, p.orcidLink }, { 'PIC', '[[:d:Q23892012|PIC]]', 2750, p.picLink }, { 'RID', '[[ResearcherID]]', 1053, p.ridLink }, { 'RKDartists', '[[Netherlands Institute for Art History#Online artist pages|RKD]]', 650, p.rkdartistsLink }, { 'RKDID', '[[:d:Q17299580|RKDimages ID]]', 350, p.rkdidLink }, { 'RLS', '[[Russian State Library|RLS]]', 947, p.rslLink }, { 'SBN', '[[Istituto Centrale per il Catalogo Unico|ICCU]]', 396, p.sbnLink }, { 'SELIBR', '[[LIBRIS|SELIBR]]', 906, p.selibrLink }, { 'SIKART', '[[SIKART]]', 781, p.sikartLink }, { 'SNAC-ID', '[[SNAC]]', 3430, p.snacLink }, { 'SUDOC', '[[Système universitaire de documentation|SUDOC]]', 269, p.sudocLink }, { 'TLS', '[[Theaterlexikon der Schweiz|TLS]]', 1362, p.tlsLink }, { 'ULAN', '[[Union List of Artist Names|ULAN]]', 245, p.ulanLink }, { 'USCongress', '[[Biographical Directory of the United States Congress|US Congress]]', 1157, p.uscongressLink }, { 'VIAF', '[[Virtual International Authority File|VIAF]]', 214, p.viafLink }, }  function p.authorityControl( frame ) local parentArgs = frame:getParent().args --Create rows local elements = {}  --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 itemId = mw.wikibase.getEntityIdForCurrentPage() if itemId ~= nil then for _, params in ipairs( p.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 = p.matchesWikidataRequirements( itemId, reqs[params[1]] ) else canUseWikidata = true end if canUseWikidata then local wikidataIds = p.getIdsFromWikidata( itemId, '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, p.createRow( 'WORLDCATID', '', parentArgs['WORLDCATID'], '[https://www.worldcat.org/identities/' .. parentArgs['WORLDCATID'] .. ' WorldCat Identities]', false ) ) --Validation? elseif parentArgs['VIAF'] and string.match( parentArgs['VIAF'], '^%d+$' ) then -- Hackishly copy the validation code; this should go away when we move to using P1793 and P1630 table.insert( elements, p.createRow( 'VIAF', '', parentArgs['VIAF'], '[https://www.worldcat.org/identities/containsVIAFID/' .. parentArgs['VIAF'] .. ' WorldCat Identities]', false ) ) elseif parentArgs['LCCN'] and parentArgs['LCCN'] ~= '' then local lccnParts = p.splitLccn( parentArgs['LCCN'] ) if lccnParts and lccnParts[1] ~= 'sh' then table.insert( elements, p.createRow( 'LCCN', '', parentArgs['LCCN'], '[https://www.worldcat.org/identities/lccn-' .. lccnParts[1] .. lccnParts[2] .. '-' .. lccnParts[3] .. ' WorldCat Identities]', false ) ) end end  --Configured rows local rct = 0 for _, params in ipairs( p.conf ) do local val = parentArgs[params[1]] if val and val ~= '' then table.insert( elements, p.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 #elements ~= 0 then return Navbox._navbox( { name  = 'Authority control', bodyclass = 'hlist', group1 = '[[Help:Authority control|Authority control]]' .. elementscats, list1 = table.concat( elements ) } ) end  return "" end  return p 

Tags:

🔥 Trending searches on Wiki डोटेली:

युगान्डाडाँडाकोट गाविससियरा लियोनथोमस एल्वा एडिसननेपाल टेलिकमखाद्यपदार्थम्युनिखहिलरी क्लिन्टनवाशिंगटन डीसीग्वाटेमालापाकिस्तानगणतन्त्र आयरल्यान्डबेल्जियममालीनेपाल राष्ट्र बैंकसंयुक्त राज्य अमेरिकाचाडपाटन दरवार क्षेत्रलुम्बिनीपाल्पा जिल्लाविकी लभ्स अर्थताप्लेजुङ जिल्लानेपालका प्रमुख नदीहरूदक्षिण कोरियाइलाम जिल्लापृथ्वीसुवासचन्द्र नेम्वाङएड्ससरुवा रोगचाँगुनारायण मन्दिरलाली गुराँसकम्बोडियाभीमसेन थापापशुपतिनाथ मन्दिरलेवनाननेल्सन मण्डेलामार्टिन लूथरटिकटकअनुष्का शर्माओलम्पिक झण्डाजीवनीकाभ्रेपलान्चोक जिल्लाऋषि कपूरदाङ उपत्यकाबुल्गेरियासगरमाथा राष्ट्रिय निकुञ्जसेन्ट पिटर्सबर्गसंस्कृत भाषालिश्टेनस्टाईनओमानशङ्खधर शाख्वाइराकबङ्गलादेशदशैंबागलिथुआनियारेखा जोशीक्षेत्रीतुर्कमेनिस्तानलक्ष्मीप्रसाद देवकोटानेपाली काँग्रेससियाओलण्डनकालीकण्ठे सारसनामिबियाधादिङ जिल्ला🡆 More