모듈:Authority control 편집하기

귀하는 로그인되어 있지 않습니다. 이대로 편집하면 귀하의 IP 주소가 편집 기록에 남게 됩니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
4번째 줄: 4번째 줄:
local title = mw.title.getCurrentTitle()
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local namespace = title.namespace
local talkspace = (mw.site.talkNamespaces[namespace] ~= nil)
local testcases = (string.sub(title.subpageText,1,3) == '시험장')
local testcases = (string.sub(title.subpageText,1,3) == '시험장')


36번째 줄: 37번째 줄:
--[[==========================================================================]]
--[[==========================================================================]]


function p.aagLink( id )
function p.iaafLink( id )
--P3372's format regex: \d+ (e.g. 1)
--P1146's format regex: [0-9][0-9]* (e.g. 012)
if not id:match( '^%d+$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
return '[https://www.aucklandartgallery.com/explore-art-and-ideas/artist/'..id..'/ '..id..']'..p.getCatForId( 'AAG' )
return '[https://www.iaaf.org/athletes/_/'..id..' '..id..']'..p.getCatForId( 'IAAF' )
end
end


function p.acmLink( id )
function p.viafLink( id )
--P864's format regex: \d{11} (e.g. 12345678901)
--P214's format regex: [1-9]\d(\d{0,7}|\d{17,20}) (e.g. 123456789, 1234567890123456789012)
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^[1-9]%d%d?%d?%d?%d?%d?%d?%d?$' ) and
  not string.match( id, '^[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?$' ) then
return false
return false
end
end
return '[https://dl.acm.org/author_page.cfm?id='..id..' '..id..']'..p.getCatForId( 'ACM-DL' )
return '[https://viaf.org/viaf/'..id..' '..id..']'..p.getCatForId( 'VIAF' )
end
end


function p.adbLink( id )
function p.nlkLink( id )
--P1907's format regex: [a-z][-a-z]+-([1-2]\d|[1-9])\d{0,3} (e.g. barton-sir-edmund-toby-71)
return '[//nl.go.kr/authorities/resource/' .. id .. ' ' .. id .. ']' .. p.getCatForId('NLK')
if not id:match( '^[a-z][-a-z]+-[1-2]%d%d?%d?%d?$' ) and
  not id:match( '^[a-z][-a-z]+-[1-9]%d?%d?%d?$' ) then
return false
end
return '[http://adb.anu.edu.au/biography/'..id..' '..id..']'..p.getCatForId( 'ADB' )
end
end


function p.agsaLink( id )
function p.kulturnavLink( id )
--P6804's format regex: [1-9]\d* (e.g. 3625)
--P1248's format regex: [0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^[1-9]%d*$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
return '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/'..id..'/ '..id..']'..p.getCatForId( 'AGSA' )
return '[http://kulturnav.org/'..id..' '..id..']'..p.getCatForId( 'KULTURNAV' ) --no https yet (10/2018)
end
end


function p.autoresuyLink( id )
function p.sikartLink( id )
--P2558's format regex: [1-9]\d{0,4} (e.g. 12345)
--P781's format regex: \d{7,9} (e.g. 123456789)
if not id:match( '^[1-9]%d?%d?%d?%d?$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d?%d?$' ) then
return false
return false
end
end
return '[https://autores.uy/autor/'..id..' '..id..']'..p.getCatForId( 'autores.uy' )
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id='..id..'&lng=en '..id..']'..p.getCatForId( 'SIKART' ) --no https yet (10/2018)
end
end


function p.awrLink( id )
function p.tlsLink( id )
--P4186's format regex: (([A-Z]{3}\d{4})|([A-Z]{2}\d{5}))[a-z] (e.g. PR00768b)
local id2 = id:gsub(' +', '_')
if not id:match( '^[A-Z][A-Z][A-Z]%d%d%d%d[a-z]$' ) and
--P1362's format regex: \p{Lu}[\p{L}\d_',\.\-\(\)\*/–]{3,59} (e.g. Abcd)
  not id:match( '^[A-Z][A-Z]%d%d%d%d%d[a-z]$' ) then
local class = "[%a%d_',%.%-%(%)%*/–]"
local regex = "^%u"..string.rep(class, 3)..string.rep(class.."?", 56).."$"
if not mw.ustring.match( id2, regex ) then
return false
return false
end
end
return '[http://www.womenaustralia.info/biogs/'..id..'.htm '..id..']'..p.getCatForId( 'AWR' )
return '[http://tls.theaterwissenschaft.ch/wiki/'..id2..' '..id..']'..p.getCatForId( 'TLS' ) --no https yet (10/2018)
end
end


function p.balatLink( id )
function p.ciniiLink( id )
--P3293's format regex: \d+ (e.g. 1)
--P271's format regex: DA\d{7}[\dX] (e.g. DA12345678)
if not id:match( '^%d+$' ) then
if not string.match( id, '^DA%d%d%d%d%d%d%d[%dX]$' ) then
return false
return false
end
end
return '[http://balat.kikirpa.be/object/104257'..id..' '..id..']'..p.getCatForId( 'BALaT' ) --no https as of 9/2019
return '[https://ci.nii.ac.jp/author/'..id..'?l=en '..id..']'..p.getCatForId( 'CINII' )
end
end


function p.bibsysLink( id )
function p.daaoLink( id )
--P1015's format regex: [1-9]\d* or [1-9](\d{0,8}|\d{12}) (e.g. 1234567890123)
--P1707's format regex: [a-z\-]+\d* (e.g. rolf-harris)
--TODO: follow up @ [[d:Property talk:P1015#Discrepancy between the 2 regex constraints]] or escalate/investigate
if not string.match( id, '^[a-z%-]+%d*$' ) then
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) and
  not id:match( '^[1-9]%d%d%d%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://authority.bibsys.no/authority/rest/authorities/html/'..id..' '..id..']'..p.getCatForId( 'BIBSYS' )
return '[https://www.daao.org.au/bio/'..id..' '..id..']'..p.getCatForId( 'DAAO' )
end
end


function p.bildLink( id )
function p.bneLink( id )
--P2092's format regex: \d+ (e.g. 1)
--P950's format regex: (XX|FF|a)\d{4,7}|(bima|bimo|bica|bis[eo]|bivi|Mise|Mimo|Mima)\d{10} (e.g. XX1234567)
if not id:match( '^%d+$' ) then
if not string.match( id, '^[XF][XF]%d%d%d%d%d?%d?%d?$' ) and
  not string.match( id, '^a%d%d%d%d%d?%d?%d?$' ) and
  not string.match( id, '^bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d$' ) and
  not string.match( id, '^Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://www.bildindex.de/document/obj'..id..' '..id..']'..p.getCatForId( 'Bildindex' )
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id='..id..' '..id..']'..p.getCatForId( 'BNE' ) --no https yet (10/2018)
end
end


function p.bncLink( id )
function p.uscongressLink( id )
--P1890's format regex: \d{9} (e.g. 123456789)
--P1157's format regex: [A-Z]00[01]\d{3} (e.g. A000123)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^[A-Z]00[01]%d%d%d$' ) then
return false
return false
end
end
return '[http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number='..id..' '..id..']'..p.getCatForId( 'BNC' )
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index='..id..' '..id..']'..p.getCatForId( 'USCongress' ) --no https yet (10/2018)
end
end


function p.bneLink( id )
function p.naraLink( id )
--P950's format regex: (XX|FF|a)\d{4,7}|(bima|bimo|bica|bis[eo]|bivi|Mise|Mimo|Mima)\d{10} (e.g. XX1234567)
--P1225's format regex: ^([1-9]\d{0,8})$ (e.g. 123456789)
if not id:match( '^[XF][XF]%d%d%d%d%d?%d?%d?$' ) and
if not string.match( id, '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
  not id:match( '^a%d%d%d%d%d?%d?%d?$' ) and
  not id:match( '^bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d$' ) and
  not id:match( '^Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id='..id..' '..id..']'..p.getCatForId( 'BNE' ) --no https as of 9/2019
return '[https://catalog.archives.gov/id/'..id..' '..id..']'..p.getCatForId( 'NARA' )
end
 
function p.bnfLink( id )
--P268's format regex: \d{8}[0-9bcdfghjkmnpqrstvwxz] (e.g. 123456789)
if not id:match( '^c?b?%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]$' ) then
return false
end
--Add cb prefix if it has been removed
if not id:match( '^cb.+$' ) then
id = 'cb'..id
end
return '[https://catalogue.bnf.fr/ark:/12148/'..id..' '..id..'] [https://data.bnf.fr/ark:/12148/'..id..' (data)]'..p.getCatForId( 'BNF' )
end
end


153번째 줄: 138번째 줄:
end
end


function p.bpnLink( id )
function p.mgpLink( id )
--P651's format regex: \d{6,8} (e.g. 00123456)
--P549's format regex: \d{1,6} (e.g. 123456)
if not id:match( '^%d%d%d%d%d%d%d%d$' ) and --original format regex, changed 8/2019 to
if not string.match( id, '^%d%d?%d?%d?%d?%d?$' ) then
  not id:match( '^0?%d%d%d%d%d%d%d$' ) and --allow 1-2 leading 0s, allowed by the website
  not id:match( '^0?0?%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[http://www.biografischportaal.nl/en/persoon/'..id..' '..id..']'..p.getCatForId( 'BPN' ) --no https as of 9/2019
return '[https://genealogy.math.ndsu.nodak.edu/id.php?id='..id..' '..id..']'..p.getCatForId( 'MGP' )
end
end


function p.canticLink( id )
function p.rslLink( id )
--P1273's format regex: a\d{7}[0-9x] (e.g. a10640745)
--P947's format regex: \d{1,9} (e.g. 123456789)
if not id:match( '^a%d%d%d%d%d%d%d[%dx]$' ) then
if not string.match( id, '^%d%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
return false
return false
end
end
return '[http://cantic.bnc.cat/registres/CUCId/'..id..' '..id..']'..p.getCatForId( 'CANTIC' ) --no https as of 10/2019
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'RSL' ) --no https yet (10/2018)
end
end


function p.ciniiLink( id )
function p.leonoreLink( id )
--P271's format regex: DA\d{7}[\dX] (e.g. DA12345678)
--P640's format regex: LH/\d{1,4}/\d{1,3}|19800035/\d{1,4}/\d{1,5}(Bis)?|C/0/\d{1,2} (e.g. LH/2064/18)
if not id:match( '^DA%d%d%d%d%d%d%d[%dX]$' ) then
if not id:match( '^LH/%d%d?%d?%d?/%d%d?%d?$' ) and            --IDs from      LH/1/1 to        LH/2794/54 (legionaries)
  not id:match( '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) and --IDs from 19800035/1/1 to 19800035/385/51670 (legionnaires who died 1954-1977 & some who died < 1954)
  not id:match( '^C/0/%d%d?$' ) then                         --IDs from        C/0/1 to            C/0/84 (84 famous legionaries)
return false
return false
end
end
return '[https://ci.nii.ac.jp/author/'..id..'?l=en '..id..']'..p.getCatForId( 'CINII' )
return '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1='..id..' '..id..']'..p.getCatForId( 'Léonore' ) --no https yet (10/2018)
end
end


function p.daaoLink( id )
function p.sbnLink( id )
--P1707's format regex: [a-z\-]+\d* (e.g. rolf-harris)
--P396's format regex: IT\\ICCU\\(\d{10}|\D\D[\D\d]\D\\\d{6}) (e.g. IT\ICCU\CFIV\000163)
if not id:match( '^[a-z%-]+%d*$' ) then
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[%u%d]%u\\%d%d%d%d%d%d$' ) then --legacy: %u used here instead of %D (but the faulty ID cat is empty, out of ~12k uses)
return false
return false
end
end
return '[https://www.daao.org.au/bio/'..id..' '..id..']'..p.getCatForId( 'DAAO' )
return '[https://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid='..id..' '..id..']'..p.getCatForId( 'SBN' )
end
end


function p.dblpLink( id )
function p.nkcLink( id )
--P2456's format regex: \d{2,3} /\d+(-\d+)?|[a-z] /[a-zA-Z][0-9A-Za-z]*(-\d+)? (e.g. 123/123)
--P691's format regex: [a-z]{2,4}[0-9]{2,14} (e.g. abcd12345678901234)
if not id:match( '^%d%d%d?/%d+$' ) and
if not string.match( id, '^[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
  not id:match( '^%d%d%d?/%d+%-%d+$' ) and
  not id:match( '^[a-z]/[a-zA-Z][0-9A-Za-z]*$' ) and
  not id:match( '^[a-z]/[a-zA-Z][0-9A-Za-z]*%-%d+$' ) then
return false
return false
end
end
return '[https://dblp.org/pid/'..id..' '..id..']'..p.getCatForId( 'DBLP' )
return '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'NKC' )
end
end


function p.dsiLink( id )
function p.nclLink( id )
--P2349's format regex: [1-9]\d* (e.g. 1538)
--P1048's format regex: \d+ (e.g. 1081436)
if not id:match( '^[1-9]%d*$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
return '[http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value='..id..' '..id..']'..p.getCatForId( 'DSI' )
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'NCL' ) --no https yet (10/2018)
end
end


function p.fnzaLink( id )
function p.ndlLink( id )
--P6792's format regex: [1-9]\d* (e.g. 9785)
--P349's format regex: 0?\d{8} (e.g. 012345678)
if not id:match( '^[1-9]%d*$' ) then
if not string.match( id, '^0?%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://findnzartists.org.nz/artist/'..id..'/ '..id..']'..p.getCatForId( 'FNZA' )
return '[https://id.ndl.go.jp/auth/ndlna/'..id..' '..id..']'..p.getCatForId( 'NDL' )
end
end


function p.gndLink( id )                
function p.ngvLink( id )
--P227's format regex: 1[012]?\d{7}[0-9X]|[47]\d{6}-\d|[1-9]\d{0,7}-[0-9X]|3\d{7}[0-9X] (e.g. 4079154-3)
--P2041's format regex: \d+ (e.g. 12354)
if not id:match( '^1[012]?%d%d%d%d%d%d%d[0-9X]$' ) and
if not string.match( id, '^%d+$' ) then
  not id:match( '^[47]%d%d%d%d%d%d%-%d$' ) and
  not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]$' ) and
  not id:match( '^3%d%d%d%d%d%d%d[0-9X]$' ) then
return false
return false
end
end
return '[https://d-nb.info/gnd/'..id..' '..id..']'..p.getCatForId( 'GND' )
return '[https://www.ngv.vic.gov.au/explore/collection/artist/'..id..'/ '..id..']'..p.getCatForId( 'NGV' )
end
end


function p.hdsLink( id )
function p.sudocLink( id )
--P902's format regex: \d{6} (e.g. 050123)
--P269's format regex: (\d{8}[\dX]|) (e.g. 026927608)
if not id:match( '^%d%d%d%d%d%d$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d[%dxX]$' ) then --legacy: allow lowercase 'x'
return false
return false
end
end
return '[https://hls-dhs-dss.ch/fr/articles/'..id..' '..id..']'..p.getCatForId( 'HDS' )
return '[https://www.idref.fr/'..id..' '..id..']'..p.getCatForId( 'SUDOC' )
end
end


function p.iaafLink( id )
function p.hdsLink( id )
--P1146's format regex: [0-9][0-9]* (e.g. 012)
--P902's format regex: 50\d{3}|[0-4]\d{4}|[1-9]\d{0,3}|\d{6}
if not id:match( '^%d+$' ) then
if not id:match( '^50%d%d%d$' ) and
  not id:match( '^[0-4]%d%d%d%d$' ) and
  not id:match( '^%d%d%d%d%d%d$' ) and
  not id:match( '^[1-9]%d?%d?%d?$' ) then
return false
return false
end
end
return '[https://www.iaaf.org/athletes/_/'..id..' '..id..']'..p.getCatForId( 'IAAF' )
return '[https://hls-dhs-dss.ch/fr/articles/'..id..' '..id..']'..p.getCatForId( 'HDS' )
end
end


function p.iciaLink( id )
function p.lirLink( id )
--P1736's format regex: \d+ (e.g. 1)
--P886's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
return '[https://www.imj.org.il/artcenter/newsite/en/?artist='..id..' '..id..']'..p.getCatForId( 'ICIA' )
return '[http://www.e-lir.ch/e-LIR___Lexicon.'..id..'.450.0.html '..id..']'..p.getCatForId( 'LIR' ) --no https yet (10/2018)
end
end


function p.isniLink( id )
function p.splitLccn( id )
id = p.validateIsni( id ) --e.g. 0000-0000-6653-4145
--P244's format regex: (n|nb|nr|no|ns|sh)([4-9][0-9]|00|20[0-1][0-9])[0-9]{6} (e.g. n78039510)
if not id then
if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
return false
id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
end
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' ) --no https as of 9/2019
if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
end
return mw.text.split( id, '/' )
 
function p.jocondeLink( id )
--P347's format regex: [\-0-9A-Za-z]{11} (e.g. 12345678901)
local regex = '^'..string.rep('[%-0-9A-Za-z]', 11)..'$'
if not id:match( regex ) then
return false
end
end
return '[https://www.pop.culture.gouv.fr/notice/joconde/'..id..' '..id..']'..p.getCatForId( 'Joconde' )
return false
end
end


function p.kulturnavLink( id )
function p.append(str, c, length)
--P1248's format regex: [0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
while str:len() < length do
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
str = c .. str
return false
end
end
return '[http://kulturnav.org/'..id..' '..id..']'..p.getCatForId( 'KULTURNAV' ) --no https as of 9/2019
return str
end
end


282번째 줄: 258번째 줄:
id = parts[1] .. parts[2] .. p.append( parts[3], '0', 6 )
id = parts[1] .. parts[2] .. p.append( parts[3], '0', 6 )
return '[https://id.loc.gov/authorities/'..lccnType..'/'..id..' '..id..']'..p.getCatForId( 'LCCN' )
return '[https://id.loc.gov/authorities/'..lccnType..'/'..id..' '..id..']'..p.getCatForId( 'LCCN' )
end
function p.lirLink( id )
--P886's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[http://www.e-lir.ch/e-LIR___Lexicon.'..id..'.450.0.html '..id..']'..p.getCatForId( 'LIR' ) --no https as of 9/2019
end
function p.lnbLink( id )
--P1368's format regex: \d{9} (e.g. 123456789)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
return false
end
return '[https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number='..id..'&P_CON_LNG=ENG '..id..']'..p.getCatForId( 'LNB' )
end
function p.leonoreLink( id )
--P640's format regex: LH/\d{1,4}/\d{1,3}|19800035/\d{1,4}/\d{1,5}(Bis)?|C/0/\d{1,2} (e.g. LH/2064/18)
if not id:match( '^LH/%d%d?%d?%d?/%d%d?%d?$' ) and            --IDs from      LH/1/1 to        LH/2794/54 (legionaries)
  not id:match( '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) and --IDs from 19800035/1/1 to 19800035/385/51670 (legionnaires who died 1954-1977 & some who died < 1954)
  not id:match( '^C/0/%d%d?$' ) then                          --IDs from        C/0/1 to            C/0/84 (84 famous legionaries)
return false
end
return '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1='..id..' '..id..']'..p.getCatForId( 'Léonore' ) --no https as of 9/2019
end
end


function p.mbaLink( id )
function p.mbaLink( id )
--P434's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P434's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
320번째 줄: 270번째 줄:
function p.mbareaLink( id )
function p.mbareaLink( id )
--P982's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P982's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
328번째 줄: 278번째 줄:
function p.mbiLink( id )
function p.mbiLink( id )
--P1330's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P1330's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
336번째 줄: 286번째 줄:
function p.mblLink( id )
function p.mblLink( id )
--P966's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P966's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
344번째 줄: 294번째 줄:
function p.mbpLink( id )
function p.mbpLink( id )
--P1004's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P1004's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
352번째 줄: 302번째 줄:
function p.mbrgLink( id )
function p.mbrgLink( id )
--P436's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P436's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
360번째 줄: 310번째 줄:
function p.mbsLink( id )
function p.mbsLink( id )
--P1407's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P1407's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
368번째 줄: 318번째 줄:
function p.mbwLink( id )
function p.mbwLink( id )
--P435's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
--P435's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)
if not id:match( '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
if not string.match( id, '^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$' ) then
return false
return false
end
end
374번째 줄: 324번째 줄:
end
end


function p.mgpLink( id )
--Returns the ISNI check digit isni must be a string where the 15 first elements are digits, e.g. 0000000066534145
--P549's format regex: \d{1,6} (e.g. 123456)
function p.getIsniCheckDigit( isni )
if not id:match( '^%d%d?%d?%d?%d?%d?$' ) then
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 )
--P213 (ISNI) format regex: [0-9]{4} [0-9]{4} [0-9]{4} [0-9]{3}[0-9X] (e.g. 0000-0000-6653-4145)
--P496 (ORCID) format regex: 0000-000(1-[5-9]|2-[0-9]|3-[0-4])\d{3}-\d{3}[\dX] (e.g. 0000-0002-7398-5483)
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 ) --e.g. 0000-0000-6653-4145
if not id then
return false
return false
end
end
return '[https://genealogy.math.ndsu.nodak.edu/id.php?id='..id..' '..id..']'..p.getCatForId( 'MGP' )
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' ) --no https yet (10/2018)
end
end


function p.naraLink( id )
function p.orcidLink( id )
--P1225's format regex: ^([1-9]\d{0,8})$ (e.g. 123456789)
id = p.validateIsni( id ) --e.g. 0000-0002-7398-5483
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
if not id then
return false
return false
end
end
return '[https://catalog.archives.gov/id/'..id..' '..id..']'..p.getCatForId( 'NARA' )
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
end


function p.nclLink( id )
function p.gndLink( id )
--P1048's format regex: \d+ (e.g. 1081436)
--P227's format regex: (1|1[01])\d{7}[0-9X]|[47]\d{6}-\d|[1-9]\d{0,7}-[0-9X]|3\d{7}[0-9X] (e.g. 4079154-3)
if not id:match( '^%d+$' ) then
if not string.match( id, '^1[01]?%d%d%d%d%d%d%d[0-9X]$' ) and
  not string.match( id, '^[47]%d%d%d%d%d%d%-%d$' ) and
  not string.match( id, '^[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]$' ) and
  not string.match( id, '^3%d%d%d%d%d%d%d[0-9X]$' ) then
return false
return false
end
end
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'NCL' ) --no https as of 9/2019
return '[https://d-nb.info/gnd/'..id..' '..id..']'..p.getCatForId( 'GND' )
end
end


function p.ndlLink( id )
function p.selibrLink( id )
--P349's format regex: 0?\d{8} (e.g. 012345678)
--P906's format regex: [1-9]\d{4,5} (e.g. 123456)
if not id:match( '^0?%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^[1-9]%d%d%d%d%d?$' ) then
return false
return false
end
end
return '[https://id.ndl.go.jp/auth/ndlna/'..id..' '..id..']'..p.getCatForId( 'NDL' )
return '[https://libris.kb.se/auth/'..id..' '..id..']'..p.getCatForId( 'SELIBR' )
end
end


function p.ngvLink( id )
function p.bnfLink( id )
--P2041's format regex: \d+ (e.g. 12354)
--P268's format regex: \d{8}[0-9bcdfghjkmnpqrstvwxz] (e.g. 123456789)
if not id:match( '^%d+$' ) then
if not string.match( id, '^c?b?%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]$' ) then
return false
return false
end
end
return '[https://www.ngv.vic.gov.au/explore/collection/artist/'..id..'/ '..id..']'..p.getCatForId( 'NGV' )
--Add cb prefix if it has been removed
if not string.match( id, '^cb.+$' ) then
id = 'cb'..id
end
return '[https://catalogue.bnf.fr/ark:/12148/'..id..' '..id..'] [https://data.bnf.fr/ark:/12148/'..id..' (data)]'..p.getCatForId( 'BNF' )
end
end


function p.nkcLink( id )
function p.bpnLink( id )
--P691's format regex: [a-z]{2,4}[0-9]{2,14} (e.g. abcd12345678901234)
--P651's format regex: \d{8} (e.g. 12345678)
if not id:match( '^[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'NKC' )
return '[http://www.biografischportaal.nl/en/persoon/'..id..' '..id..']'..p.getCatForId( 'BPN' ) --no https yet (10/2018)
end
end


function p.nlaLink( id )
function p.ridLink( id )
--P409's format regex: [1-9][0-9]{0,11} (e.g. 123456789012)
--P1053's format regex: [A-Z]-\d{4}-(19|20)\d\d (e.g. A-1234-1934)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
if not string.match( id, '^[A-Z]%-%d%d%d%d%-19%d%d$' ) and
  not string.match( id, '^[A-Z]%-%d%d%d%d%-20%d%d$' ) then
return false
return false
end
end
return '[https://nla.gov.au/anbd.aut-an'..id..' '..id..']'..p.getCatForId( 'NLA' )
return '[https://www.researcherid.com/rid/'..id..' '..id..']'..p.getCatForId( 'RID' )
end
end


function p.nlgLink( id )
function p.bibsysLink( id )
--P3348's format regex: [1-9]\d* (e.g. 1)
--P1015's format regex: [1-9]\d* or [1-9](\d{0,8}|\d{12}) (e.g. 1234567890123)
if not id:match( '^[1-9]%d*$' ) then
--TODO: follow up @ [[d:Property talk:P1015#Discrepancy between the 2 regex constraints]] or escalate/investigate
if not string.match( id, '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) and
  not string.match( id, '^[1-9]%d%d%d%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://data.nlg.gr/resource/authority/record'..id..' '..id..']'..p.getCatForId( 'NLG' )
return '[https://authority.bibsys.no/authority/rest/authorities/html/'..id..' '..id..']'..p.getCatForId( 'BIBSYS' )
end
end


function p.nliLink( id )
function p.ulanLink( id )
--P949's format regex: \d{9} (e.g. 123456789)
--P245's format regex: 500\d{6} (e.g. 500123456)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^500%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[http://uli.nli.org.il/F/?func=direct&doc_number='..id..'&local_base=nlx10'..' '..id..']'..p.getCatForId( 'NLI' )
return '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid='..id..' '..id..']'..p.getCatForId( 'ULAN' )
end
end


function p.nlkLink( id )
function p.nlaLink( id )
--P5034's format regex: KA.(19|20).{7} (e.g. KAC201501465)
--P409's format regex: [1-9][0-9]{0,11} (e.g. 123456789012)
if not id:match( '^KA.19.......$' ) and
if not string.match( id, '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
  not id:match( '^KA.20.......$' ) then
return false
return false
end
end
return '[https://nl.go.kr/authorities/resource/'..id..' '..id..']'..p.getCatForId( 'NLK' )
return '[https://nla.gov.au/anbd.aut-an'..id..' '..id..']'..p.getCatForId( 'NLA' )
end
end


function p.nlpLink( id )
function p.nlapersonLink( id )
--P1695's format regex: 9810[0-9]\d* or A[0-9]{7}[0-9X] (e.g. 9810123456789012345 or A10414836)
--P1315's format regex: [1-9]\d{5,7} (e.g. 12345678)
if not id:match( '^9810%d+$' ) and
if not string.match( id, '^[1-9]%d%d%d%d%d%d?%d?$' ) then
  not id:match( '^A%d%d%d%d%d%d%d[%dX]$' ) then
return false
return false
end
end
return '[https://tools.wmflabs.org/wikidata-externalid-url?p=1695&id='..id..' '..id..']'..p.getCatForId( 'NLP' )
return '[https://trove.nla.gov.au/people/'..id..' '..id..']'..p.getCatForId( 'NLA-person' )
end
end


function p.nlrLink( id )
function p.rkdartistsLink( id )
--P1003's format regex: \d{9} (e.g. 123456789)
--P650's format regex: [1-9]\d{0,5} (e.g. 123456)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^[1-9]%d?%d?%d?%d?%d?$' ) then
return false
return false
end
end
return '[http://alephnew.bibnat.ro:8991/F?func=find-b&request='..id..'&find_code=SYS&adjacent=Y&local_base=NLR10 '..id..']'..p.getCatForId( 'NLR' )
return '[https://rkd.nl/en/explore/artists/'..id..' '..id..']'..p.getCatForId( 'RKDartists' )
end
end


function p.nskLink( id )
function p.snacLink( id )
--P1375's format regex: \d{9} (e.g. 123456789)
--P3430's format regex: \d*[A-Za-z][0-9A-Za-z]* (e.g. A)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
if not string.match( id, '^%d*[A-Za-z][0-9A-Za-z]*$' ) then
return false
return false
end
end
return '[http://katalog.nsk.hr/F/?func=direct&doc_number='..id..'&local_base=nsk10 '..id..']'..p.getCatForId( 'NSK' ) --no https as of 9/2019
return '[http://socialarchive.iath.virginia.edu/ark:/99166/'..id..' '..id..']'..p.getCatForId( 'SNAC-ID' ) --no https yet (10/2018)
end
end


function p.ntaLink( id )
function p.dblpLink( id )
--P1006's format regex: \d{8}[\dX] (e.g. 12345678X)
--P2456's format regex: \d{2,3} /\d+(-\d+)?|[a-z] /[a-zA-Z][0-9A-Za-z]*(-\d+)? (e.g. 123/123)
if not id:match( '^%d%d%d%d%d%d%d%d[%dX]$' ) then
if not string.match( id, '^%d%d%d?/%d+$' ) and
  not string.match( id, '^%d%d%d?/%d+%-%d+$' ) and
  not string.match( id, '^[a-z]/[a-zA-Z][0-9A-Za-z]*$' ) and
  not string.match( id, '^[a-z]/[a-zA-Z][0-9A-Za-z]*%-%d+$' ) then
return false
return false
end
end
return '[http://data.bibliotheken.nl/id/thes/p'..id..' '..id..']'..p.getCatForId( 'NTA' )
return '[https://dblp.org/pid/'..id..' '..id..']'..p.getCatForId( 'DBLP' )
end
end


function p.orcidLink( id )
function p.aagLink( id )
id = p.validateIsni( id ) --e.g. 0000-0002-7398-5483
--P3372's format regex: \d+ (e.g. 1)
if not id then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
id = id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
return '[http://www.aucklandartgallery.com/explore-art-and-ideas/artist/'..id..'/ '..id..']'..p.getCatForId( 'AAG' )
return '[https://orcid.org/'..id..' '..id..']'..p.getCatForId( 'ORCID' )
end
end


function p.picLink( id )
function p.acmLink( id )
--P2750's format regex: [1-9]\d* (e.g. 1)
--P864's format regex: \d{11} (e.g. 12345678901)
if not id:match( '^[1-9]%d*$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://pic.nypl.org/constituents/'..id..' '..id..']'..p.getCatForId( 'PIC' )
return '[https://dl.acm.org/author_page.cfm?id='..id..' '..id..']'..p.getCatForId( 'ACM-DL' )
end
end


function p.ridLink( id )
function p.adbLink( id )
--P1053's format regex: [A-Z]-\d{4}-(19|20)\d\d (e.g. A-1234-1934)
--P1907's format regex: [a-z][-a-z]+-([1-2]\d|[1-9])\d{0,3} (e.g. barton-sir-edmund-toby-71)
if not id:match( '^[A-Z]%-%d%d%d%d%-19%d%d$' ) and
if not string.match( id, '^[a-z][-a-z]+-[1-2]%d%d?%d?%d?$' ) and
  not id:match( '^[A-Z]%-%d%d%d%d%-20%d%d$' ) then
  not string.match( id, '^[a-z][-a-z]+-[1-9]%d?%d?%d?$' ) then
return false
return false
end
end
return '[https://www.researcherid.com/rid/'..id..' '..id..']'..p.getCatForId( 'RID' )
return '[http://adb.anu.edu.au/biography/'..id..' '..id..']'..p.getCatForId( 'ADB' )
end
end


function p.reroLink( id )
function p.agsaLink( id )
--P3065's format regex: 0[1-2]-[A-Z0-9]{1,10} (e.g. 02-A012345678)
--P6804's format regex: [1-9]\d* (e.g. 3625)
if not id:match( '^0[1-2]%-[A-Z%d][A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?$' ) then
if not string.match( id, '^[1-9]%d*$' ) then
return false
return false
end
end
return '[http://data.rero.ch/'..id..' '..id..']'..p.getCatForId( 'RERO' )
return '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/'..id..'/ '..id..']'..p.getCatForId( 'AGSA' )
end
end


function p.rkdartistsLink( id )
function p.autoresuyLink( id )
--P650's format regex: [1-9]\d{0,5} (e.g. 123456)
--P2558's format regex: [1-9]\d{0,4} (e.g. 12345)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) then
if not string.match( id, '^[1-9]%d?%d?%d?%d?$' ) then
return false
return false
end
end
return '[https://rkd.nl/en/explore/artists/'..id..' '..id..']'..p.getCatForId( 'RKDartists' )
return '[https://autores.uy/autor/'..id..' '..id..']'..p.getCatForId( 'autores.uy' )
end
end


function p.rkdidLink( id )
function p.awrLink( id )
--P350's format regex: [1-9]\d{0,5} (e.g. 123456)
--P4186's format regex: (([A-Z]{3}\d{4})|([A-Z]{2}\d{5}))[a-z] (e.g. PR00768b)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) then
if not string.match( id, '^[A-Z][A-Z][A-Z]%d%d%d%d[a-z]$' ) and
  not string.match( id, '^[A-Z][A-Z]%d%d%d%d%d[a-z]$' ) then
return false
return false
end
end
return '[https://rkd.nl/nl/explore/images/'..id..' '..id..']'..p.getCatForId( 'RKDID' )
return '[http://www.womenaustralia.info/biogs/'..id..'.htm '..id..']'..p.getCatForId( 'AWR' )
end
end


function p.rslLink( id )
function p.picLink( id )
--P947's format regex: \d{1,9} (e.g. 123456789)
--P2750's format regex: [1-9]\d* (e.g. 1)
if not id:match( '^%d%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
if not string.match( id, '^[1-9]%d*$' ) then
return false
return false
end
end
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request='..id..'&CON_LNG=ENG '..id..']'..p.getCatForId( 'RSL' ) --no https as of 9/2019
return '[https://pic.nypl.org/constituents/'..id..' '..id..']'..p.getCatForId( 'PIC' )
end
end


function p.sbnLink( id )
function p.bildLink( id )
--P396's format regex: IT\\ICCU\\(\d{10}|\D\D[\D\d]\D\\\d{6}) (e.g. IT\ICCU\CFIV\000163)
--P2092's format regex: \d+ (e.g. 1)
if not id:match( '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and
if not string.match( id, '^%d+$' ) then
  not id:match( '^IT\\ICCU\\%u%u[%u%d]%u\\%d%d%d%d%d%d$' ) then --legacy: %u used here instead of %D (but the faulty ID cat is empty, out of ~12k uses)
return false
return false
end
end
return '[https://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid='..id..' '..id..']'..p.getCatForId( 'SBN' )
return '[https://www.bildindex.de/document/obj'..id..' '..id..']'..p.getCatForId( 'Bildindex' )
end
end


function p.selibrLink( id )
function p.jocondeLink( id )
--P906's format regex: [1-9]\d{4,5} (e.g. 123456)
--P347's format regex: [\-0-9A-Za-z]{11} (e.g. 12345678901)
if not id:match( '^[1-9]%d%d%d%d%d?$' ) then
local regex = '^'..string.rep('[%-0-9A-Za-z]', 11)..'$'
if not string.match( id, regex ) then
return false
return false
end
end
return '[https://libris.kb.se/auth/'..id..' '..id..']'..p.getCatForId( 'SELIBR' )
return '[http://www2.culture.gouv.fr/public/mistral/joconde_fr?ACTION=CHERCHER&FIELD_1=REF&VALUE_1='..id..' '..id..']'..p.getCatForId( 'Joconde' ) --no https yet (10/2018)
end
end


function p.sikartLink( id )
function p.rkdidLink( id )
--P781's format regex: \d{7,9} (e.g. 123456789)
--P350's format regex: [1-9]\d{0,5} (e.g. 123456)
if not id:match( '^%d%d%d%d%d%d%d%d?%d?$' ) then
if not string.match( id, '^[1-9]%d?%d?%d?%d?%d?$' ) then
return false
return false
end
end
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id='..id..'&lng=en '..id..']'..p.getCatForId( 'SIKART' ) --no https as of 9/2019
return '[https://rkd.nl/nl/explore/images/'..id..' '..id..']'..p.getCatForId( 'RKDID' )
end
end


function p.snacLink( id )
function p.balatLink( id )
--P3430's format regex: \d*[A-Za-z][0-9A-Za-z]* (e.g. A)
--P3293's format regex: \d+ (e.g. 1)
if not id:match( '^%d*[A-Za-z][0-9A-Za-z]*$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
return '[https://snaccooperative.org/ark:/99166/'..id..' '..id..']'..p.getCatForId( 'SNAC-ID' )
return '[http://balat.kikirpa.be/object/104257'..id..' '..id..']'..p.getCatForId( 'BALaT' ) --no https yet (10/2018)
end
end


function p.sudocLink( id )
function p.lnbLink( id )
--P269's format regex: (\d{8}[\dX]|) (e.g. 026927608)
--P1368's format regex: \d{9} (e.g. 123456789)
if not id:match( '^%d%d%d%d%d%d%d%d[%dxX]$' ) then --legacy: allow lowercase 'x'
if not string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://www.idref.fr/'..id..' '..id..']'..p.getCatForId( 'SUDOC' )
return '[https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number='..id..'&P_CON_LNG=ENG '..id..']'..p.getCatForId( 'LNB' )
end
end


function p.s2authoridLink( id )
function p.nskLink( id )
--P4012's format regex: [1-9]\d* (e.g. 1796130)
--P1375's format regex: \d{9} (e.g. 123456789)
if not id:match( '^[1-9]%d*$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://www.semanticscholar.org/author/'..id..' '..id..']'..p.getCatForId( 'Semantic Scholar author' ) --special category name
return '[http://katalog.nsk.hr/F/?func=direct&doc_number='..id..'&local_base=nsk10 '..id..']'..p.getCatForId( 'NSK' ) --no https yet (10/2018)
end
end


function p.ta98Link( id )
function p.iciaLink( id )
--P1323's format regex: A\d{2}\.\d\.\d{2}\.\d{3}[FM]? (e.g. A12.3.45.678)
--P1736's format regex: \d+ (e.g. 1)
if not id:match( '^A%d%d%.%d%.%d%d%.%d%d%d[FM]?$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
return '[http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id='..id..' '..id..']'..p.getCatForId( 'TA98' )
return '[https://www.imj.org.il/artcenter/newsite/en/?artist='..id..' '..id..']'..p.getCatForId( 'ICIA' )
end
end


function p.tdviaLink( id )
function p.ta98Link( id )
--P7314's format regex: [a-z/-]+] (e.g. barkan-omer-lutfi)
--P1323's format regex: A\d{2}\.\d\.\d{2}\.\d{3}[FM]? (e.g. A12.3.45.678)
if not id:match( '^[a-z/-]+$' ) then
if not string.match( id, '^A%d%d%.%d%.%d%d%.%d%d%d[FM]?$' ) then
return false
return false
end
end
return '[https://islamansiklopedisi.org.tr/'..id..' '..id..']'..p.getCatForId( 'TDVİA' )
return '[http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id='..id..' '..id..']'..p.getCatForId( 'TA98' )
end
end


function p.teLink( id )
function p.teLink( id )
--P1693's format regex: E[1-8]\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1}\.\d{1}\.\d{1,3} (e.g. E1.23.45.67.8.9.0)
--P1693's format regex: E[1-8]\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1}\.\d{1}\.\d{1,3} (e.g. E1.23.45.67.8.9.0)
local e1, e2 = id:match( '^E([1-8])%.(%d%d?)%.%d%d?%.%d%d?%.%d%.%d%.%d%d?%d?$' )
local e1, e2 = string.match( id, '^E([1-8])%.(%d%d?)%.%d%d?%.%d%d?%.%d%.%d%.%d%d?%d?$' )
if not e1 then
if not e1 then
return false
return false
627번째 줄: 619번째 줄:
function p.tepapaLink( id )
function p.tepapaLink( id )
--P3544's format regex: \d+ (e.g. 1)
--P3544's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
if not string.match( id, '^%d+$' ) then
return false
return false
end
end
635번째 줄: 627번째 줄:
function p.thLink( id )
function p.thLink( id )
--P1694's format regex: H\d\.\d{2}\.\d{2}\.\d\.\d{5} (e.g. H1.23.45.6.78901)
--P1694's format regex: H\d\.\d{2}\.\d{2}\.\d\.\d{5} (e.g. H1.23.45.6.78901)
local h1, h2 = id:match( '^H(%d)%.(%d%d)%.%d%d%.%d%.%d%d%d%d%d$' )
local h1, h2 = string.match( id, '^H(%d)%.(%d%d)%.%d%d%.%d%.%d%d%d%d%d$' )
if not h1 then
if not h1 then
return false
return false
643번째 줄: 635번째 줄:
end
end


function p.tlsLink( id )
function p.dsiLink( id )
local id2 = id:gsub(' +', '_')
--P2349's format regex: [1-9]\d* (e.g. 1538)
--P1362's format regex: \p{Lu}[\p{L}\d_',\.\-\(\)\*/–]{3,59} (e.g. Abcd)
if not string.match( id, '^[1-9]%d*$' ) then
local class = "[%a%d_',%.%-%(%)%*/–]"
local regex = "^%u"..string.rep(class, 3)..string.rep(class.."?", 56).."$"
if not mw.ustring.match( id2, regex ) then
return false
return false
end
end
return '[http://tls.theaterwissenschaft.ch/wiki/'..id2..' '..id..']'..p.getCatForId( 'TLS' ) --no https as of 9/2019
return '[http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value='..id..' '..id..']'..p.getCatForId( 'DSI' )
end
end


function p.troveLink( id )
function p.s2authoridLink( id )
--P1315's format regex: [1-9]\d{5,7} (e.g. 12345678)
--P4012's format regex: [1-9]\d* (e.g. 1796130)
if not id:match( '^[1-9]%d%d%d%d%d%d?%d?$' ) then
if not string.match( id, '^[1-9]%d*$' ) then
return false
return false
end
end
return '[https://trove.nla.gov.au/people/'..id..' '..id..']'..p.getCatForId( 'Trove' )
return '[https://www.semanticscholar.org/author/'..id..' '..id..']'..p.getCatForId( 'Semantic Scholar author' ) --special category name
end
end


function p.ulanLink( id )
function p.nliLink( id )
--P245's format regex: 500\d{6} (e.g. 500123456)
--P949's format regex: \d{9} (e.g. 123456789)
if not id:match( '^500%d%d%d%d%d%d$' ) then
if not string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) then
return false
return false
end
end
return '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid='..id..' '..id..']'..p.getCatForId( 'ULAN' )
return '[http://aleph.nli.org.il/F/?func=find-b&local_base=NNL10&find_code=SYS&con_lng=eng&request='..id..' '..id..']'..p.getCatForId( 'NLI' )
end
end


function p.uscongressLink( id )
function p.nlpLink( id )
--P1157's format regex: [A-Z]00[01]\d{3} (e.g. A000123)
--P1695's format regex: 9810[0-9]\d* or A[0-9]{7}[0-9X] (e.g. 9810123456789012345 or A10414836)
if not id:match( '^[A-Z]00[01]%d%d%d$' ) then
if not string.match( id, '^9810%d+$' ) and
  not string.match( id, '^A%d%d%d%d%d%d%d[%dX]$' ) then
return false
return false
end
end
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index='..id..' '..id..']'..p.getCatForId( 'USCongress' ) --no https as of 9/2019
return '[https://tools.wmflabs.org/wikidata-externalid-url?p=1695&id='..id..' '..id..']'..p.getCatForId( 'NLP' )
end
end


function p.viafLink( id )
function p.reroLink( id )
--P214's format regex: [1-9]\d(\d{0,7}|\d{17,20}) (e.g. 123456789, 1234567890123456789012)
--P3065's format regex: 0[1-2]-[A-Z0-9]{1,10} (e.g. 02-A012345678)
if not id:match( '^[1-9]%d%d?%d?%d?%d?%d?%d?%d?$' ) and
if not string.match( id, '^0[1-2]%-[A-Z%d][A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?$' ) then
  not id:match( '^[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?$' ) then
return false
return false
end
end
return '[https://viaf.org/viaf/'..id..' '..id..']'..p.getCatForId( 'VIAF' )
return '[http://data.rero.ch/'..id..' '..id..']'..p.getCatForId( 'RERO' )
end
end


--[[=========================== Helper functions =============================]]
function p.nlrLink( id )
 
--P1003's format regex: \d{9} (e.g. 123456789)
function p.append(str, c, length)
if not string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) then
while str:len() < length do
return false
str = c .. str
end
end
return str
return '[http://alephnew.bibnat.ro:8991/F?func=find-b&request='..id..'&find_code=SYS&adjacent=Y&local_base=NLR10 '..id..']'..p.getCatForId( 'NLR' )
end
end


--Returns the ISNI check digit isni must be a string where the 15 first elements are digits, e.g. 0000000066534145
function p.ntaLink( id )
function p.getIsniCheckDigit( isni )
--P1006's format regex: \d{8}[\dX] (e.g. 12345678X)
local total = 0
if not string.match( id, '^%d%d%d%d%d%d%d%d[%dX]$' ) then
for i = 1, 15 do
return false
local digit = isni:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
end
local remainder = total % 11
return '[http://data.bibliotheken.nl/id/thes/p'..id..' '..id..']'..p.getCatForId( 'NTA' )
local result = (12 - remainder) % 11
if result == 10 then
return "X"
end
return tostring( result )
end
end


--Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid
function p.bncLink( id )
--See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
--P1890's format regex: \d{9} (e.g. 123456789)
function p.validateIsni( id )
if not string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) then
--P213 (ISNI) format regex: [0-9]{4} [0-9]{4} [0-9]{4} [0-9]{3}[0-9X] (e.g. 0000-0000-6653-4145)
--P496 (ORCID) format regex: 0000-000(1-[5-9]|2-[0-9]|3-[0-4])\d{3}-\d{3}[\dX] (e.g. 0000-0002-7398-5483)
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
return false
end
end
if p.getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then
return '[http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number='..id..' '..id..']'..p.getCatForId( 'BNC' )
return false
end
return id
end
end


function p.splitLccn( id )
function p.canticLink( id )
--P244's format regex: (n|nb|nr|no|ns|sh)([4-9][0-9]|00|20[0-1][0-9])[0-9]{6} (e.g. n78039510)
--P1273's format regex: a\d{7}[0-9x] (e.g. a10640745)
if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
if not id:match( '^a%d%d%d%d%d%d%d[%dx]$' ) then
id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
return false
end
end
if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
return '[http://cantic.bnc.cat/registres/CUCId/'..id..' '..id..']'..p.getCatForId( 'CANTIC' ) --no https as of 10/2019
return mw.text.split( id, '/' )
end
return false
end
end


777번째 줄: 748번째 줄:


local catName = '잘못된 '..(specialCat or id)..' 식별자를 포함한 위키백과 문서'
local catName = '잘못된 '..(specialCat or id)..' 식별자를 포함한 위키백과 문서'
return '* <span class="error">'..id..' id '..rawValue..' 값은 유효하지 않습니다.</span>[[분류:'..catName..']]'..p.redCatLink(catName)..'\n'
return '* <span class="error">The '..id..' id '..rawValue..' is not valid.</span>[[분류:'..catName..']]'..p.redCatLink(catName)..'\n'
end
end


788번째 줄: 759번째 줄:
  '! colspan=4 | 추적용 분류와 문서 수\n'..
  '! colspan=4 | 추적용 분류와 문서 수\n'..
  '|-\n'..
  '|-\n'..
  '! [[:분류:전거 통제 정보를 포함한 위키백과 문서|문서]]\n'..
  '! 문서\n'..
  '! [[:분류:전거 통제 정보를 포함한 사용자 문서|사용자 문서]]\n'..
  '! 사용자 문서\n'..
  '! [[:분류:전거 통제 정보를 포함한 기타 문서|기타 문서]]\n'..
  '! 기타 문서\n'..
  '! [[:분류:잘못된 전거 통제 정보를 포함한 위키백과 문서|잘못된 ID]]\n'..
  '! 잘못된 IDs\n'..
  '|-\n'
  '|-\n'
836번째 줄: 807번째 줄:
{ 'ACM-DL', '[[ACM 디지털 라이브러리|ACM DL]]', 864, p.acmLink },
{ 'ACM-DL', '[[ACM 디지털 라이브러리|ACM DL]]', 864, p.acmLink },
{ 'ADB', '[[:en:Australian Dictionary of Biography|ADB]]', 1907, p.adbLink },
{ 'ADB', '[[:en:Australian Dictionary of Biography|ADB]]', 1907, p.adbLink },
{ 'AGSA', '[[:en:Art Gallery of South Australia|AGSA]]', 6804, p.agsaLink },
{ 'AGSA', '[[Art Gallery of South Australia|AGSA]]', 6804, p.agsaLink },
{ 'Autores.uy', '[[autores.uy]]', 2558, p.autoresuyLink }, -- 맨 앞이 소문자로 시작하는 경우 {{전거 통제 식별자를 포함한 문서}}가 동작하지 않아 우선 수정함 (autores.uy → Autores.uy)
{ 'Autores.uy', '[[autores.uy]]', 2558, p.autoresuyLink }, -- 맨 앞이 소문자로 시작하는 경우 동작하지 않아 우선 수정함 (autores.uy → Autores.uy)
{ 'AWR', '[[:en:Australian Women\'s Register|AWR]]', 4186, p.awrLink },
{ 'AWR', '[[Australian Women\'s Register|AWR]]', 4186, p.awrLink },
{ 'BALaT', '[[:en:Royal Institute for Cultural Heritage#Online artworks pages|BALaT]]', 3293, p.balatLink },
{ 'BALaT', '[[Royal Institute for Cultural Heritage#Online artworks pages|BALaT]]', 3293, p.balatLink },
{ 'BIBSYS', '[[BIBSYS]]', 1015, p.bibsysLink },
{ 'BIBSYS', '[[BIBSYS]]', 1015, p.bibsysLink },
{ 'Bildindex', '[[:en:Marburg Picture Index|Bildindex]]', 2092, p.bildLink },
{ 'Bildindex', '[[Marburg Picture Index|Bildindex]]', 2092, p.bildLink },
{ 'BNC', '[[칠레 국립도서관|BNC]]', 1890, p.bncLink }, --initially commented due to excessive WD ID errors (many bad IDs since removed)
{ 'BNC', '[[Biblioteca Nacional de Chile|BNC]]', 1890, p.bncLink }, --initially commented due to excessive WD ID errors (many bad IDs since removed)
{ 'BNE', '[[스페인 국립도서관|BNE]]', 950, p.bneLink },
{ 'BNE', '[[스페인 국립도서관|BNE]]', 950, p.bneLink },
{ 'BNF', '[[프랑스 국립도서관|BNF]]', 268, p.bnfLink },
{ 'BNF', '[[프랑스 국립도서관|BNF]]', 268, p.bnfLink },
{ 'Botanist', '[[:en:Author citation (botany)|Botanist]]', 428, p.botanistLink },
{ 'Botanist', '[[Author citation (botany)|Botanist]]', 428, p.botanistLink },
{ 'BPN', '[[:en:Biografisch Portaal|BPN]]', 651, p.bpnLink },
{ 'BPN', '[[:en:Biografisch Portaal|BPN]]', 651, p.bpnLink },
{ 'CANTIC', '[[:en:Name and Title Authority File of Catalonia|CANTIC]]', 1273, p.canticLink },
{ 'CANTIC', '[[Name and Title Authority File of Catalonia|CANTIC]]', 1273, p.canticLink },
{ 'CINII', '[[CiNii]]', 271, p.ciniiLink },
{ 'CINII', '[[CiNii]]', 271, p.ciniiLink },
{ 'DAAO', '[[:en:Dictionary of Australian Artists|DAAO]]', 1707, p.daaoLink },
{ 'DAAO', '[[Dictionary of Australian Artists|DAAO]]', 1707, p.daaoLink },
{ 'DBLP', '[[DBLP]]', 2456, p.dblpLink },
{ 'DBLP', '[[DBLP]]', 2456, p.dblpLink },
{ 'DSI', '[[:en:Stuttgart Database of Scientific Illustrators 1450–1950|DSI]]', 2349, p.dsiLink },
{ 'DSI', '[[Stuttgart Database of Scientific Illustrators 1450–1950|DSI]]', 2349, p.dsiLink },
{ 'FNZA', '[[:d:Property:P6792|FNZA]]', 6792, p.fnzaLink },
{ 'GND', '[[게마인자메 노름다타이|GND]]', 227, p.gndLink },
{ 'GND', '[[게마인자메 노름다타이|GND]]', 227, p.gndLink },
{ 'HDS', '[[스위스 역사 사전|HDS]]', 902, p.hdsLink },
{ 'HDS', '[[스위스 역사 사전|HDS]]', 902, p.hdsLink },
{ 'IAAF', '[[국제 육상 경기 연맹|IAAF]]', 1146, p.iaafLink },
{ 'IAAF', '[[International Association of Athletics Federations|IAAF]]', 1146, p.iaafLink },
{ 'ICIA', '[[:en:Information Center for Israeli Art|ICIA]]', 1736, p.iciaLink },
{ 'ICIA', '[[Information Center for Israeli Art|ICIA]]', 1736, p.iciaLink },
{ 'ISNI', '[[국제 표준 명칭 식별자|ISNI]]', 213, p.isniLink },
{ 'ISNI', '[[국제 표준 명칭 식별자|ISNI]]', 213, p.isniLink },
{ 'Joconde', '[[:en:Joconde|Joconde]]' , 347, p.jocondeLink },
{ 'Joconde', '[[Joconde]]' , 347, p.jocondeLink },
{ 'KULTURNAV', '[[:en:KulturNav|KulturNav]]', 1248, p.kulturnavLink },
{ 'KULTURNAV', '[[KulturNav]]', 1248, p.kulturnavLink },
{ 'LCCN', '[[미국 의회도서관 제어 번호|LCCN]]', 244, p.lccnLink },
{ 'LCCN', '[[미국 의회도서관 제어 번호|LCCN]]', 244, p.lccnLink },
{ 'LIR', '[[스위스 역사 사전|LIR]]', 886, p.lirLink },
{ 'LIR', '[[스위스 역사 사전|LIR]]', 886, p.lirLink },
876번째 줄: 846번째 줄:
{ 'NCL', '[[국가도서관|NCL]]', 1048, p.nclLink },
{ 'NCL', '[[국가도서관|NCL]]', 1048, p.nclLink },
{ 'NDL', '[[일본 국립국회도서관|NDL]]', 349, p.ndlLink },
{ 'NDL', '[[일본 국립국회도서관|NDL]]', 349, p.ndlLink },
{ 'NGV', '[[:en:National Gallery of Victoria|NGV]]', 2041, p.ngvLink },
{ 'NGV', '[[National Gallery of Victoria|NGV]]', 2041, p.ngvLink },
{ 'NKC', '[[체코 국립도서관|NKC]]', 691, p.nkcLink },
{ 'NKC', '[[체코 국립도서관|NKC]]', 691, p.nkcLink },
{ 'NLA', '[[오스트레일리아 국립도서관|NLA]]', 409, p.nlaLink },
{ 'NLA', '[[오스트레일리아 국립도서관|NLA]]', 409, p.nlaLink },
{ 'NLG', '[[그리스 국립도서관|NLG]]', 3348, p.nlgLink },
{ 'NLA-person', '[[오스트레일리아 국립도서관|NLA-person]]', 1315, p.nlapersonLink },
{ 'NLI', '[[이스라엘 국립도서관|NLI]]', 949, p.nliLink },
{ 'NLI', '[[이스라엘 국립도서관|NLI]]', 949, p.nliLink },
     { 'NLK', '[[국립중앙도서관|NLK]]', 5034, p.nlkLink },
     { 'NLK', '[[국립중앙도서관|NLK]]', 5034, p.nlkLink },
{ 'NLP', '[[폴란드 국립도서관|NLP]]', 1695, p.nlpLink },
{ 'NLP', '[[폴란드 국립도서관|NLP]]', 1695, p.nlpLink },
{ 'NLR', '[[루마니아 국립도서관|NLR]]', 1003, p.nlrLink }, --initially commented due to excessive WD ID errors (conflated with National Library of Russia IDs)
{ 'NLR', '[[루마니아 국립도서관|NLR]]', 1003, p.nlrLink }, --initially commented due to excessive WD ID errors (conflated with National Library of Russia IDs)
{ 'NSK', '[[자그레브 국립 대학 도서관|NSK]]', 1375, p.nskLink },
{ 'NSK', '[[National and University Library in Zagreb|NSK]]', 1375, p.nskLink },
{ 'NTA', '[[네덜란드 왕립도서관|NTA]]', 1006, p.ntaLink },
{ 'NTA', '[[Royal Library of the Netherlands|NTA]]', 1006, p.ntaLink },
{ 'ORCID', '[[ORCID]]', 496, p.orcidLink },
{ 'ORCID', '[[ORCID]]', 496, p.orcidLink },
{ 'PIC', '[[:d:Q23892012|PIC]]', 2750, p.picLink },
{ 'PIC', '[[:d:Q23892012|PIC]]', 2750, p.picLink },
{ 'RID', '[[:en:ResearcherID|ResearcherID]]', 1053, p.ridLink },
{ 'RID', '[[:en:ResearcherID|ResearcherID]]', 1053, p.ridLink },
{ 'RERO', '[[:en:RERO (Library Network of Western Switzerland)|RERO]]', 3065, p.reroLink }, --initially commented due to excessive WD ID errors (regex fixed/relaxed)
{ 'RERO', '[[RERO (Library Network of Western Switzerland)|RERO]]', 3065, p.reroLink }, --initially commented due to excessive WD ID errors (regex fixed/relaxed)
{ 'RKDartists', '[[:en:Netherlands Institute for Art History#Online artist pages|RKD]]', 650, p.rkdartistsLink },
{ 'RKDartists', '[[:en:Netherlands Institute for Art History#Online artist pages|RKD]]', 650, p.rkdartistsLink },
{ 'RKDID', '[[:d:Q17299580|RKDimages ID]]', 350, p.rkdidLink },
{ 'RKDID', '[[:d:Q17299580|RKDimages ID]]', 350, p.rkdidLink },
{ 'RSL', '[[러시아 국립도서관 (모스크바)|RSL]]', 947, p.rslLink },
{ 'RSL', '[[Russian State Library|RSL]]', 947, p.rslLink },
{ 'SBN', '[[:en:Istituto Centrale per il Catalogo Unico|ICCU]]', 396, p.sbnLink },
{ 'SBN', '[[:en:Istituto Centrale per il Catalogo Unico|ICCU]]', 396, p.sbnLink },
{ 'SELIBR', '[[LIBRIS|SELIBR]]', 906, p.selibrLink },
{ 'SELIBR', '[[LIBRIS|SELIBR]]', 906, p.selibrLink },
898번째 줄: 868번째 줄:
{ 'SNAC-ID', '[[SNAC]]', 3430, p.snacLink },
{ 'SNAC-ID', '[[SNAC]]', 3430, p.snacLink },
{ 'SUDOC', '[[프랑스 대학도서관 종합목록|SUDOC]]', 269, p.sudocLink },
{ 'SUDOC', '[[프랑스 대학도서관 종합목록|SUDOC]]', 269, p.sudocLink },
{ 'S2AuthorId', '[[:en:Semantic Scholar|S2AuthorId]]', 4012, p.s2authoridLink, category = 'Semantic Scholar author' }, --special category name
{ 'S2AuthorId', '[[Semantic Scholar|S2AuthorId]]', 4012, p.s2authoridLink, category = 'Semantic Scholar author' }, --special category name
{ 'TA98', '[[:en:Terminologia Anatomica|TA98]]', 1323, p.ta98Link },
{ 'TA98', '[[Terminologia Anatomica|TA98]]', 1323, p.ta98Link },
{ 'TDVİA', '[[:d:Q21527102|TDVİA]]', 7314, p.tdviaLink },
{ 'TE', '[[Terminologia Embryologica|TE]]', 1693, p.teLink },
{ 'TE', '[[Terminologia Embryologica|TE]]', 1693, p.teLink },
{ 'TePapa', '[[:en:Museum of New Zealand Te Papa Tongarewa|TePapa]]', 3544, p.tepapaLink },
{ 'TePapa', '[[Museum of New Zealand Te Papa Tongarewa|TePapa]]', 3544, p.tepapaLink },
{ 'TH', '[[:en:Terminologia Histologica|TH]]', 1694, p.thLink },
{ 'TH', '[[Terminologia Histologica|TH]]', 1694, p.thLink },
{ 'TLS', '[[:en:Theaterlexikon der Schweiz|TLS]]', 1362, p.tlsLink },
{ 'TLS', '[[:en:Theaterlexikon der Schweiz|TLS]]', 1362, p.tlsLink },
{ 'Trove', '[[:en:Trove|Trove]]', 1315, p.troveLink }, --formerly NLA-person
{ 'ULAN', '[[:en:Union List of Artist Names|ULAN]]', 245, p.ulanLink },
{ 'ULAN', '[[:en:Union List of Artist Names|ULAN]]', 245, p.ulanLink },
{ 'USCongress', '[[미국 의회 인명사전|US Congress]]', 1157, p.uscongressLink },
{ 'USCongress', '[[미국 의회 인명 사전|US Congress]]', 1157, p.uscongressLink },
{ 'VIAF', '[[가상 국제 전거 파일|VIAF]]', 214, p.viafLink },
{ 'VIAF', '[[가상 국제 전거 파일|VIAF]]', 214, p.viafLink },
{ 'WORLDCATID', '[[WorldCat Identities]]', 7859, nil },
}
}


-- Legitimate aliases to p.conf, for convenience
-- Legitimate aliases to p.conf, for convenience
-- Format: { 'alias', 'parameter name in p.conf' }
-- Format: { alias, parameter name in p.conf }
p.aliases = {
p.aliases = {
{ 'RLS', 'RSL' },
{ 'RLS', 'RSL' },
922번째 줄: 889번째 줄:
{ 'MusicBrainz work', 'MBW' },
{ 'MusicBrainz work', 'MBW' },
{ 'Leonore', 'Léonore' },
{ 'Leonore', 'Léonore' },
{ 'TDVIA', 'TDVİA' },
}
}


-- Deprecated aliases to p.conf; tracked in [[Category:Wikipedia articles with deprecated authority control identifiers]]
-- Deprecated aliases to p.conf, which also get assigned to a tracking cat
-- Format: { 'deprecated parameter name', 'replacement parameter name in p.conf' }
-- Format: { deprecated parameter name, replacement parameter name in p.conf }
p.deprecated = {
p.deprecated = {
{ 'GKD', 'GND' },
{ 'GKD', 'GND' },
1,003번째 줄: 969번째 줄:
for _, params in ipairs( p.conf ) do
for _, params in ipairs( p.conf ) do
local val = parentArgs[params[1]]
local val = parentArgs[params[1]]
if val and val ~= '' and type(params[4]) == 'function' then
if val and val ~= '' then
table.insert( elements, p.createRow( params[1], params[2]..':', val, params[4]( val ), true, params.category ) )
table.insert( elements, p.createRow( params[1], params[2]..':', val, params[4]( val ), true, params.category ) )
rct = rct + 1
rct = rct + 1
1,012번째 줄: 978번째 줄:
local worldcatId = parentArgs['WORLDCATID']
local worldcatId = parentArgs['WORLDCATID']
if worldcatId and worldcatId ~= '' then --if present & unsuppressed
if worldcatId and worldcatId ~= '' then --if present & unsuppressed
table.insert( elements, p.createRow( 'WORLDCATID', '', worldcatId, '[[WorldCat Identities]]: [https://www.worldcat.org/identities/'..mw.uri.encode(worldcatId, 'PATH')..' '..worldcatId..']', false ) ) --Validation?
table.insert( elements, p.createRow( 'WORLDCATID', '', worldcatId, '[[WorldCat Identities]]: [https://www.worldcat.org/identities/'..worldcatId..' '..worldcatId..']', false ) ) --Validation?
worldcatCat = '[[분류:월드캣 식별자를 포함한 위키백과 문서]]'
worldcatCat = '[[분류:월드캣 식별자를 포함한 위키백과 문서]]'
elseif worldcatId == nil then --if absent & unsuppressed
elseif worldcatId == nil then --if absent & unsuppressed
1,038번째 줄: 1,004번째 줄:
local Navbox = require('Module:Navbox')
local Navbox = require('Module:Navbox')
local elementsCat = ''
local elementsCat = ''
if rct >= 25 then
if rct >= 20 then
local eCat = rct..'개의 요소가 포함된 전거 통제'
local catName = rct..'개의 요소가 포함된 전거 통제'
elementsCat  = '[[분류:'..eCat..']]'..p.redCatLink(eCat)
elementsCat  = '[[분류:'..catName..']]'..p.redCatLink(catName)
end
end
가온 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 가온 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)

이 문서에서 사용한 틀: