「モジュール:Authority control」の版間の差分

削除された内容 追加された内容
en:Module:Authority control oldid=1089010245 よりDIB、MGP、TDVIA、TLS、ZBMATHを修正
sandboxを複製、WP:AN/PEによる
9行目:
--[[ Category functions ]]
--[[==========================================================================]]
 
local function addCat( cat )
if cat and cat ~= '' then return '[[Category:'..cat..']]'..p.redCatLink(cat) end
return ''
end
 
function p.getCatForId( id )
local catcatName = ''
if namespace == 0 then
catcatName = id..'識別子が指定されている記事'
elseif namespace == 2 and not title.isSubpage then
catcatName = id..'識別子が指定されている利用者ページ'
else
catcatName = id..'識別子が指定されているその他のページ'
end
return '[[Category:'..catName..']]'..p.redCatLink(catName)
return addCat(cat)
end
 
function p.redCatLink( catcatName ) --catcatName == 'Blah' (not 'Category:Blah', not '[[Category:Blah]]')
if catcatName and catcatName ~= '' and
testcases == false and
mw.title.new(catcatName, 14).exists == false
then
return '[[Category:赤リンクの典拠情報カテゴリがあるページ]]'
37 ⟶ 32行目:
end
 
function p.createRow( id, label, rawValues, link, links, withUid, specialCat, prefix )
local faultyCatcatName = '誤った'..(specialCat or id)..'識別子が指定されている記事'
if links then -- all links[] use withUid = false; no check needed
local row = ''
if labelprefix then
row = row .. '*' ..label prefix
end
--iflocal prefixtotlen then= 0
-- row = row..'*'..prefix
--end
for i, l in ipairs( links ) do
if i == 1 and not labelprefix then row = row..'*' end
ifelse i ~= 1 then row = row..', \n**' end
if l then
row = row..'<span class="uid">'..l..'</span>'
else
row = row..'<span class="error">'..id..'識別子の値'..rawValues[i]..'は正しくありません。</span>[[Category:'..addCatcatName..']]'..p.redCatLink(faultyCatcatName)
end
end
59 ⟶ 52行目:
elseif link then -- All IDs that have a prefix support multiple identifiers, so prefix is not needed
if withUid then
return '*<span class="nowrap">'..label..' <span class="uid">'..link..'</span></span>\n'
end
return '*<span class="nowrap">'..label..' '..link..'</span>\n'
end
 
return '* <span class="error">'..id..'識別子の値'..rawValues..'は正しくありません。</span>[[Category:'..addCatcatName..']]'..p.redCatLink(faultyCatcatName)..'\n'
end
 
71 ⟶ 64行目:
--[[==========================================================================]]
 
-- If a link has a suitable entry in the global inter-wiki prefix table at [[:m:Interwiki_map]], please consider routing through this prefix rather than as external link URL. This will ease future maintenance as necessary updates to the link can be centrally carried out there rather than by updating this module. The "external link" icon would disappear for such entries.
-- please consider routing through this prefix rather than as external link URL.
-- This will ease future maintenance as necessary updates to the link can be centrally carried out there rather than by updating this module.
-- The "external link" icon would disappear for such entries.
 
function p.aagLink( id, label )
--P3372's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.aucklandartgallery.com/explore-art-and-ideas/artist/'..id..'/ '..id(label or 'オークランド')..']'..p.getCatForId( 'AAG' )
end
 
function p.acmLink( id, label )
--P864's format regex: \d{11} (e.g. 12345678901)
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d$' ) then
return false
end
return '[https://dl.acm.org/profile/'..id..' '..id(label or '計算機協会')..']'..p.getCatForId( 'ACM-DL' )
end
 
function p.adbLink( id, label )
--P1907's format regex: [a-z][-a-z]+-([1-32]\d|[1-9])\d{0,3} (e.g. barton-sir-edmund-toby-71)
if not id:match( '^[a-z][-a-z]+-[1-32]%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(label or 'オーストラリア')..']'..p.getCatForId( 'ADB' )
end
 
function p.admiraltyLinkagsaLink( id, label )
--P3562's format regex: [A-Q]\d{4}(\.\d+)? (e.g. D1204.1)
if not id:match('^[A-Q]%d%d%d%d$') and
not id:match('^[A-Q]%d%d%d%d%.%d+$') then
return false
end
return id..p.getCatForId( 'admiralty' )
end
 
function p.agsaLink( id )
--P6804's format regex: [1-9]\d* (e.g. 3625)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/'..id..'/ '..id(label or '南オーストラリア')..']'..p.getCatForId( 'AGSA' )
end
 
function p.ARLHSLink( id )
--P2980's format regex: [A-Z]{3}\d{3,4}[A-Z]?| e.g. LAT023
if not id:match('^[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?$') then
return false
end
return '[http://wlol.arlhs.com/lighthouse/'..id..'.html '..id..']'..p.getCatForId( 'ARLHS' )
end
 
function p.autoresuyLink( id, label )
--P2558's format regex: [1-9]\d{0,4} (e.g. 12345)
if not id:match( '^[1-9]%d?%d?%d?%d?$' ) then
return false
end
return '[https://autores.uy/autor/'..id..' '..id(label or 'ウルグアイ')..']'..p.getCatForId( 'autores.uy' )
end
 
function p.awrLink( id, label )
--P4186's format regex: (([A-Z]{3}\d{4})|([A-Z]{2}\d{5}))[a-z] (e.g. PR00768b)
if not id:match( '^[A-Z][A-Z][A-Z]%d%d%d%d[a-z]$' ) and
140 ⟶ 113行目:
return false
end
return '[http://www.womenaustralia.info/biogs/'..id..'.htm '..id(label or 'Australian Women\'s Register')..']'..p.getCatForId( 'AWR' )
end
 
function p.bibsysLink( id, label )
--P1015's format regex: [1-9]\d* or [1-9](\d{0,8}|\d{12}) (e.g. 1234567890123)
--TODO: follow up @ [[d:Property talk:P1015#Discrepancy between the 2 regex constraints]] or escalate/investigate
150 ⟶ 123行目:
return false
end
return '[https://authority.bibsys.no/authority/rest/authorities/html/'..id..' '..id(label or 'ノルウェー')..']'..p.getCatForId( 'BIBSYS' )
end
 
function p.bildLink( id, label )
--P2092's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.bildindex.de/document/obj'..id..' '..id(label or 'Bildindex(ドイツ)')..']'..p.getCatForId( 'Bildindex' )
end
 
function p.bncLink( id, label )
--P1890'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 '[http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number='..id..' '..id(label or 'チリ')..']'..p.getCatForId( 'BNC' )
end
 
function p.bneLink( id, label )
--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( '^[XF][XF]%d%d%d%d%d?%d?%d?$' ) and
177 ⟶ 150行目:
return false
end
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id='..id..' '..id(label or 'スペイン')..']'..p.getCatForId( 'BNE' ) --no https as of 9/2019
end
 
function p.bnfLink( id, label )
--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
189 ⟶ 162行目:
id = 'cb'..id
end
return '[https://catalogue.bnf.fr/ark:/12148/'..id..' '..id(label or 'フランス')..'] [https://data.bnf.fr/ark:/12148/'..id..' (データ)]'..p.getCatForId( 'BNF' )
end
 
function p.botanistLink( id, label )
--P428's format regex: ('t )?(d')?(de )?(la )?(van (der )?)?(Ma?c)?(De)?(Di)?\p{Lu}?C?['\p{Ll}]*([-'. ]*(van )?(y )?(d[ae][nr]?[- ])?(Ma?c)?[\p{Lu}bht]?C?['\p{Ll}]*)*\.? ?f?\.? (e.g. L.)
--not easily/meaningfully implementable in Lua's regex since "(this)?" is not allowed...
198 ⟶ 171行目:
return false
end
local id2id = id:gsub(' +', '%%20')
return '[https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation='..id2id..' '..id(label or 'International Plant Names Index')..']'..p.getCatForId( 'Botanist' )
end
 
function p.bpnLink( id, label )
--P651's format regex: \d{6,8} (e.g. 00123456)
if not id:match( '^%d%d%d%d%d%d%d%d$' ) and --original format regex, changed 8/2019 to
209 ⟶ 182行目:
return false
end
return '[http://www.biografischportaal.nl/en/persoon/'..id..' '..id(label or 'オランダ')..']'..p.getCatForId( 'BPN' ) --no https as of 9/2019
end
 
function p.canticLink( id, label )
--P1273's format regex: a\d{7}[0-9x] (e.g. a10640745)
if not id:match( '^a%d%d%d%d%d%d%d[%dx]$' ) then
return false
end
return '[http://cantic.bnc.cat/registres/CUCId/'..id..' '..id(label or 'カタルーニャ')..']'..p.getCatForId( 'CANTIC' ) --no https as of 10/2019
end
 
function p.ccgLinkciniiLink( id, label )
--P3920's format regex: ([NAIP])?[1-9]\d*(\.\d+)? (e.g. A1761)
if not id:match( '^[NAIP]?[1-9]%d*$' ) and
not id:match( '^[NAIP]?[1-9]%d*%.%d+$' ) then
return false
end
return id..p.getCatForId( 'CCG' )
end
 
function p.ciniiLink( id )
--P271's format regex: DA\d{7}[\dX] (e.g. DA12345678)
if not id:match( '^DA%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
return '[https://ci.nii.ac.jp/author/'..id..'?l=jaen '..id(label or 'CiNii(日本)')..']'..p.getCatForId( 'CINII' )
end
 
function p.cwgcLink( id, label )
--P1908's format regex: [1-9]\d* (e.g. 75228351)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.cwgc.org/find-war-dead/casualty/'..id..'/ '..id(label or 'コモンウェルス戦争墓地委員会')..']'..p.getCatForId( 'CWGC' )
end
 
function p.daaoLink( id, label )
--P1707's format regex: [a-z\-]+\d* (e.g. rolf-harris)
if not id:match( '^[a-z%-]+%d*$' ) then
return false
end
return '[https://www.daao.org.au/bio/'..id..' '..id(label or 'オーストラリアのアーティスト')..']'..p.getCatForId( 'DAAO' )
end
 
function p.dblpLink( id, label )
--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+$' ) and
261 ⟶ 225行目:
return false
end
return '[https://dblp.org/pid/'..id..' '..id(label or 'DBLP(コンピュータ科学)')..']'..p.getCatForId( 'DBLP' )
end
 
function p.dibLink( id, label )
--P6829's format regex: 0[01]a\d{4}(\.d?(-[A-D])? (e.g. 001953a1953)
if not id:match( '^0[01]a%d%d%d%d%.d?%-?[A-D]?$' ) then
return false
end
return '[https://dib.cambridge.org/viewReadPage.do?articleId='..id..' '..id(label or 'アイルランド')..']'..p.getCatForId( 'DIB' )
end
 
function p.dsiLink( id, label )
--P2349's format regex: [1-9]\d* (e.g. 1538)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value='..id..' '..id(label or '科学画家')..']'..p.getCatForId( 'DSI' )
end
 
function p.dtbioLinkfastLink( id, label )
--P7902's format regex: 1[0-9]{7,8}[0-9X] (e.g. 118554700)
if not id:match( '^1[0-9]%d%d%d%d%d%d%d?[0-9X]$' ) then
return false
end
return '[https://www.deutsche-biographie.de/pnd'..id..'.html?language=en '..id..']'..p.getCatForId( 'DTBIO' )
end
 
function p.emuLink( id )
--P4613's format regex: \d{1,6} (e.g. 15409 (or 015409))
if not id:match( '^%d%d?%d?%d?%d?%d?$' ) then
return false
end
return '[http://esu.com.ua/search_articles.php?id='..id..' '..id..']'..p.getCatForId( 'EMU' )
end
 
function p.fastLink( id )
--P2163's format regex: [1-9]\d{0,7} (e.g. 1916996)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?$' ) then
return false
end
return '[http://id.worldcat.org/fast/'..id..'/ '..id(label or 'Faceted Application of Subject Terminology')..']'..p.getCatForId( 'FAST' )
end
 
function p.fnzaLink( id, label )
--P6792's format regex: [1-9]\d* (e.g. 9785)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://findnzartists.org.nz/artist/'..id..'/ '..id(label or 'ニュージーランドのアーティスト')..']'..p.getCatForId( 'FNZA' )
end
 
function p.gndLink( id, label )
--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)
if not id:match( '^1[012]?%d%d%d%d%d%d%d[0-9X]$' ) and
320 ⟶ 268行目:
return false
end
return '[https://d-nb.info/gnd/'..id..' '..id(label or '統合典拠ファイル(ドイツ)')..']'..p.getCatForId( 'GND' )
end
 
function p.googleLinkhdsLink( id, label )
--P1960's format regex: [-_0-9A-Za-z]{12} (e.g. CUO0vDcAAAAJ)
if not id:match( '^[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]$' ) then
return false
end
return '[https://scholar.google.com/citations?user='..id..' '..id..']'..p.getCatForId( 'Google Scholar' )
end
 
function p.hdsLink( id )
--P902's format regex: \d{6} (e.g. 050123)
if not id:match( '^%d%d%d%d%d%d$' ) then
return false
end
return '[https://hls-dhs-dss.ch/fr/articles/'..id..' '..id(label or 'スイス歴史辞典')..']'..p.getCatForId( 'HDS' )
end
 
function p.iaafLink( id, label )
--P1146's format regex: [0-9][0-9]* (e.g. 012)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.iaaf.org/athletes/_/'..id..' '..id(label or 'ワールドアスレティックス')..']'..p.getCatForId( 'IAAF' )
end
 
function p.iccuLink( id, label )
--P396's format regex: IT\D\ICCU\\(\d{210}|\D\D[A-Z0-3\D\d]V\D\\\d{6}) (e.g. CFIV000163IT\ICCU\CFIV\000163)
if not id:match( '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and
not id:match( '^IT\\ICCU\\%u%u[%u0-3u%d]V%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
end
return '[https://opac.sbn.it/nomeopacsbn/opac/iccu/scheda_authority.jsp?bid='..id..' '..id(label or 'イタリア')..']'..p.getCatForId( 'ICCU' )
end
 
function p.iciaLink( id, label )
--P1736's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.imj.org.il/artcenter/newsite/en/?artist='..id..' '..id(label or 'ICIA(イスラエル)')..']'..p.getCatForId( 'ICIA' )
end
 
function p.ieuLink( id, label )
--P9070's format regex: [A-Z]\\[A-Z]\\[A-Za-z0-9]+ (e.g. K\Y\Kyiv)
if not id:match( '^[A-Z]\\[A-Z]\\%w+$' ) then
return false
end
return '[http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\'..id..' '..id(label or 'ウクライナ・インターネット百科事典')..']'..p.getCatForId( 'IEU' )
end
 
function p.isniLink( id, label )
id = p.validateIsni( id ) --e.g. 0000-0000-6653-4145
if not id then
return false
end
return '[https://isni.org/isni/'..id..' '..id:sub(label 1,or 4 )..' ISNI'..id:sub( 5, 8 )..' '..id:sub( 9, 12 )..' '..id:sub( 13, 16 )..']'..p.getCatForId( 'ISNI' ) --no https as of 9/2019
end
 
function p.j9uLinkjocondeLink( id, label )
--P8189's format regex: 9870(0|1)\d{8}05171 (e.g. 987007305652505171)
if not id:match( '^9870[0-1]%d%d%d%d%d%d%d%d05171$' ) then
return false
end
return '[http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request='..id..' '..id..']'..p.getCatForId( 'J9U' )
end
 
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)..'$'
393 ⟶ 326行目:
return false
end
return '[https://www.pop.culture.gouv.fr/notice/joconde/'..id..' '..id(label or 'Joconde(フランス)')..']'..p.getCatForId( 'Joconde' )
end
 
function p.kulturnavLink( id, label )
--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( '^%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
end
return '[http://kulturnav.org/'..id..' '..id(label or 'KulturNav(ノルウェー)')..']'..p.getCatForId( 'KULTURNAV' ) --no https as of 9/2019
end
 
function p.lccnLink( id, label )
local parts = p.splitLccn( id ) --e.g. n78039510
if not parts then
411 ⟶ 344行目:
local lccnType = parts[1] ~= 'sh' and 'names' or 'subjects'
id = parts[1] .. parts[2] .. p.append( parts[3], '0', 6 )
return '[https://id.loc.gov/authorities/'..lccnType..'/'..id..' '..id(label or 'アメリカ')..']'..p.getCatForId( 'LCCN' )
end
 
function p.lirLink( id, label )
--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(label or 'Lexicon Istoric Retic(スイス)')..']'..p.getCatForId( 'LIR' ) --no https as of 9/2019
end
 
function p.lnbLink( id, label )
--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(label or 'ラトビア')..']'..p.getCatForId( 'LNB' )
end
 
function p.leonoreLink( id, label )
--P640's format regex: LH//\d{1,4}/\d{1,3}|19800035/\d{1,4}/\d{1,5}(Bis|Ter)?|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( '^19800035C/%d%d?%d?%d?0/%d%d?%d?%d?%d?Bis$' ) andthen --IDs from ? C/0/1 to C/0/84 (84 famous legionaries)
not id:match( '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?Ter$' ) and --IDs from ?
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(label or 'Léonore(フランス)')..']'..p.getCatForId( 'Léonore' ) --no https as of 9/2019
end
 
function p.mathsnLinkmaLink( id, label )
--P4955P6366's format regex: [1-9]\d{4,69} (e.g. 1752701498221862)
if not id:match( '^[1-9]%d%d%d%d%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://mathscinetacademic.amsmicrosoft.orgcom/mathscinetv2/MRAuthorIDdetail/'..id..' '..id(label or 'マイクロソフト・アカデミック')..']'..p.getCatForId( 'MATHSNMA' )
end
 
function p.mbaLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/artist/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBA (識別子)|MusicBrainz]] [' .. url .. ' アーティスト]' .. cat
end
end
 
function p.mbareaLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/area/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz地域' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBAREA (識別子)|MusicBrainz]] [' .. url .. ' 地域]' .. cat
end
end
 
function p.mbiLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/instrument/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz楽器' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBI (識別子)|MusicBrainz]] [' .. url .. ' 楽器]' .. cat
end
end
 
function p.mblLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/label/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainzレーベル' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBL (識別子)|MusicBrainz]] [' .. url .. ' レーベル]' .. cat
end
end
 
function p.mbpLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/place/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz場所' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBP (識別子)|MusicBrainz]] [' .. url .. ' 場所]' .. cat
end
end
 
function p.mbrgLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/release-group/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainzリリース・グループ' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBRG (識別子)|MusicBrainz]] [' .. url .. ' リリース・グループ]' .. cat
end
end
 
function p.mbsLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/series/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainzシリーズ' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBS (識別子)|MusicBrainz]] [' .. url .. ' シリーズ]' .. cat
end
end
 
function p.mbwLink( id, label )
--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
return false
end
returnlocal url = '[https://musicbrainz.org/work/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz作品' ) --special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBW (識別子)|MusicBrainz]] [' .. url .. ' 作品]' .. cat
end
end
 
function p.mgpLink( id, label )
--P549's format regex: \d{1,6} (e.g. 123456)
if not id:match( '^%d%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://wwwgenealogy.mathgenealogymath.orgndsu.nodak.edu/id.php?id='..id..' '..id(label or 'Mathematics Genealogy Project')..']'..p.getCatForId( 'MGP' )
end
 
function p.naraLink( id, label )
--P1225's format regex: ^([1-9]\d{0,8})$ (e.g. 123456789)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://catalog.archives.gov/id/'..id..' '..id(label or '公文書館(アメリカ)')..']'..p.getCatForId( 'NARA' )
end
 
function p.nclLink( id, label )
--P1048's format regex: \d+ (e.g. 1081436)
if not id:match( '^%d+$' ) then
return false
end
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence='..id..'&CON_LNG=ENG '..id(label or '台湾')..']'..p.getCatForId( 'NCL' ) --no https as of 9/2019
end
 
function p.ndlLink( id, label )
--P349's format regex: 0?\d{8} (e.g. 012345678)
if not id:match( '^0?%d%d%d%d%d%d%d%d$' ) then
return false
end
return '[https://id.ndl.go.jp/auth/ndlna/'..id..' '..id(label or '日本')..']'..p.getCatForId( 'NDL' )
end
 
function p.ngaLinkngvLink( id, label )
--P3563's format rgex: 11[0-6]-\d+(\.\d+)? (e.g. 114-7721.2)
if not id:match('^11[0-6]%-%d+%.?%d*$') then
return false
end
return '[https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id='..id..' '..id..']'..p.getCatForId( 'NGA' )
end
 
function p.ngvLink( id )
--P2041's format regex: \d+ (e.g. 12354)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.ngv.vic.gov.au/explore/collection/artist/'..id..'/ '..id(label or 'ヴィクトリア')..']'..p.getCatForId( 'NGV' )
end
 
function p.nkcLink( id, label )
--P691's format regex: [a-z]{2,4}[0-9]{2,14} (e.g. abcd12345678901234)
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
return false
end
return '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica='..id..'&CON_LNG=ENG '..id(label or 'チェコ')..']'..p.getCatForId( 'NKC' )
end
 
function p.nlaLink( id, label )
--P409's format regex: [1-9][0-9]{0,11} (e.g. 123456789012)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://nla.gov.au/anbd.aut-an'..id..' '..id(label or 'オーストラリア')..']'..p.getCatForId( 'NLA' )
end
 
function p.nlgLink( id, label )
--P3348's format regex: [1-9]\d* (e.g. 1)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://data.nlg.gr/resource/authority/record'..id..' '..id(label or 'ギリシャ')..']'..p.getCatForId( 'NLG' )
end
 
function p.nliLink( id, label )
--P949'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 '[http://uli.nli.org.il/F/?func=direct&doc_number='..id..'&local_base=nlx10'..' '..id(label or 'イスラエル')..']'..p.getCatForId( 'NLI' )
end
 
function p.nlkLink( id, label )
--P5034's format regex: KA.(19KAB|20KAC|KSH)([0-9]{4}|[0-9]{4}[a-zA-Z]).[0-9]{74,6} (e.g. KAC201501465)
if not id:match( '^KA.19.......KAB%d%d%d%d%a?%d%d%d%d%d?%d?$' ) and
not id:match( '^KA.20.......KAC%d%d%d%d%a?%d%d%d%d%d?%d?$' ) thenand
not id:match( '^KSH%d%d%d%d%a?%d%d%d%d%d?%d?$' ) then
return false
end
return '[https://librarianlod.nl.go.kr/LIresource/contents/L20101000000.do?id='..id..' '..id(label or '韓国')..']'..p.getCatForId( 'NLK' )
end
 
function p.nlpLink( id, label )
--P1695's format regex: 9810[0-9]\d* or A[0-9]{7}[0-9X] (e.g. 9810123456789012345 or A10414836)
if not id:match( '^9810%d+$' ) and
609 ⟶ 581行目:
return false
end
return '[https://tools.wmflabs.org/wikidata-externalid-url?p=1695&id='..id..' '..id(label or 'ポーランド')..']'..p.getCatForId( 'NLP' )
end
 
function p.nlrLink( id, label )
--P1003'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 '[http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number='..id..' '..id(label or 'ルーマニア')..']'..p.getCatForId( 'NLR' )
end
 
function p.nskLink( id, label )
--P1375'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 '[http://katalog.nsk.hr/F/?func=direct&doc_number='..id..'&local_base=nsk10 '..id(label or 'クロアチア')..']'..p.getCatForId( 'NSK' ) --no https as of 9/2019
end
 
function p.ntaLink( id, label )
--P1006's format regex: \d{8}[\dX] (e.g. 12345678X)
if not id:match( '^%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
return '[http://data.bibliotheken.nl/id/thes/p'..id..' '..id(label or 'オランダ')..']'..p.getCatForId( 'NTA' )
end
 
function p.orcidLink( id, label )
id = p.validateIsni( id ) --e.g. 0000-0002-7398-5483
if not id then
642 ⟶ 614行目:
end
id = id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
return '[https://orcid.org/'..id..' '..id(label or 'ORCID')..']'..p.getCatForId( 'ORCID' )
end
 
function p.picLink( id, label )
--P2750's format regex: [1-9]\d* (e.g. 1)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://pic.nypl.org/constituents/'..id..' '..id(label or 'Photographers\' Identities')..']'..p.getCatForId( 'PIC' )
end
 
function p.plwabnLink( id, label )
--P7293's format regex: 981[0-9]{8}05606 (e.g. 9810696457305606)
if not id:match( '^981%d%d%d%d%d%d%d%d05606*$' ) then
return false
end
return '[http://mak.bn.org.pl/cgi-bin/KHW/makwww.exe?BM=1&NU=1&IM=4&WI='..id..' '..id(label or 'ポーランド')..']'..p.getCatForId( 'PLWABN' )
end
 
function p.publonsLink( id, label )
--P3829's format regex: \d+ (e.g. 654601)
if not id:match( '^%d+$' ) then
return false
end
return '[https://publons.com/author/'..id..'/ '..id(label or 'Publons(研究者)')..']'..p.getCatForId( 'Publons' )
end
 
function p.ridLink( id, label )
--P1053's format regex: [A-Z]{1,3}-\d{4}-(19|20)\d\d (e.g. AAS-5150-2020)
if not id:match( '^[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d$' ) and
675 ⟶ 647行目:
return false
end
return '[https://www.researcherid.com/rid/'..id..' '..id(label or 'ResearcherID')..']'..p.getCatForId( 'RID' )
end
 
function p.reroLink( id )
--P3065's format regex: 0[1-2]-[A-Z0-9]{1,10} (e.g. 02-A012345678)
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
return false
end
return '[http://data.rero.ch/'..id..' '..id..']'..p.getCatForId( 'RERO' )
end
 
function p.rismLink( id, label )
--P5504's format regex: (pe|ks)?\[1-9]d* (e.g. pe30006410)
if not id:match( '^pe[1-9]%d*$' ) and --99% start with 'pe'
693 ⟶ 657行目:
return false
end
return '[https://opac.rism.info/search?id='..id..' '..id(label or 'RISM(フランス)')..']'..p.getCatForId( 'RISM' )
end
 
function p.rkdartistsLinkreroLink( id, label )
--P3065's format regex: 0[1-2]-[A-Z0-9]{1,10} (e.g. 02-A012345678)
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
return false
end
return '[http://data.rero.ch/'..id..' '..(label or 'RERO(スイス)')..']'..p.getCatForId( 'RERO' )
end
 
function p.rkdartistsLink( id, label )
--P650's format regex: [1-9]\d{0,5} (e.g. 123456)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://rkd.nl/en/explore/artists/'..id..' '..id(label or 'RKDアーティスト(オランダ)')..']'..p.getCatForId( 'RKDartists' )
end
 
function p.rkdidLink( id, label )
--P350's format regex: [1-9]\d{0,5} (e.g. 123456)
if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://rkd.nl/nl/explore/images/'..id..' '..id(label or 'RKD ID(オランダ)')..']'..p.getCatForId( 'RKDID' )
end
 
function p.rslLink( id, label )
--P947's format regex: \d{1,9} (e.g. 123456789)
if not id:match( '^%d%d?%d?%d?%d?%d?%d?%d?%d?$' ) then
return false
end
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request='..id..'&CON_LNG=ENG '..id(label or 'ロシア')..']'..p.getCatForId( 'RSL' ) --no https as of 9/2019
end
 
function p.scopusLinkselibrLink( id, label )
--P1153's format regex: [1-9]\d{9,10} (e.g. 35247902700)
if not id:match( '^[1-9]%d%d%d%d%d%d%d%d%d%d?$' ) then
return false
end
return '[https://www.scopus.com/authid/detail.uri?authorId='..id..' '..id..']'..p.getCatForId( 'Scopus' )
end
 
function p.selibrLink( id )
--P906's format regex: [1-9]\d{4,5} (e.g. 123456)
if not id:match( '^[1-9]%d%d%d%d%d?$' ) then
return false
end
return '[https://libris.kb.se/auth/'..id..' '..id(label or 'スウェーデン')..']'..p.getCatForId( 'SELIBR' )
end
 
function p.sikartLink( id, label )
--P781's format regex: \d{7,9} (e.g. 123456789)
if not id:match( '^%d%d%d%d%d%d%d%d?%d?$' ) then
return false
end
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id='..id..'&lng=en '..id(label or 'SIKART(スイス)')..']'..p.getCatForId( 'SIKART' ) --no https as of 9/2019
end
 
function p.snacLink( id, label )
--P3430's format regex: \d*[A-Za-z][0-9A-Za-z]* (e.g. A)
if not id:match( '^%d*[A-Za-z][0-9A-Za-z]*$' ) then
return false
end
return '[https://snaccooperative.org/ark:/99166/'..id..' '..id(label or 'Social Networks and Archival Context')..']'..p.getCatForId( 'SNAC-ID' )
end
 
function p.sudocLink( id, label )
--P269's format regex: (\d{8}[\dX]|) (e.g. 026927608)
if not id:match( '^%d%d%d%d%d%d%d%d[%dxX]$' ) then --legacy: allow lowercase 'x'
return false
end
return '[https://www.idref.fr/'..id..' '..id(label or 'SUDOC(フランス)')..']'..p.getCatForId( 'SUDOC' )
end
 
function p.ta98Links2authoridLink( id, label )
--P4012's format regex: [1-9]\d* (e.g. 1796130)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.semanticscholar.org/author/'..id..' '..(label or 'Semantic Scholar')..']'..p.getCatForId( 'Semantic Scholar著者' ) --special cat name
end
 
function p.ta98Link( id, label )
--P1323's format regex: A\d{2}\.\d\.\d{2}\.\d{3}[FM]? (e.g. A12.3.45.678)
if not id:match( '^A%d%d%.%d%.%d%d%.%d%d%d[FM]?$' ) then
return false
end
local longurl =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..' '..(label or 'Terminologia Anatomica')..']'..p.getCatForId( 'TA98' )
return longurl..id..' '..id..']'..p.getCatForId( 'TA98' )
end
 
function p.tdviaLink( id, label )
--P7314's format regex: [0-9aa-z/-]+] (e.g. barkan-omer-lutfi)
if not id:match( '^[%d%la-z/-]+$' ) then
return false
end
return '[https://islamansiklopedisi.org.tr/'..id..' '..id(label or 'イスラーム百科事典(トルコ)')..']'..p.getCatForId( 'TDVİA' )
end
 
function p.tepapaLink( id, label )
--P3544's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://collections.tepapa.govt.nz/agent/'..id..' '..id(label or 'Te Papa(ニュージーランド)')..']'..p.getCatForId( 'TePapa' )
end
 
function p.tlsLink( id, label )
local id2id = id:gsub(' +', '_')
--P1362's format regex: \p{Lu}[\p{L}\d_',\.\-\(\)\*\/–&]{3,89} (e.g. Abcd)
--Mediawiki page title partial URL so consider validation with mw.title or "[^#<>%[%] {|}]"
local class = "[%w_',%.%-%(%)%*%/–&]"
local idlen = #mw.ustring.len (id)
if idlen < 4 or idlen > 90 then
return false
end
local regex = '^%u'..string.rep(class, idlen - 1)..'$'
if not mw.ustring.match( id2id, regex ) then
return false
end
return '[http://tls.theaterwissenschaft.ch/wiki/'..id2id..' '..id(label or 'Theaterlexikon(スイス)')..']'..p.getCatForId( 'TLS' ) --no https as of 9/2019
end
 
function p.troveLink( id, label )
--P1315's format regex: [1-9]\d{5,7} (e.g. 12345678)
if not id:match( '^[1-9]%d%d%d%d%d%d?%d?$' ) then
return false
end
return '[https://trove.nla.gov.au/people/'..id..' '..id(label or 'Trove(オーストラリア)')..']'..p.getCatForId( 'Trove' )
end
 
function p.ukparlLink( id, label )
--P6213's format regex: [a-zA-Z\d]{8} (e.g. AQUupyiR)
if not id:match( '^[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]$' ) then
return false
end
return '[https://id.parliament.uk/'..id..' '..id(label or '英議会')..']'..p.getCatForId( 'UKPARL' )
end
 
function p.ulanLink( id, label )
--P245's format regex: 500\d{6} (e.g. 500123456)
if not id:match( '^500%d%d%d%d%d%d$' ) then
return false
end
return '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid='..id..' '..id(label or 'アーティスト名(ゲティ)')..']'..p.getCatForId( 'ULAN' )
end
 
function p.uscgLink( id )
--P3723's format regex: [1-7]-\d{1,5}(.[1-9])? (e.g. 6-0695)
if not id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) and
not id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' ) then
return false
end
return id..p.getCatForId( 'USCG' )
end
 
function p.uscongressLink( id, label )
--P1157's format regex: [A-Z]00[01]\d{3} (e.g. A000123)
if not id:match( '^[A-Z]00[01]%d%d%d$' ) then
return false
end
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index='..id..' '..id(label or '米議会')..']'..p.getCatForId( 'USCongress' ) --no https as of 9/2019
end
 
function p.vcbaLink( id, label )
--P8034's format regex: \d{3}\/[1-9]\d{0,5} (e.g. 494/9793)
if not id:match( '^%d%d%d\/[1-9]%d?%d?%d?%d?%d?$' ) then
return false
end
local id2id = id:gsub('\/', '_')
return '[https://opac.vatlib.it/auth/detail/'..id2id..' '..id(label or 'バチカン')..']'..p.getCatForId( 'VcBA' )
end
 
function p.viafLink( id, label )
--P214's format regex: [1-9]\d(\d{0,7}|\d{17,20}) (e.g. 123456789, 1234567890123456789012)
if not id:match( '^[1-9]%d%d?%d?%d?%d?%d?%d?%d?$' ) and
857 ⟶ 819行目:
return false
end
-- If the "VIAF" entry at [[:m:Interwiki map]] would resolve to "https://viaf.org/viaf/$1" (rather than "http://viaf.org/viaf/$1", as it currently still does), the code below could change from '[https://viaf.org/viaf/'..id..' '..id..']' to '[[:VIAF:'..id..'|'..id..']]'.
-- then the code below could change fromreturn '[https://viaf.org/viaf/'..id..' '..id..']'(label toor '[[:VIAF:'..id)..'|]'..id.p.getCatForId( ']]VIAF'. )
return '[https://viaf.org/viaf/'..id..' '..id..']'..p.getCatForId( 'VIAF' )
end
 
function p.worldcatidLink( id )
--P7859's format regex: viaf-\d+|lccn-n[a-z]?[0-9\-]+|n[cps]-.+ (e.g. viaf-100181709, lccn-n78-95332, np-verbeck,%20william$1861)
if not id:match( '^viaf%-%d+$' ) and
not id:match( '^lccn%-n[a-z]?[0-9%-]+$' ) and
not id:match( '^n[cps]%-.+$' ) then
return false
end
return '[https://www.worldcat.org/identities/'..mw.uri.encode(id, 'PATH')..'/ '..id..']'..p.getCatForId( 'WORLDCATID' )
end
 
function p.zbmathLink( id )
--P1556's format regex: [a-z][a-z\-]*(\.[a-z][a-z\-]*)?(\.[0-9]*)? (e.g. turing.alan-m)
local ps = {'%l[%l%-]*', '%.%l[%l%-]*', '%.%d*'}
if not id:match( '^'..ps[1]..'$' ) and -- prefix with no capture options
not id:match( '^'..ps[1]..ps[2]..'$' ) and -- prefix with first capture option
not id:match( '^'..ps[1]..ps[3]..'$' ) and -- prefix with second capture option
not id:match( '^'..ps[1]..ps[2]..ps[3]..'$' ) then -- prefix and both capture options
return false
end
return '[https://zbmath.org/authors/?q=ai:'..id..' '..id..']'..p.getCatForId( 'ZBMATH' )
end
 
888 ⟶ 827行目:
function p.append(str, c, length)
while str:len() < length do
str = c .. str
end
return str
903 ⟶ 842行目:
local result = (12 - remainder) % 11
if result == 10 then
return '"X'"
end
return tostring( result )
955 ⟶ 894行目:
local wikiTable = '{| class="wikitable sortable"\n'..
'! rowspan=2 | 識別子\n'..
'! rowspan=2 | 識別子表示名グループ\n'..
'! rowspan=2 | 表示名\n'..
'! rowspan=2; data-sort-type=number | ウィキデータのプロパティ\n'..
'! colspan=4 | 追跡カテゴリのページ数\n'..
964 ⟶ 904行目:
'! [[:Category:誤った典拠管理情報が指定されている記事|'..'誤った識別子]]\n'..
'|-\n'
local lang = mw.getContentLanguage()
local a, u, m, f, P = 0, 0, 0, 0, 0 --cumulative sums
for _, conf in pairs( p.conf ) do
local param, pid, section = conf[1], conf[2], conf[4]
local category = conf.category or param
local appearsAs
if conf.prefixparam == "WORLDCATID" then
-- WorldCat is special
appearsAs = "[https://www.worldcat.org/identities/lccn-n78039510 WorldCat]"
elseif conf.prefix then
appearsAs = conf.prefix
else
appearsAs = conf[3](conf[5])
end
local link = conf.link or param .. ' (識別子)'
local displayname = conf.displayname or param --日本語版独自
local category = conf.category or param
local args = { id = 'f', pid }
991 ⟶ 930行目:
local miscCount = lang:formatNum( mw.site.stats.pagesInCategory(miscCat, 'pages') )
local faultyCount = lang:formatNum( mw.site.stats.pagesInCategory(faultyCat, 'pages') )
--calcs
P = P + 1 --property count
a = a + lang:parseFormattedNumber(articleCount)
u = u + lang:parseFormattedNumber(userCount)
m = m + lang:parseFormattedNumber(miscCount)
f = f + lang:parseFormattedNumber(faultyCount)
--concat
wikiTable = wikiTable..'\n'..
'|-\n'..
'||[['..link..'|'..param..']]'..
'||[['..link..'|'..displayname..']]'section..
'||'..appearsAs..
'||data-sort-value='..pid..'|'..wpl..
'||style="text-align: right;"|[[:Category:'..articleCat..'|'..articleCount..']]'..
1,014 ⟶ 949行目:
local articleCat = w..'識別子が指定されている記事'
local articleCount = lang:formatNum( mw.site.stats.pagesInCategory(articleCat, 'pages') )
local appearsAs
if w == '"WorldCat-LCCN'" then
appearsAs = "[https://www.worldcat.org/identities/lccn-n79-113947 WorldCat(アメリカ議会図書館経由)]"
appearsAs = 'WorldCat-LCCN'
else
appearsAs = "[https://www.worldcat.org/identities/containsVIAFID/12345789 WorldCat(VIAF経由)]"
appearsAs = 'WorldCat-VIAF'
end
a = a + lang:parseFormattedNumber(articleCount)
wikiTable = wikiTable..'\n'..
'|-\n'..
'||'..'—'..
'||全般'..w..
'||'..appearsAs..
'||data-sort-value='..w..'|'..'—'..
'||style="text-align: right;"|[[:Category:'..articleCat..'|'..articleCount..']]'..
1,032 ⟶ 967行目:
end
return require("Module:Suppress categories").main(wikiTable)..'\n|}'
--append sums
wikiTable = wikiTable..'\n'..
'|-\n'..
'! style="text-align: right;" colspan=2|合計'..
'||style="text-align: right;"|'..lang:formatNum(P)..
'||style="text-align: right;"|'..lang:formatNum(a)..
'||style="text-align: right;"|'..lang:formatNum(u)..
'||style="text-align: right;"|'..lang:formatNum(m)..
'||style="text-align: right;"|'..lang:formatNum(f)
return require('Module:Suppress categories').main(wikiTable)..'\n|}'
end
 
1,049 ⟶ 974行目:
--[[==========================================================================]]
 
-- PleaseIf usea "<parameter>specific "(identifier) redirect" redirectsexists for an identifier, please route through this particular redirect rather than linking directly to the target page. This reduces clutter in "What links here" and improves reverse lookup of articles where a manifestation of this particular identifier is used.
-- This reduces clutter in "What links here" on both the redirect and the target,
-- and improves reverse lookup of articles where a manifestation of each identifier is used.
 
 
-- p.conf table basic format: { 'parameter name', propertyId # in Wikidata, formatting/validation function, section, example ID for documentation }
-- Parameter format: { 'parameter name', propertyId # in Wikidata, formatting/validation function, section, example ID for documentation }
-- p.conf table optional named parameters:
-- Optional linknamed parameters: `link` to override the link in the documentation (defaults to "<parameter> + (identifer)"),
-- category: to override the ID in category names (defaults to "... with <parameter> identifiers"),
-- prefix: to include a prefix (usually a wikilink explaining what the identifier is) before the external link itself
p.conf = {
{ 'AAG', 3372, p.aagLink, ''"美術館と博物館", '"1'", link =' ":en:AAG (identifier)' "},
{ 'ACM-DL', 864, p.acmLink, ''"科学データベース", '"12345678901'", link='"ACM DL (識別子)' "},
{ 'ADB', 1907, p.adbLink, ''"人名辞典", '"barton-sir-edmund-toby-71'", link =' ":en:ADB (identifier)' "},
{ 'AGSA', 6804, p.agsaLink, "美術館と博物館", "3625"},
{ 'admiralty', 3562, p.admiraltyLink, '', 'D1204.1', link=':en:Admiralty (identifier)'},
{ 'AGSAautores.uy', 68042558, p.agsaLinkautoresuyLink, ''"人名辞典", '3625' "12345"},
{ 'ARLHSAWR', 29804186, p.ARLHSLinkawrLink, ''"人名辞典", 'LAT023'"PR00768b", link =' ":en:ARLHSAWR (identifier)' "},
{ 'BIBSYS', 1015, p.bibsysLink, "国立図書館", "1234567890123", link = ":en:BIBSYS (identifier)"},
{ 'autores.uy', 2558, p.autoresuyLink, '', '12345' },
{ 'AWRBildindex', 41862092, p.awrLinkbildLink, ''"美術研究組織", 'PR00768b'"1", link =' ":en:AWRBildindex (identifier)' "},
{ 'BIBSYSBNC', 10151890, p.bibsysLinkbncLink, ''"国立図書館", '1234567890123'"123456789", link =' ":en:BIBSYSBNC (identifier)' "},
{ 'BNE', 950, p.bneLink, "国立図書館", "XX1234567"},
{ 'Bildindex', 2092, p.bildLink, '', '1', link=':en:Bildindex (identifier)' },
{ 'BNCBNF', 1890268, p.bncLinkbnfLink, ''"国立図書館", '"123456789', link=':en:BNC (identifier)' "},
{ 'BNEBotanist', 950428, p.bneLinkbotanistLink , ''"科学データベース", 'XX1234567' "L."},
{ 'BNFBPN', 268651, p.bnfLinkbpnLink , ''"人名辞典", '123456789'"12345678", link = ":en:BPN (identifier)"},
{ 'CANTIC', 1273, p.canticLink, "国立図書館", "a12345678", link = ":en:CANTIC (identifier)"},
{ 'Botanist', 428, p.botanistLink, '', 'L.' },
{ 'BPNCINII', 651271, p.bpnLinkciniiLink, ''"科学データベース", '12345678'"DA12345678", link =':en:BPN "CiNii (identifier識別子)' "},
{ 'CWGC', 1908, p.cwgcLink, "その他", "1234567"},
{ 'CANTIC', 1273, p.canticLink, '', 'a12345678', link=':en:CANTIC (identifier)' },
{ 'CCGDAAO', 39201707, p.ccgLinkdaaoLink, ''"美術研究組織", 'A1761'"rolf-harris", link =' ":en:CCGDAAO (identifier)' "},
{ 'DBLP', 2456, p.dblpLink, "科学データベース", "123/123"},
{ 'CINII', 271, p.ciniiLink, '', 'DA12345678', link='CiNii (識別子)' },
{ 'CWGCDIB', 1908 6829, p.cwgcLinkdibLink, ''"人名辞典", '1234567'"a1234", link = ":en:DIB (identifier)"},
{ 'DAAODSI', 17072349, p.daaoLinkdsiLink, ''"美術研究組織", 'rolf-harris'"1538", link =' ":en:DAAODSI (identifier)' "},
{ 'DBLPFAST', 24562163, p.dblpLinkfastLink, ''"その他", '123/123'"1", link = ":en:FAST (identifier)"},
{ 'DIBFNZA', 68296792, p.dibLinkfnzaLink, ''"美術研究組織", '001953'"12", link =' ":en:DIBFNZA (identifier)' "},
{ 'DSIGND', 2349227, p.dsiLinkgndLink, ''"全般", '1538', link=':en:DSI (identifier)' "4079154-3"},
{ 'HDS', 902, p.hdsLink, "その他", "050123"},
{ 'DTBIO', 7902, p.dtbioLink, '', '118554700', link=':en:DTBIO (identifier)' },
{ 'EMUIAAF', 46131146, p.emuLinkiaafLink, ''"その他", '15409', link=':en:EMU (identifier)' "123"},
{ 'FASTICCU', 2163396, p.fastLinkiccuLink, ''"国立図書館", '1'"IT\\ICCU\\CFIV\\000163", link =' ":en:FASTICCU (identifier)' "}, --formerly SBN
{ 'FNZAICIA', 67921736, p.fnzaLinkiciaLink, ''"美術研究組織", '12'"1", link =' ":en:FNZAICIA (identifier)' "},
{ 'IEU', 9070, p.ieuLink, "その他", "N\\A\\NationalAcademyofArtandArchitecture", link = ":en:IEU (identifier)"},
{ 'GND', 227, p.gndLink, '', '4079154-3' },
{ 'ISNI', 213, p.isniLink, "全般", "0000-0000-6653-4145", prefix = '[[ISNI (識別子)|ISNI]]'},
{ 'Google Scholar', 1960, p.googleLink, '', 'QPdLuj8AAAAJ' },
{ 'Joconde', 347, p.jocondeLink, "美術研究組織", "12345678901", link = ":en:Joconde (identifier)"},
{ 'HDS', 902, p.hdsLink, '', '050123' },
{ 'KULTURNAV', 1248, p.kulturnavLink, "美術研究組織", "12345678-1234-1234-1234-1234567890AB", link=":en:KulturNav (identifier)"},
{ 'IAAF', 1146, p.iaafLink, '', '123' },
{ 'LCCN', 244, p.lccnLink, "国立図書館", "n78039510"},
{ 'ICCU', 396, p.iccuLink, '', 'CFIV000163', link=':en:ICCU (identifier)' }, --formerly SBN
{ 'ICIALIR', 1736886, p.iciaLinklirLink, ''"その他", '"1', link=':en:ICIA (identifier)' "},
{ 'IEULNB', 90701368, p.ieuLinklnbLink, ''"国立図書館", 'N\\A\\NationalAcademyofArtandArchitecture'"123456789", link =' ":en:IEULNB (identifier)' "},
{ 'Léonore', 640, p.leonoreLink, "その他", "LH/1/1", prefix = "[[:en:Léonore (identifier)|Léonore(フランス)]]"},
{ 'ISNI', 213, p.isniLink, '', '0000-0000-6653-4145' },
{ 'J9UMA', 81896366, p.j9uLinkmaLink, ''"その他", '987007305652505171'"123456789", link =' ":en:J9UMA (identifier)' "},
{ 'MBA', 434, p.mbaLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainz'}, --special cat name
{ 'Joconde', 347, p.jocondeLink, '', '12345678901', link=':en:Joconde (identifier)' },
{ 'KULTURNAVMBAREA', 1248982, p.kulturnavLinkmbareaLink, ''"その他", '"12345678-1234-1234-1234-1234567890AB'", displaynamecategory = 'KulturNavMusicBrainz地域' }, link=':en:KulturNav--special (identifier)'cat },name
{ 'MBI', 1330, p.mbiLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainz楽器' }, --special cat name
{ 'LCCN', 244, p.lccnLink, '', 'n78039510' },
{ 'MBL', 966, p.mblLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainzレーベル' }, --special cat name
{ 'LIR', 886, p.lirLink, '', '1' },
{ 'MBP', 1004, p.mbpLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainz場所' }, --special cat name
{ 'LNB', 1368, p.lnbLink, '', '123456789', link=':en:LNB (identifier)' },
{ 'MBRG', 436, p.mbrgLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainzリリース・グループ' }, --special cat name
{ 'Léonore', 640, p.leonoreLink, '', 'LH//1/1', link=':en:Léonore (identifier)' },
{ 'MBS', 1407, p.mbsLink, "その他", "12345678-1234-1234-1234-1234567890AB", category = 'MusicBrainzシリーズ' }, --special cat name
{ 'MATHSN', 4955, p.mathsnLink, '', '175270', link=':en:MATHSN (identifier)' },
{ 'MBAMBW', 434 435, p.mbaLinkmbwLink, ''"その他", '"12345678-1234-1234-1234-1234567890AB'", category = 'MusicBrainz作品' }, --special cat name
{ 'MGP', 549, p.mgpLink, "科学データベース", "123456"},
{ 'MBAREA', 982, p.mbareaLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz地域' }, --special cat name
{ 'NARA', 1225, p.naraLink, "その他", "12345678"},
{ 'MBI', 1330, p.mbiLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz楽器' }, --special cat name
{ 'NCL', 1048, p.nclLink, "国立図書館", "1081436"},
{ 'MBL', 966, p.mblLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainzレーベル' }, --special cat name
{ 'NDL', 349, p.ndlLink, "国立図書館", "012345678"},
{ 'MBP', 1004, p.mbpLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz場所' }, --special cat name
{ 'NGV', 2041, p.ngvLink, "美術館と博物館", "12354"},
{ 'MBRG', 436, p.mbrgLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainzリリース・グループ' }, --special cat name
{ 'NKC', 691, p.nkcLink, "国立図書館", "abcd12345678901234", link = ":en:NKC (identifier)"},
{ 'MBS', 1407, p.mbsLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainzシリーズ' }, --special cat name
{ 'NLA', 409, p.nlaLink, "国立図書館", "123456789012"},
{ 'MBW', 435, p.mbwLink, '', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz作品' }, --special cat name
{ 'MGPNLG', 5493348, p.mgpLinknlgLink, ''"国立図書館", '123456'"12345678", link = ":en:NLG (identifier)"},
{ 'NARANLI', 1225949, p.naraLinknliLink, ''"国立図書館", '12345678' "123456789"},
{ 'NCLNLK', 10485034, p.nclLinknlkLink, ''"国立図書館", '1081436' "KAB197000000"},
{ 'NDLNLP', 3491695, p.ndlLinknlpLink, ''"国立図書館", '012345678' "9810123456789012345"},
{ 'NLR', 1003, p.nlrLink, "国立図書館", "123456789"},
{ 'NGA', 3563, p.ngaLink, '', '114-5592', link=':en:NGA (identifier)' },
{ 'NSK', 1375, p.nskLink, "国立図書館", "123456789", link = ":en:NSK (identifier)"},
{ 'NGV', 2041, p.ngvLink, '', '12354' },
{ 'NKCNTA', 6911006, p.nkcLinkntaLink, ''"国立図書館", 'abcd12345678901234'"12345678X", link =' ":en:NKCNTA (identifier)' "},
{ 'ORCID', 496, p.orcidLink, "全般", "0000-0002-7398-5483", prefix = '[[ORCID (識別子)|ORCID]]'},
{ 'NLA', 409, p.nlaLink, '', '123456789012' },
{ 'NLGPIC', 33482750, p.nlgLinkpicLink, ''"美術研究組織", '12345678'"1", link =' ":en:NLGPIC (identifier)' "},
{ 'NLIPLWABN', 949 7293, p.nliLinkplwabnLink, ''"国立図書館", '123456789' "9812345678905606"},
{ 'Publons', 3829, p.publonsLink, "科学データベース", "2776255", link = ":en:Publons (identifier)"},
{ 'NLK', 5034, p.nlkLink, '', 'KAB197000000' },
{ 'NLPRID', 16951053, p.nlpLinkridLink, ''"科学データベース", '9810123456789012345' "A-1234-1934"},
{ 'RISM', 5504, p.rismLink, "その他", "pe1", prefix = '[[:en:RISM (identifier)|RISM(フランス)]]'},
{ 'NLR', 1003, p.nlrLink, '', '123456789' },
{ 'NSKRERO', 13753065, p.nskLinkreroLink, ''"その他", '123456789'"02-A012345678", linkprefix = '[[:en:NSKRERO (identifier)|RERO(スイス)]]' },
{ 'RKDartists', 650, p.rkdartistsLink, "美術研究組織", "123456"},
{ 'NTA', 1006, p.ntaLink, '', '12345678X', link=':en:NTA (identifier)' },
{ 'ORCIDRKDID', 496350, p.orcidLinkrkdidLink, ''"美術研究組織", '0000-0002-7398-5483' "123456"},
{ 'PICRSL', 2750947, p.picLinkrslLink, ''"国立図書館", '1', link=':en:PIC (identifier)' "123456789"},
{ 'SELIBR', 906, p.selibrLink, "国立図書館", "123456", link = ":en:SELIBR (identifier)"},
{ 'PLWABN', 7293, p.plwabnLink, '', '9812345678905606' },
{ 'PublonsSIKART', 3829781, p.publonsLinksikartLink, ''"美術研究組織", '2776255123456789', link =' ":en:PublonsSIKART (identifier)' "},
{ 'SNAC-ID', 3430, p.snacLink, "その他", "A"},
{ 'RERO', 3065, p.reroLink, '', '02-A012345678', link=':en:RERO (identifier)' },
{ 'SUDOC', 269, p.sudocLink, "その他", "026927608", prefix = '[[SUDOC (識別子)|SUDOC(フランス)]]'},
{ 'RID', 1053, p.ridLink, '', 'A-1234-1934', displayname='ResearcherID' },
{ 'RISMS2AuthorId', 55044012, p.rismLinks2authoridLink, ''"科学データベース", "1796130", category = 'pe1Semantic Scholar著者', link =' ":en:RISMS2AuthorId (identifier)'" }, --special cat name
{ 'TA98', 1323, p.ta98Link, "科学データベース", "A12.3.45.678", link = ":en:TA98 (identifier)"},
{ 'RKDartists', 650, p.rkdartistsLink, '', '123456', displayname='RKD' },
{ 'TDVİA', 7314, p.tdviaLink, "その他", "asim-b-behdele", link = ":en:TDVİA (identifier)"},
{ 'RKDID', 350, p.rkdidLink, '', '123456', displayname='RKDimages ID' },
{ 'RSLTePapa', 9473544, p.rslLinktepapaLink, ''"美術館と博物館", '123456789' "1"},
{ 'ScopusTLS', 1153 1362, p.scopusLinktlsLink, ''"その他", '7005487412'"Abcd", link =' ":en:ScopusTLS (identifier)' "},
{ 'SELIBRTrove', 9061315, p.selibrLinktroveLink, ''"その他", '123456'"12345678", linkprefix = '[[:en:SELIBRTrove (identifier)|Trove(オーストラリア)]]' }, --formerly NLA-person
{ 'UKPARL', 6213, p.ukparlLink, "その他", "AQUupyiR"},
{ 'SIKART', 781, p.sikartLink, '', '123456789', link=':en:SIKART (identifier)' },
{ 'ULAN', 245, p.ulanLink, "美術研究組織", "500123456", link = ":en:ULAN (identifier)"},
{ 'SNAC-ID', 3430, p.snacLink, '', 'A', displayname='SNAC' },
{ 'USCongress', 1157, p.uscongressLink, "その他", "A000123", link = ":en:US Congress (identifier)"},
{ 'SUDOC', 269, p.sudocLink, '', '026927608' },
{ 'VcBA', 8034, p.vcbaLink, "国立図書館", "494/9793"},
{ 'TA98', 1323, p.ta98Link, '', 'A12.3.45.678', link=':en:TA98 (identifier)' },
{ 'TDVİAVIAF', 7314214, p.tdviaLinkviafLink, ''"全般", 'asim-b-behdele'"123456789", linkprefix =':en:TDVİA "[[VIAF (identifier識別子)' |VIAF]]"},
{ 'WORLDCATID', 7859, nil, "全般", nil, link = "WorldCat Identities (識別子)"},
{ 'TePapa', 3544, p.tepapaLink, '', '1' },
{ 'TLS', 1362, p.tlsLink, '', 'Abcd', link=':en:TLS (identifier)' },
{ 'Trove', 1315, p.troveLink, '', '12345678', link=':en:Trove (identifier)' }, --formerly NLA-person
{ 'UKPARL', 6213, p.ukparlLink, '', 'AQUupyiR', displayname='英議会' },
{ 'ULAN', 245, p.ulanLink, '', '500123456', link=':en:ULAN (identifier)' },
{ 'USCG', 3723, p.uscgLink, '', '6-0695', link=':en:USCG (identifier)' },
{ 'USCongress', 1157, p.uscongressLink, '', 'A000123', link=':en:US Congress (identifier)', displayname='米議会' },
{ 'VcBA', 8034, p.vcbaLink, '', '494/9793' },
{ 'VIAF', 214, p.viafLink, '', '123456789' },
{ 'WORLDCATID', 7859, p.worldcatidLink, '', 'lccn-n78-95332', link='WorldCat Identities (識別子)', displayname='WorldCat Identities' },
{ 'ZBMATH', 1556, p.zbmathLink, '', 'turing.alan-m', link=':en:ZBMATH (identifier)' },
}
 
1,171 ⟶ 1,084行目:
}
 
-- Deprecated aliases to p.conf; tracked in [[Category:ArticlesWikipedia articles with deprecated authority control identifiers]]
-- Format: { 'deprecated parameter name', 'replacement parameter name in p.conf' }
p.deprecated = {
1,187 ⟶ 1,100行目:
 
function p.authorityControl( frame )
local resolveEntity = require( '"Module:ResolveEntityId'" )
local parentArgs = frame:getParent().args --WD IDs added here later
local iParentArgs = 0 --count original/manual parent args only later
local elements = {} --create/insert rows later
local worldcatCat = ''
local elementsCat = ''
local multipleIdCat = ''
local suppressedIdCat = ''
local suppressedIdCatArts = ''
local deprecatedIdCat = ''
local differentOnWDCat = ''
local sameOnWDCat = ''
local stateCat = ''
--redirectRedirect aliases to proper parameter names
for _, a in pairs( p.aliases ) do
local alias, param = a[1], a[2]
1,209 ⟶ 1,118行目:
end
--redirectRedirect deprecated parameters to proper parameter names, and assign tracking cat
for _, d in pairs( p.deprecated ) do
local dep, param = d[1], d[2]
1,220 ⟶ 1,129行目:
end
--useUse QID= parameter for testing/example purposes only
local itemId = nil
if namespace ~= 0 then
1,234 ⟶ 1,143行目:
--Wikidata fallback if available
if itemId then
local suppressedIdCount = 0
local iMatches = 0
for _, params in ipairs( p.conf ) do
1,243 ⟶ 1,151行目:
if wikidataIds[1] then
if val == '' and (namespace == 0 or testcases) then
suppressedIdCount = suppressedIdCount + 1
suppressedIdCat = '[[Category:抑制された典拠管理識別子がある記事|'..params[1]..']]'
else
1,265 ⟶ 1,172行目:
if iMatches > 0 and iMatches == iParentArgs then
sameOnWDCat = '[[Category:ウィキデータと同じ典拠管理識別子をパラメータで指定しているページ]]'
end
if parentArgs['arts'] == 'arts' and suppressedIdCount > 0 then
if namespace == 0 or testcases then
local s = 's'
if suppressedIdCount == 1 then s = '' end
--local sCat = 'ACArt with '..suppressedIdCount..' suppressed element'..s
--suppressedIdCatArts = addCat(sCat)
end
end
end
--Configured rows
--configure rows
local rct = 0
local sectionOrder = {"全般","国立図書館","美術館と博物館",
--don't show NLI if J9U is present, since they both go to the National Library of Israel
"美術研究組織","人名辞典","科学データベース",
--and the library has deprecated NLI IDs in favor of J9U IDs
"その他"}
if parentArgs.J9U or parentArgs.j9u then
local sections = {
parentArgs.NLI = ''
parentArgs.nli["全般"] = ''{},
["国立図書館"] = {},
end
["美術館と博物館"] = {},
--don't show NLP if PLWABN is present, since they both go to the National Library of Poland
["美術研究組織"] = {},
--and the library has deprecated NLP IDs in favor of PLWABN IDs
["人名辞典"] = {},
["科学データベース"] = {},
["その他"] = {}
}
-- Don't show NLP if PLWABN is present, since they both go to the National Library of Poland
-- and the library has deprecated NLP IDs in favor of PLWABN IDs
if parentArgs.PLWABN or parentArgs.plwabn then
parentArgs.NLP = ''
1,295 ⟶ 1,199行目:
if val and val ~= '' and type(params[3]) == 'function' then
table.insert( tval, val )
if params.prefix then
table.insert( tlinks, params[3]( val, '"1'" ) )
else
table.insert( tlinks, params[3]( val ) )
1,319 ⟶ 1,223行目:
--assemble
if tval[1] then
local elementLink =table.insert( 'sections[params['.4]], p.createRow(params.link or params[1]..', tval, nil, tlinks, true, (識別子)')..'|'..(params.displayname orcategory, params[1].prefix)..']]: ')
table.insert( elements, p.createRow( params[1], elementLink, tval, nil, tlinks, true, params.category, params.prefix ) )
rct = rct + 1
if tval[2] then
1,328 ⟶ 1,231行目:
end
--WorldCat-VIAF & WorldCat-LCCN
local worldcatId = parentArgs['worldcatid'] or parentArgs['WORLDCATID']
if worldcatId =and worldcatId ~= nil'' then --if WORLDCATID absentpresent but& unsuppressed
table.insert( sections["全般"], p.createRow( 'WORLDCATID', worldcatId, '[https://www.worldcat.org/identities/'..mw.uri.encode(worldcatId, 'PATH')..' WorldCat]', nil, false ) ) --Validation?
worldcatCat = p.getCatForId( 'WORLDCATID' )
rct = rct + 1
elseif worldcatId == nil then --if WORLDCATID absent but unsuppressed
local viafId = parentArgs['viaf'] or parentArgs['VIAF']
local lccnId = parentArgs['lccn'] or parentArgs['LCCN']
if viafId and viafId ~= '' and p.viafLink( viafId ) then --VIAF must be present, unsuppressed, & validated
table.insert( elementssections["全般"], p.createRow( 'VIAF', '[[WorldCat Identities (識別子)|WorldCat Identities]](VIAF経由):', viafId, '[https://www.worldcat.org/identities/containsVIAFID/'..viafId..' '..viafId..'WorldCat(VIAF経由)]', nil, false ) )
if namespace == 0 then
worldcatCat = '[[Category:WorldCat-VIAF識別子が指定されている記事]]'
end
rct = rct + 1
elseif lccnId and lccnId ~= '' and p.lccnLink( lccnId ) then --LCCN must be present, unsuppressed, & validated
local lccnParts = p.splitLccn( lccnId )
if lccnParts and lccnParts[1] ~= 'sh' then
local lccnIdFmtd = lccnParts[1]..lccnParts[2]..'-'..lccnParts[3]
table.insert( elementssections["全般"], p.createRow( 'LCCN', '[[WorldCat Identities (識別子)|WorldCat Identities]](LCCN経由):', lccnId, '[https://www.worldcat.org/identities/lccn-'..lccnIdFmtd..' '..lccnIdFmtd..'WorldCat(アメリカ国会図書館経由)]', nil, false ) )
if namespace == 0 then
worldcatCat = '[[Category:WorldCat-LCCN識別子が指定されている記事]]'
end
end
rct = rct + 1
end
elseif worldcatId == '' then --if WORLDCATID suppressed
suppressedIdCat = '[[Category:抑制された典拠管理識別子がある記事|WORLDCATID]]'
end
local Navbox = require('Module:Navbox')
--configure Navbox
local outStringelementsCat = ''
if rct == 0 or rct >= 25 then
local extrap = true
local eCat = rct..'種類以上の識別子があるページ'
local extra = parentArgs.extralist
--elementsCat = '[[Category:'..eCat..']]'..p.redCatLink(eCat)
if extra == nil or extra == '' then
elementsCat = '' --25種類以上の識別子が指定された場合、追跡カテゴリをつけるという機能は日本語版では導入されていない
extrap = false
end
if rct > 0 or extrap then
local NavboxoutString = require('Module:Navbox')
if rct > 0 then
local sectionID = 1
local args = { pid = 'identifiers' } -- #target the list of identifiers
if testcases and itemId then args = { pid = 'identifiers', qid = itemId } end --expensive
local pencil = frame:expandTemplate{ title = 'EditAtWikidata', args = args}
local navboxArgs = {
outString = Navbox._navbox( {
name = 'Normdaten',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or 'autocollapse',
group1 = '[[Help:典拠管理|典拠管理]]'..pencil,
list1 = table.concat( elements ),
navbar = 'off'
} )
for _, sectName in ipairs(sectionOrder) do
end
if #sections[sectName] ~= 0 then
navboxArgs["group" .. sectionID] = sectName
--auxCats
navboxArgs["list" .. sectionID] = table.concat(sections[sectName])
if rct == 0 or rct >= 25 then
sectionID = sectionID + 1
local eCat = rct..'種類以上の識別子があるページ'
end
--elementsCat = addCat(eCat)
elementsCat = '' --25種類以上の識別子が指定された場合、追跡カテゴリをつけるという機能は日本語版では導入されていない
end
if parentArgs.state then
if namespace == 0 or testcases then
local sCat
--if parentArgs.state == 'collapsed' then sCat = 'AC using state parameter: collapsed'
--elseif parentArgs.state == 'expanded' then sCat = 'AC using state parameter: expanded'
--elseif parentArgs.state == 'autocollapse' then sCat = 'AC using state parameter: autocollapse'
--else sCat = 'AC using state parameter: other'
--end
--stateCat = addCat(sCat)
end
if navboxArgs.group2 then
navboxArgs.title = "[[Help:典拠管理|典拠管理]]" .. pencil
else
local sect = navboxArgs.group1
if sect == "全般" or sect == "その他" then
-- Just say "Authority control" with no label if only general or only other IDs are present
-- since "general" is redundant and "other" is silly when there's nothing to contrast it with
navboxArgs.group1 = "[[Help:典拠管理|典拠管理]]" .. pencil
else
navboxArgs.group1 = "[[Help:典拠管理|典拠管理:" .. sect .. "]] " .. pencil
end
end
outString = Navbox._navbox(navboxArgs)
end
local auxCats = worldcatCat..elementsCat..multipleIdCat..suppressedIdCat..suppressedIdCatArts..
local auxCats = worldcatCat .. elementsCat .. multipleIdCat .. suppressedIdCat ..
deprecatedIdCat..differentOnWDCat..sameOnWDCat..stateCat
deprecatedIdCat .. differentOnWDCat .. sameOnWDCat
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(Category)', '%1:%2') --for easier checking
end
outString = outString .. auxCats
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString, '(%[%[)(Category:[^%]]*記事)', '%1:%2') --by definition