コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

モジュール:Authority control/sandbox

モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

{{Normdaten}}のコードを生成しているモジュールです。

識別子、ウィキデータプロパティと追跡カテゴリ

[編集]
ウィキデータのプロパティ識別子分類表示例
ISNI (P213)国際標準名称識別子全般
Remarks:ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers.
VIAF識別子 (P214)VIAF識別子全般
Remarks:International authority data from the Online Computer Library Center (OCLC)
GND識別子 (P227)GND識別子国立図書館
Remarks:Authority data on people, corporations and subjects from the German National Library (DNB)
アメリカ議会図書館典拠管理識別子 (P244)アメリカ議会図書館リンクデータサービス 国立図書館
Remarks:See Wikipedia:Authority control#LCCN for formatting instructions
ULAN (P245)美術人名ユニオン・リスト 芸術家
Remarks:ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).
フランス国立図書館識別子 (P268)フランス国立図書館国立図書館
Remarks:Authority data of people listed in the general catalogue of the National Library of France
フランス国立図書館識別子 (P268)フランス国立図書館国立図書館
IdRef識別子 (P269)IdRefその他
Remarks:Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from English-speaking catalog (search author, click one book, click author name, take PPN= value of the URL)
NACSIS-CAT著者名典拠ID (P271)NACSIS-CAT著者名典拠ID学術データベース
Remarks:CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the National Institute of Informatics.
Joconde (P347)ジョコンデ その他
国立国会図書館典拠ID (P349)ウェブ版国立国会図書館典拠国立図書館
Remarks:Authority data listed in the catalog of the national library of Japan. Search also available via VIAF.
RKDimages (P350)RKD絵画データベース その他
メリメ識別子 (P380)フランス登録記念物 地理
イタリア国立図書館サービス著者識別子 (P396)国立図書館
Remarks:Central Institute for the Union Catalogue (ICCU: Istituto Centrale per il Catalogo Unico) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service (Servizio bibliotecario nazionale).
オーストラリア図書館識別子 (P409)オーストラリア国立図書館典拠国立図書館
Remarks:NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via VIAF.
植物学者の短縮名 (P428)International Plant Names Index学術データベース
Remarks:Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at International Plant Names Index (IPNI).
MusicBrainzアーティスト識別子 (P434)MusicBrainzアーティスト識別子 芸術家
Remarks:MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.
MusicBrainz作品ID (P435)その他
MusicBrainzリリース・グループ識別子 (P436)その他
Structurae (P454)Structurae地理
ORCID (P496)ORCID学術データベース
Remarks:Authority data on researchers, academics, etc. The ID range is a subset of the ISNI range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at orcid.org/register. Please take care not to confuse ORCID and ISNI identifiers.
Mathematics Genealogy Project ID (P549)学術データベース
Remarks:Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians.
RKDartists識別子 (P650)オランダ美術史研究所データベース芸術家
Remarks:RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).
(P651)オランダ人物典拠管理データベース 人物
Remarks:Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands.
チェコ国立図書館識別子 (P691)チェコ国立図書館典拠データベース国立図書館
Remarks:National Library of the Czech Republic (Národní knihovna České republiky) is the central library of the Czech Republic.
JPL小天体データベース SPK-ID (P716)JPL Small-Body Databaseその他
(P781)芸術家
Remarks:SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR).
ISIL識別子 (P791)図書館及び関連組織のための国際標準識別子人物
Remarks:Libraries, museums and archives, decentralized national databases.
ACM電子図書館著者識別子 (P864)ACM電子図書館学術データベース
BMLO (P865)人物
Lexicon istoric retic識別子 (P886)Lexicon istoric reticその他
Remarks:Lexicon Istoric Retic (LIR) is a two volume version with a selection of articles published in Romansh.
スイス歴史事典識別子 (P902)スイス歴史事典その他
Remarks:Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland.
ロシア国立図書館 (モスクワ)人物識別子 (P947)ロシア国立図書館国立図書館
Remarks:Russian State Library (Российская государственная библиотека) is the national library of Russia.
スペイン国立図書館識別子 (P950)スペイン国立図書館識別子国立図書館
Remarks:National Library of Spain (BNE: Biblioteca Nacional de España) is a major public library, the largest in Spain.
MusicBrainzレーベルID (P966)その他
MusicBrainz地域ID (P982)地理
ルーマニア国立図書館識別子 (P1003)国立図書館
MusicBrainz 場所 ID (P1004)地理
PTBNP識別子 (P1005)国立図書館
NTA PPN識別子 (P1006)国立図書館
BIBSYS識別子 (P1015)国立図書館
Remarks:BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions.
(P1045)国民議会議員 人物
国家図書館識別子 (P1048)国家図書館国立図書館
Remarks:National Central Library is the national library of Taiwan, Republic of China.
ResearcherID (P1053)ResearcherID学術データベース
Remarks:An identifying system for scientific authors. The system was introduced in January 2008 by Thomson Reuters. The combined use of the digital object identifier with the ResearcherID allows for a unique association of authors and scientific articles.
ワールド・アスレティックスID (P1146)ワールド・アスレティックス・データベース人物
Remarks:The IAAF athlete database lists information about sport of athletics competitors.
Scopus著者識別子 (P1153)Scopus学術データベース
Remarks:SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities).
アメリカ国会識別子 (P1157)アメリカ国会人物識別子 人物
Remarks:Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico.
欧州議会議員データベースのID (P1186)欧州議会議員人物
アメリカ国立公文書記録管理局識別子 (P1225)国立公文書館識別子その他
Remarks:National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records.
(P1248)芸術家
Remarks:KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the Arts Council Norway.
NLAトローヴ人物識別子 (P1315)トローヴ 人物
Terminologia Anatomica 98 (P1323)Terminologia Anatomicaその他
MusicBrainz楽器ID (P1330)その他
(P1362)その他
Remarks:Theaterlexikon der Schweiz (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the University of Berne.
LNB識別子 (P1368)国立図書館
NSK識別子 (P1375)国立図書館
MusicBrainzシリーズID (P1407)その他
zbMATH著者識別子 (P1556)学術データベース
プレアデスID (P1584)プレアデス 地理
Remarks:Pleiades is a joint project of the Institute for the Study of the Ancient World at New York University and the Ancient World Mapping Center at the University of North Carolina at Chapel Hill.
(P1707)芸術家
(P1736)芸術家
GVP火山番号 (P1886)Global Volcanism Program地理
チリ書誌典拠収集目録識別子 (P1890)国立図書館
オーストラリア人名辞典ID (P1907)オーストラリア人名事典 人物
CWGC人物識別子 (P1908)コモンウェルス戦争墓地委員会データベース人物
Google Scholar著者識別子 (P1960)Google Scholar著者識別子学術データベース
イタリア人名事典識別子 (P1986)イタリア人名事典 人物
ビクトリア国立美術館芸術家ID (P2041)ヴィクトリア国立美術館芸術家
FAST識別子 (P2163)全般
ニューヨーク近代美術館 芸術家ID (P2174)芸術家
オルセー美術館 作者識別子 (P2268)芸術家
シュトゥットガルト科学イラストレーター・データベースID (P2349)芸術家
(P2418)Structurae人物
DBLP著者識別子 (P2456)DBLP学術データベース
NCES 学校ID (P2484)地理
autores.uy ID (P2558)Autores.uy人物
Remarks:autores.uy is an author's database, that focus on Uruguayan authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain.
写真家識別目録識別子 (P2750)写真家識別目録芸術家
Remarks:PIC is a photographer's database. It is maintained by the New York Public Library.
ARLHS灯台ID (P2980)ARLHS 灯台 ID 地理
(P3223)地理
(P3233)PhilPapers学術データベース
(P3326)地理
ギリシャ国立図書館識別子 (P3348)ギリシア国立図書館 国立図書館
オークランド美術館芸術家ID (P3372)オークランド美術館芸術家
(P3407)地理
SNAC ARK識別子 (P3430)SNACその他
テ・パパ代理識別子 (P3544)ニュージーランド国立博物館テ・パパ・トンガレワ収蔵物オンラインその他
英国水路部灯台番号 (P3562)英国水路部灯台番号地理
アメリカ国家地理空間情報局灯台識別子 (P3563)アメリカ国家地理空間情報局灯台識別子地理
マリントラフィック灯台識別子 (P3601)マリントラフィック灯台識別子地理
アメリカ沿岸警備隊灯台識別子 (P3723)アメリカ沿岸警備隊灯台識別子地理
(P3788)国立図書館
Publons著者識別子 (P3829)パブロンズ 学術データベース
イタリア海軍ビーコン識別子 (P3863)Fari e Segnalamenti地理
カナダ沿岸警備隊灯台識別子 (P3920)カナダ沿岸警備隊灯台識別子地理
Remarks:Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard.
(P3993)地理
  • アイスランド: 184
(P4038)地理
  • デンマーク: 4500
(P4055)地理
  • ノルウェー: 000100
ADK メンバーID (P4114)ベルリン芸術アカデミー芸術家
(P4143)地理
  • フィンランド: 7243
Australian Women's Register ID (P4186)人物
(P4423)地理
  • ポルトガル: 186
(P4457)歴史的録音の資料台帳 (アメリカ) 芸術家
(P4534)人物
(P4535)地理
シュテーデル美術館 芸術家ID (P4581)シュテーデル美術館芸術家
現代ウクライナ百科事典ID (P4613)現代ウクライナ百科事典 その他
MathSciNet著者識別子 (P4955)学術データベース
韓国国立中央図書館識別子 (P5034)韓国国立中央図書館典拠ファイル国立図書館
(P5226)芸術家
Remarks:Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM
(P5288)地理
(P5302)その他
Remarks:Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM
(P5321)芸術家
(P5368)カナダ国立美術館芸術家
(P5504)その他
Libris-URI (P5587)LIBRIS 国立図書館
SELIBR識別子 (P906)LIBRIS 国立図書館
Remarks:Authority data from the National Library of Sweden
小惑星センター 天体ID (P5736)小惑星センター・データベース その他
(P5818)植物園自然保護国際機構地理
イギリス議会識別子 (P6213)イギリスの議会人物
Remarks:UK parliament member data
(P6792)芸術家
南オーストラリア美術館芸術家ID (P6804)南オーストラリア美術館芸術家
(P6829)アイルランド人名事典人物
ポーランド国立図書館識別子 (P7293)MAK国立図書館
ポーランド国立図書館識別子(旧) (P1695)ポーランド国立図書館国立図書館
グラミー賞芸術家識別子 (P7303)グラミー賞芸術家識別子芸術家
トルコ宗教財団イスラーム百科事典ID (P7314)トルコ宗教財団イスラーム百科事典 その他
ドイッチェ・ビオグラフィー識別子 (P7902)ドイッチェ・ビオグラフィー 人物
バチカン図書館VcBA識別子 (P8034)opac.vatlib.it国立図書館
Remarks:Vatican Library document data
イスラエル国立図書館J9U識別子 (P8189)イスラエル国立図書館名称・主題典拠ファイル国立図書館
(P8381)エミー賞芸術家
(P8671)その他
Remarks:Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn
KANTO ID (P8980)KANTO 国立図書館
ウクライナ・インターネット百科事典識別子 (P9070)IEU (識別子)その他
(P9692)芸術家
Remarks:Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit
(P9725)地理
Remarks:Identifier for an entry in the castles inventory database EBIDAT
CANTIC識別子 (P9984)カタルーニャ名称・題名典拠ファイル 国立図書館
(P10020)人物
レオポルディーナ会員識別子(新) (P10299)www.leopoldina.org 学術データベース
WorldCat Entities識別子 (P10832)WorldCat Entities 全般
Remarks:WorldCat Entities for persons and works, by OCLC
ベルギー王立図書館 人物ID (P11249)ベルギー王立図書館オンライン・カタログ 国立図書館
CiNii Research ID (P11496)CiNii Research ID学術データベース
(P11646)ドイッチェ・シンクロンカルテイ 人物
Remarks:Online database of voice actors in film and television productions
(P12204)その他
Remarks:Identifier for an entry in the Electronic Literature as a Model of Creativity and Innovation in Practice (ELNCIP) Knowledge Base
(P12754)その他
DDB 人物 (GND) ID (P13049)ドイツ電子図書館人物
Remarks:Deutsche Digitale Bibliothek
require('strict')
local p = {}
local frame = mw.getCurrentFrame()
local config_file = frame.args.config and frame.args.config~='' and ('/' .. frame.args.config) or ''
local config = mw.loadData('Module:Authority control/config' .. config_file)
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = title.subpageText == config.i18n.testcases

local wikilink = function(target, label)
	return label and '[[' .. target .. '|' .. label .. ']]' or '[[' .. target .. ']]'
end

local needsAttention = function(sortkey)
	return wikilink(config.i18n.category .. ':' .. config.i18n.attentioncat, sortkey .. title.text)
end

local addCat = function(cat, sortkey)
	if cat and cat~='' and (namespace==0 or namespace==14 or testcases) then
		local redlinkcat = ''
		if testcases==false then
			local success, exists = pcall(function() return mw.title.new(cat, 14).exists end)
			if success and not exists then 
				redlinkcat = needsAttention('N')
			end
		end
		return wikilink(config.i18n.category..':'..cat, sortkey and sortkey..title.text) .. redlinkcat
	else
		return ''
	end
end

local tooltip = function(text, label)
	if label and label~='' then
		return frame:expandTemplate{
			title = 'Tooltip',
			args = {text, label}
		}
	else
		return text
	end
end

local _makelink = function(id, val, additional, qid) --validate values and create a link
	local link = mw.html.create('span'):addClass('uid')
	if not additional and id.prefix then --show prefix on primary value
		link:wikitext(id.prefix .. ': ')
	end
	local valid_value = false
	if id.customlink then -- use function to validate and generate link
		local newlink = require(config.auxiliary)[id.customlink](val.id, additional)
		if newlink then
			link:wikitext(newlink)
			valid_value = true
		end
	else
		if id.pattern then -- check pattern to determine validity
			valid_value = string.match(val.id, '^' .. id.pattern .. '$')
		elseif id.patterns then -- check multiple patterns to determine validity
			for _, pattern in ipairs(id.patterns) do
				valid_value = val.id:match('^' .. pattern .. '$')
				if valid_value then break end
			end
		elseif id.valid then -- use function to determine validity
			valid_value = require(config.auxiliary)[id.valid](val.id)
		else -- no validation possible
			valid_value = val.id
		end
		if valid_value then
			local label = id.label
			if not label or additional then
				label = tostring(additional)
			end
			local newlink
			if id.link then
				valid_value = valid_value:gsub('%%', '%%%%')
				newlink = '[' .. mw.ustring.gsub(id.link, '%$1', valid_value) .. ' ' .. label .. ']'
			else
				newlink = valid_value
			end
			link:wikitext(tooltip(newlink, val.name))
		end
	end
	if valid_value then
		local cat =  id.category and string.format(config.i18n.cat, id.category)
		link:wikitext(addCat(cat))
	else
		local wdlink = qid and wikilink(':wikidata:' .. qid .. '#P' .. id.property) or ''
		local name = mw.wikibase.getLabel('P' .. id.property) or ''
		local tooltip = string.format(
			config.i18n.idnotvalid,
			name,
			val.id
		)
		local cat = id.category and string.format(
			config.i18n.cat,
			config.i18n.faulty .. ' ' .. id.category
		)
		link:wikitext(wikilink('File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink, tooltip .. '.'))
			:wikitext(addCat(cat))
			:wikitext(addCat(config.i18n.allfaultycat, name))
	end
	return link
end

local _makelinks = function(id, qid)
--[[==================================]]
--[[            Make links            ]]
--[[==================================]]
local getquals = function(statement, qualid)
	if statement.qualifiers and statement.qualifiers['P'..qualid] then
		return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
	end
end
local ids = {}
if qid then
	for _, statement in ipairs(mw.wikibase.getBestStatements(qid, 'P'..id.property)) do
		if statement.mainsnak.datavalue then
			local val = statement.mainsnak.datavalue.value
			if val then
				local namedas = getquals(statement, 1810) or getquals(statement, 742) or ''
				table.insert(ids, {id=val, name=namedas})
end end end end
local links
if ids[1] then
	links = mw.html.create('li'):node(_makelink(id, ids[1], false, qid))
	if ids[2] then
		local sublinks = mw.html.create('ul')
		for n = 2, #ids do
			sublinks:tag('li'):node(_makelink(id, ids[n], n, qid)):done()
		end
		links:node(sublinks)
	end
end
return links
end

p.authorityControl = function(frame)
--[[==================================]]
--[[               Main               ]]
--[[==================================]]
local resolveQID = function(qid)
	if qid then
		qid = 'Q' .. mw.ustring.gsub(qid, '^[Qq]', '')
		if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
			local sitelink = mw.wikibase.getSitelink(qid)
			if sitelink then
				return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
			end
			return mw.wikibase.getEntity(qid).id
end end end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid, topic
if namespace==0 then
	qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to a Wikidata item
	if parentArgs.qid and resolveQID(parentArgs.qid)~=qid then -- non-matching qid parameter
		auxCats = auxCats .. needsAttention('D')
	end
else -- page is not connected to any Wikidata item
	qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
	if qid then -- qid parameter is valid, set topic to display
		topic = mw.wikibase.getLabel(qid)
		if topic then
			if mw.ustring.lower(title.subpageText)==mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change
				topic = nil
			end
			if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
				topic = wikilink(mw.wikibase.getSitelink(qid), topic)
			end
		else
			auxCats = auxCats .. needsAttention('L')
		end
	elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
		auxCats = auxCats .. needsAttention('Q')
	end
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional=='auto' and qid then  -- check P527 for parts to add additional qids
	local checkparts = function(property)
		local parts = mw.wikibase.getBestStatements(qid, property)
		if parts then
			for _, part in ipairs(parts) do
				if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then
					local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id)
					if resolvedqid then
						table.insert(qids,resolvedqid)
	end end end end end
	for _, part in ipairs(config.auto_additional) do
		checkparts('P' .. part)
	end
elseif parentArgs.additional and parentArgs.additional~='' then
	for _, v in ipairs(mw.text.split(parentArgs.additional, '%s*,%s*')) do
		v = resolveQID(v)
		if v then
			if v==qid then -- duplicate of qid parameter
				auxCats = auxCats .. needsAttention('R')
			end
			table.insert(qids, v)
		else -- invalid QID specified
			auxCats = auxCats .. needsAttention('A')
		end
	end
end
local numsections, sections = 0, {}
for _, _ in ipairs(config.sections) do -- count number of regular sections
	numsections = numsections + 1
end
for _ = 1, #qids+numsections do
	table.insert(sections, {})
end

-- check which identifiers to show/suppress in template
local show, show_all_unsuppressed = {}, true
local stripP = function(pid) --strip P from property number
	if pid:match('^[Pp]%d+$') then
		pid = mw.ustring.gsub(pid, '[Pp]', '')
	end
	if pid:match('^%d+$') then
		return tonumber(pid)
	end
end
local addshowlist = function(list)
	if list and list~='' then
		for _, v in ipairs(mw.text.split(string.lower(list), '%s*,%s*')) do
			local vprop = stripP(v)
			if vprop then -- e.g. show=P214 to show one particular property
				show[vprop] = true
			else -- e.g. show=arts to use whitelist
				if config.whitelists[v] then
					for _, w in ipairs(config.whitelists[v].properties) do
						show[w] = true
		end end end end
		show_all_unsuppressed = false
end end
addshowlist(frame.args.show) -- check show parameter on wrapper template
addshowlist(parentArgs.show) -- check show parameter on article
addshowlist(parentArgs.country) -- check country parameter on article
if parentArgs.suppress then
	local suppresslist = mw.text.split(parentArgs.suppress, '%s*,%s*') -- split parameter by comma
	for _, v in ipairs(suppresslist) do
		v = stripP(v)
		if v then
			show[v] = false
			auxCats = auxCats .. wikilink(config.i18n.category .. ':' .. config.i18n.suppressedcat)
		else
			auxCats = auxCats .. needsAttention('P')
		end
	end
end

local makeSections = function(qid, addit)
	for _, id in ipairs(conf) do
		if id.suppressedbyproperty then
			for _, property in ipairs(id.suppressedbyproperty) do
				if show[property]=='used' then -- property is in use
					show[id.property] = false -- suppressed by another property
		end end end
		if show[id.property]==nil then
			show[id.property] = show_all_unsuppressed
		end
		if show[id.property] then
			local links = _makelinks(id, qid)
			if links then
				table.insert(
					sections[addit or id.section],
					links
				)
				show[id.property] = 'used'
				rct = true
end end end end
local pencil = function(qid)
	if qid then
		return require('Module:EditAtWikidata')._showMessage{
			pid = 'identifiers',
			qid = qid
		}
	else
		return ''
	end
end
makeSections(qid, false)
for c = 1, #qids do
	makeSections(qids[c], numsections+c)
end

--configure Navbox
local outString = ''
if rct then -- there is at least one link to display
	local Navbox = require('Module:Navbox')
	local sect, lastsect = 0, 0
	local navboxArgs = {
		name  = 'Authority control',
		navboxclass = 'authority-control',
		bodyclass = 'hlist',
		state = parentArgs.state or config.i18n.autocollapse,
		navbar = 'off'
	}
	for c = 1, numsections+#qids do
		if #sections[c]>0 then -- section is non-empty
			sect = sect + 1
			lastsect = c
			local sectname
			if c<=numsections then -- regular section
				sectname = config.sections[c].name
			else -- section from additional qid
				local qid = qids[c-numsections]
				local label, sitelink = mw.wikibase.getLabel(qid), mw.wikibase.getSitelink(qid)
				if label then
					if sitelink then
						local target = mw.title.new(sitelink)
						if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link
							sectname = label
						else -- make wikilink to article
							sectname = wikilink(sitelink, label)
						end
					else
						sectname = label
					end
				else
					auxCats = auxCats .. needsAttention('L')
					sectname = qid
				end
				sectname = sectname .. pencil(qid)
			end
			navboxArgs['group' .. c] = sectname
			local list = mw.html.create('ul')
			for _, link in ipairs(sections[c]) do
				list:node(link)
			end
			navboxArgs['list' .. c] = tostring(list)
		end
	end
	if topic then -- display in expanded form with topic
		navboxArgs.title = config.i18n.aclink .. ' &ndash; ' .. topic .. pencil(qid)
	elseif sect==1 then -- special display when only one section
		if lastsect<=numsections then
			if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
				navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
			else -- other regular section
				navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
			end
		else -- section from additional qid
			navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
		end
	else -- add title to navbox
		navboxArgs.title = config.i18n.aclink .. pencil(qid)
	end
	outString = Navbox._navbox(navboxArgs)
end

if parentArgs.state
	and parentArgs.state~=''
	and parentArgs.state~=config.i18n.collapsed
	and parentArgs.state~=config.i18n.expanded
	and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter
	auxCats = auxCats .. needsAttention('S')
end
if testcases then
	auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end

--out
outString = outString .. auxCats
if namespace~=0 then
	-- 日本語版独自の変更あり
	outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':)([^%|%]]+' .. config.i18n.Articles .. ')%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters/sandbox')._check
local sortkey
if namespace==0 then
	sortkey = '*' .. title.text
else
	sortkey = title.fullText
end
outString = outString .. check({
	['unknown'] = wikilink(config.i18n.category .. ':' .. config.i18n.pageswithparams, sortkey),
	['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state'
	}, parentArgs)
return outString
end

p.makelink = function(id, qid)
	return _makelinks(id, qid)
end

return p