Mô đun:Authority control
Usage
[sửa]This module is used by the template {{authority control}} to access authority control data from Wikidata.
Adding additional items
[sửa]Step one — formatting function
[sửa]Add a new function to the module with the following format:
function fooLink( id ) return '[http://bar.com/baz' .. id .. ' ' .. id .. ']' .. getCatForId( 'FOO' ) end
Where:
fooLink
is the name of the function, which will be used in step two. It won't affect the performance of this module but the naming scheme for these functions is a camel case concatenation of the name of the authority control and the work "Link".http://bar.com/baz
is the URL of the authority control website (if it has one) up to the point of the ID number. This format assumes that the URL ends with the ID number. If not the case, the remaining URL should be added after the first "id"; i.e. at thefoo
in' .. id .. 'foo ' .. id .. ']'
FOO
is the name of the parameter used if automatic categories are to be added (currently this is only used in the User namespace). The naming scheme uses the name of the authority control in uppercase.
Step two — list
[sửa]In the list under the title "List of displayed authority control IDs", add a new line in the following format:
{ 'FOO', '[[w:BAR|BAZ]]', nnn, fooLink },
Where:
FOO
is the name of the parameter used for manual input via the template. The naming scheme uses the name of the authority control in uppercase.BAR
is the page name of a page on Wikipedia corresponding to this authority control, to explain it to a curious user.BAZ
is the visible text displayed before the ID number in the authority control template. It will often be the same asFOO
.- The whole
[[w:BAR|BAZ]]
element is just the wikilink text that precedes the ID number in the authority control template; it can be replaced with text that would normally work as wikitext. If there is no page to which to link on Wikipedia, the entire element can be replaced with justBAZ
.
- The whole
nnn
is the number of the corresponding property on wikidata. For example, "VIAF identifier" on Wikidata is P214, in which case the number214
should be entered here.fooLink
is the name of the function that formats the link. It should match the name used in step one.
Notes
[sửa]- The order of the lines under "List of displayed authority control IDs" is also the order in which they appear in the template.
WorldCat
[sửa]The WorldCat link can be generated in different ways. The manual parameter WORLDCATID
overrides everything else. If that has not been used, a single link will be automatically generated if any of the following are present, in order of precedence: LCCN (library of Congress authority file number), VIAF, or OCLC. The latter would be a reference number to a work rather than an author. If none of the above is available, either through manual entry or held on Wikidata, no WorldCat link will be generated.
Wikisource links
[sửa]Wikidata links
[sửa]- List of generic properties, lists the authority control properties on Wikidata.
- List of works properties, lists other similar properties specific to works.
- Wikidata:Wikidata:Property proposal/Authority control, lists the proposed (but not yet available) authority control properties on Wikidata.
function getCatForId( id )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if namespace == 0 then
return '[[Thể loại:Trang văn kiện có dữ liệu kiểm soát chỉ mục]]'
elseif namespace == 2 and not title.isSubpage then
return '[[Thể loại:Trang thành viên có dữ liệu kiểm soát chỉ mục ' .. id .. ']]'
elseif namespace == 100 and not title.isSubpage then
return '[[Thể loại:Trang chủ đề có dữ liệu kiểm soát chỉ mục]]'
elseif namespace == 102 and not title.isSubpage then
return '[[Thể loại:Trang tác gia có dữ liệu kiểm soát chỉ mục]]'
else
return '[[Thể loại:Trang khác có dữ liệu kiểm soát chỉ mục]]'
end
end
-- ** Author related authority controls follow **
function viafLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://viaf.org/viaf/' .. id .. ' ' .. id .. ']' .. getCatForId( 'VIAF' )
end
function nkcLink( id )
return '[http://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=' .. id .. '&CON_LNG=ENG ' .. id .. ']'
end
function nclLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=' .. id .. '&CON_LNG=ENG ' .. id .. ']'
end
function ndlLink( id )
return '[http://id.ndl.go.jp/auth/ndlna/' .. id .. ' ' .. id .. ']'
end
function sudocLink( id )
if not string.match( id, '^%d%d%d%d%d%d%d%d[%dxX]$' ) then
return false
end
return '[http://www.idref.fr/' .. id .. ' ' .. id .. ']'
end
function hlsLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.hls-dhs-dss.ch/textes/f/F' .. id .. '.php ' .. id .. ']'
end
function lirLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.e-lir.ch/e-LIR___Lexicon.' .. id .. '.450.0.html ' .. id .. ']'
end
function lccnLink( id )
local parts = splitLccn( id )
if not parts then
return false
end
id = parts[1] .. parts[2] .. append( parts[3], '0', 6 )
return '[http://id.loc.gov/authorities/names/' .. id .. ' ' .. id .. ']' .. getCatForId( 'LCCN' )
end
function splitLccn( id )
if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
end
if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
return mw.text.split( id, '/' )
end
return false
end
function append(str, c, length)
while str:len() < length do
str = c .. str
end
return str
end
function isniLink( id )
id = validateIsni( id )
if not id then
return false
end
return '[http://isni.org/isni/' .. id .. ' ' .. id:sub( 1, 4 ) .. ' ' .. id:sub( 5, 8 ) .. ' ' .. id:sub( 9, 12 ) .. ' ' .. id:sub( 13, 16 ) .. ']' .. getCatForId( 'ISNI' )
end
--Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid
--See https://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
function validateIsni( id )
id = id:gsub( '[ %-]', '' ):upper()
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
if getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) then
return false
end
return id
end
--Returns the ISNI check digit isni must be a string where the 15 first elements are digits
function getIsniCheckDigit( isni )
local total = 0
for i = 1, 15 do
local digit = isni:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
local remainder = total % 11
local result = (12 - remainder) % 11
if result == 10 then
return "X"
end
return tostring( result )
end
function orcidLink( id )
id = validateIsni( id )
if not id then
return false
end
id = id:sub( 1, 4 ) .. '-' .. id:sub( 5, 8 ) .. '-' .. id:sub( 9, 12 ) .. '-' .. id:sub( 13, 16 )
return '[https://orcid.org/' .. id .. ' ' .. id .. ']' .. getCatForId( 'ORCID' )
end
function gndLink( id )
return '[http://d-nb.info/gnd/' .. id .. ' ' .. id .. ']' .. getCatForId( 'GND' )
end
function BanglapediaEnglishLink( id )
return '[http://en.banglapedia.org/index.php?title=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Banglapedia' )
end
function MunksRollLink( id )
return '[http://munksroll.rcplondon.ac.uk/Biography/Details/' .. id .. ' ' .. id .. ']' .. getCatForId( 'Munks Roll' )
end
function selibrLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://libris.kb.se/auth/' .. id .. ' ' .. id .. ']' .. getCatForId( 'SELIBR' )
end
function bnfLink( id )
--Add cb prefix if it has been removed
if not string.match( id, '^cb.+$' ) then
id = 'cb' .. id
end
return '[http://catalogue.bnf.fr/ark:/12148/' .. id .. ' ' .. id .. ']' .. getCatForId( 'BNF' )
end
function bpnLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[http://www.biografischportaal.nl/persoon/' .. id .. ' ' .. id .. ']' .. getCatForId( 'BPN' )
end
function ridLink( id )
return '[http://www.researcherid.com/rid/' .. id .. ' ' .. id .. ']' .. getCatForId( 'RID' )
end
function bibsysLink( id )
return '[http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid ' .. id .. ']' .. getCatForId( 'BIBSYS' )
end
function ulanLink( id )
return '[http://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id .. ' ' .. id .. ']' .. getCatForId( 'ULAN' )
end
function nlaLink( id )
return '[http://nla.gov.au/anbd.aut-an' .. id .. ' ' .. id .. ']' .. getCatForId( 'NLA' )
end
function mbLink( id )
-- TODO Implement some sanity checking regex
return '[//musicbrainz.org/artist/' .. id .. ' ' .. id .. ']' .. getCatForId( 'MusicBrainz' )
end
function calisLink( id )
return '[http://opac.calis.edu.cn/aopac/ajsp/detail.jsp?actionfrom=1&actl=CAL++' .. id .. ' ' .. id .. ']' .. getCatForId( 'CALIS' )
end
function ciniiLink( id )
return '[http://ci.nii.ac.jp/author/' .. id .. ' ' .. id .. ']' .. getCatForId( 'CiNii' )
end
function sbnLink( id )
return '[http://id.sbn.it/af/' .. id .. ' ' .. id .. ']' .. getCatForId( 'SBN' )
end
function cbdbLink( id )
return '[http://db1.ihp.sinica.edu.tw/cbdbc/cbdbkmeng?~~AAA' .. id .. ' ' .. id .. ']' .. getCatForId( 'CBDB' )
end
function leonoreLink( id )
return '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Léonore' )
end
function dbnlLink( id )
return '[http://www.dbnl.org/auteurs/auteur.php?id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'DBNL' )
end
function rslLink( id )
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=' .. id .. ' ' .. id .. ']' .. getCatForId( 'RSL' )
end
function ptbnpLink( id )
return '[http://purl.pt/index/geral/aut/PT/' .. id .. '.html ' .. id .. ']' .. getCatForId( 'PTBNP' )
end
function ntaLink( id )
-- Nationale Thesaurus Auteursnamen, Koninklijke Bibliotheek
return '[http://data.bibliotheken.nl/doc/thes/p' .. id .. ' ' .. id .. ']' .. getCatForId( 'NTA' )
end
function bavLink( id )
return id .. getCatForId( 'BAV' )
-- there may not be an online catalogue for the Vatican Library (Wikidata is not currently linking to anything)
end
function nliLink( id )
return '[http://a20.libnet.ac.il/F?func=find-b&REQUEST=' .. id .. '&find_code=SYS&local_base=NNL10 ' .. id .. ']' .. getCatForId( 'NLI' )
end
function nlcLink( id )
return '[http://opac.nlc.gov.cn/F/?func=accref&acc_sequence=' .. id .. ' ' .. id .. ']' .. getCatForId( 'NLC' )
end
function nukatLink( id )
return id .. getCatForId( 'NUKAT' )
-- linking format not currently available on Wikidata and cannot find anything suitable as http://www.nukat.edu.pl/
end
function botanistLink( id )
id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'PATH') end)
return '[http://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=' .. id2 .. ' ' .. id .. ']' .. getCatForId( 'IPNI' )
end
function naraIdLink( id )
return '[http://research.archives.gov/person/' .. id .. ' ' .. id .. ']' .. getCatForId( 'NARA' )
end
function ibdbLink( id )
return '[http://www.ibdb.com/person.php?id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'IBDB' )
end
function isfdbIdLink( id )
return '[http://www.isfdb.org/cgi-bin/ea.cgi?' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISFDB' )
end
function findGraveLink( id )
return '[http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GRid=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Find a Grave' )
end
function mgpLink( id )
return '[http://genealogy.math.ndsu.nodak.edu/id.php?id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'MGP' )
end
function rkdLink( id )
return '[http://explore.rkd.nl/nl/artists/' .. id .. ' ' .. id .. ']' .. getCatForId( 'RKD' )
end
function bneLink( id )
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'BNE' )
end
function nlrLink( id )
return '[http://alephnew.bibnat.ro:8991/F?func=find-b&request=' .. id .. '&find_code=SYS&adjacent=Y&local_base=NLR10 ' .. id .. ']' .. getCatForId( 'NLR' )
end
function chLink( id )
-- Catholic Hierarchy (database of bishops)
return '[http://www.catholic-hierarchy.org/bishop/b' .. id .. '.html ' .. id .. ']' .. getCatForId( 'Catholic Hierarchy' )
end
function sycomoreLink( id )
return '[http://www.assemblee-nationale.fr/sycomore/fiche.asp?num_dept=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Sycomore' )
end
function uscongressLink( id )
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index=' .. id .. ' ' .. id .. ']'
end
function kulturnavLink( id )
return '[http://kulturnav.org/language/en/' .. id .. ' id]'
end
function sikartLink( id )
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id=' .. id .. '&lng=en ' .. id .. ']'
end
function tlsLink( id )
id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'WIKI') end)
return '[http://tls.theaterwissenschaft.ch/wiki/' .. id2 .. ' ' .. id .. ']'
end
function PrdlLink( id )
return '[http://prdl.org/author_view.php?a_id=' .. id .. ' ' .. id .. ']'
end
function NupillALink( id )
return '[http://www.literaturabrasileira.ufsc.br/autores/?id=' .. id .. ' ' .. id .. ']'
end
function MacTutorBLink( id )
return '[http://www-history.mcs.st-andrews.ac.uk/Biographies/' .. id .. '.html ' .. id .. ']'
end
function AtclLink( id )
return '[http://www.victorianresearch.org/atcl/show_author.php?aid=' .. id .. ' ' .. id .. ']'
end
function ElemLink( id )
return '[http://www.elem.mx/autor/datos/' .. id .. ' ' .. id .. ']'
end
function ImslpLink( id )
id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'WIKI') end)
return '[http://imslp.org/wiki/' .. id2 .. ' ' .. id .. ']'
end
function OdnbLink( id )
return '[http://www.oxforddnb.com/index/' .. id .. '/ ' .. id .. ']'
end
function GecLink( id )
return '[http://www.enciclopedia.cat/enciclop%C3%A8dies/gran-enciclop%C3%A8dia-catalana/EC-GEC-' .. id .. '.xml ' .. id .. ']'
end
-- ** Subject related or general authority controls follow **
function imdbLink( id )
return '[http://www.imdb.com/Name?' .. id .. ' ' .. id .. ']' .. getCatForId( 'IMDB' )
end
function freebaseLink( id )
return '[http://www.freebase.com' .. id .. ' ' .. id .. ']' .. getCatForId( 'Freebase' )
end
function naraOrgLink( id )
return '[http://research.archives.gov/organization/' .. id .. ' ' .. id .. ']' .. getCatForId( 'NARA' )
end
function naraGeoLink( id )
return '[http://research.archives.gov/geographic-reference/' .. id .. ' ' .. id .. ']' .. getCatForId( 'NARA' )
end
function naraSubLink( id )
return '[http://research.archives.gov/topical-subject/' .. id .. ' ' .. id .. ']' .. getCatForId( 'NARA' )
end
function naraTypeLink( id )
return '[http://research.archives.gov/specific-records-type/' .. id .. ' ' .. id .. ']' .. getCatForId( 'NARA' )
end
function isfdbPubLink( id )
return '[http://www.isfdb.org/cgi-bin/publisher.cgi?' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISFDB' )
end
function isfdbConLink( id )
return '[http://www.isfdb.org/cgi-bin/pl.cgi?' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISFDB' )
end
function lembpLink( id )
--Lista de Encabezamientos de materia para las Bibliotecas Públicas = List of Subject Headings for Public Libraries (Spanish)
return '[http://id.sgcb.mcu.es/lem/ver/Autoridades/' .. id .. '/concept ' .. id .. ']' .. getCatForId( 'LEMBP' )
end
function ddcLink( id )
return '[http://dewey.info/class/' .. id .. '/about ' .. id .. ']' .. getCatForId( 'DDC' )
end
function libriVoxAuthorLink( id )
return '[https://librivox.org/author/' .. id .. ' ' .. id .. ']' .. getCatForId( 'LVA' )
end
function GutenbergLink( id )
return '[https://www.gutenberg.org/ebooks/author/' .. id .. ' ' .. id .. ']' .. getCatForId( 'Gutenberg' )
end
-- ** Book and work related authority controls follow **
function isbnLink( id )
return '[[Special:BookSources/' .. id .. '|' .. id .. ']]' .. getCatForId( 'ISBN' )
-- ISBN currently only reads ISBN-13 numbers from Wikidata and ignores ISBN-10 numbers
end
function oclcLink( id )
return '[http://www.worldcat.org/oclc/' .. id .. '?lang=en ' .. id .. ']' .. getCatForId( 'OCLC' )
end
function openLibLink( id )
return '[http://openlibrary.org/books/' .. id .. ' ' .. id .. ']' .. getCatForId( 'Open Library' )
end
function libraryThingLink( id )
return '[http://www.librarything.com/work/' .. id .. ' ' .. id .. ']' .. getCatForId( 'LibraryThing' )
end
function archiveLink( id )
return '[http://www.archive.org/details/' .. id .. ' ' .. id .. ']' .. getCatForId( 'Internet Archive' )
end
function gutenbergebookLink( id )
return '[http://www.gutenberg.org/ebooks/' .. id .. ' ' .. id .. ']' .. getCatForId( 'Project Gutenberg' )
end
function europeanaLink( id )
return '[http://www.europeana.eu/portal/record/' .. id .. '.html ' .. id .. ']' .. getCatForId( 'Europeana' )
end
function lccnBibliographicLink( id )
return '[http://lccn.loc.gov/' .. id .. ' ' .. id .. ']' .. getCatForId( 'LCCN (bibliographic)' )
end
function googleBooksLink( id )
return '[http://books.google.com/books?id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Google Books' )
end
function ndlBibliographicLink( id )
return '[http://iss.ndl.go.jp/books?op_id=1&any=' .. id .. ' ' .. id .. ']' .. getCatForId( 'NDL (bibliographic)' )
end
function issnLink( id )
return '[http://www.worldcat.org/search?fq=x0:jrnl&q=n2:' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISSN' )
end
function doiLink( id )
return '[http://dx.doi.org/' .. id .. ' ' .. id .. ']' .. getCatForId( 'DOI' )
end
function eraLink( id )
return '[http://lamp.infosys.deakin.edu.au/era/?page=jnamedet12f&eraid=' .. id .. ' ' .. id .. ']' .. getCatForId( 'ERA' )
end
function ismnLink( id )
return id .. getCatForId( 'ISMN' )
-- no link currently available for ISMN on Wikidata and none found elsewhere
end
function isfdbBookLink( id )
return '[http://www.isfdb.org/cgi-bin/title.cgi?' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISFDB' )
end
function isfdbSerLink( id )
return '[http://www.isfdb.org/cgi-bin/pe.cgi?' .. id .. ' ' .. id .. ']' .. getCatForId( 'ISFDB' )
end
function sudocBibliographicLink( id )
return '[http://www.sudoc.fr/' .. id .. ' ' .. id .. ']' .. getCatForId( 'SUDOC' )
end
function swbLink( id )
-- South-West German Library Network
return '[http://swb.bsz-bw.de/DB=2.1/PPNSET?PPN=' .. id .. '&INDEXSET=1 ' .. id .. ']' .. getCatForId( 'SWB' )
end
function zdbLink( id )
-- Zeitschriftendatenbank
return '[http://dispatch.opac.d-nb.de/DB=1.1/CMD?ACT=SRCHA&IKT=8506&TRM=' .. id .. ' ' .. id .. ']' .. getCatForId( 'ZDB' )
end
function nlmLink( id )
return '[http://locatorplus.gov/cgi-bin/Pwebrecon.cgi?DB=local&v1=1&ti=1,1&Search_Arg=' .. id .. '&Search_Code=0359&CNT=20&SID=1 ' ..id .. ']' .. getCatForId( 'NLM' )
end
function selibrBibliographicLink( id )
return '[http://libris.kb.se/bib/' .. id .. ' ' .. id .. ']' .. getCatForId( 'SELIBR' )
end
function dliLink( id )
return '[http://dli.gov.in/cgi-bin/DBscripts/allmetainfo.cgi?barcode=' .. id .. ' ' .. id .. ']' .. getCatForId( 'DLI' )
end
function hathitrustLink( id )
return '[http://catalog.hathitrust.org/Record/' .. id .. ' ' .. id .. ']' .. getCatForId( 'HathiTrust' )
end
-- Entry for Wikisource using 'wgArticleID' as an authority. Should always be last
function wksLink( id )
if id and wksid ~= '' then
return false
end
return '[//vi.wikisource.org/w/index.php?curid=' .. id .. ' ' .. id .. ']' .. getCatForId( 'WKS' )
end
-- End of authority control link formatting functions
function getIdsFromWikidata( item, property )
local ids = {}
if not item.claims[property] then
return ids
end
for _, statement in pairs( item:getBestStatements( property ) ) do
if statement.mainsnak.datavalue then
table.insert( ids, statement.mainsnak.datavalue.value )
end
end
return ids
end
function matchesWikidataRequirements( item, reqs )
for _, group in pairs( reqs ) do
local property = 'p' .. group[1]
local qid = group[2]
if item.claims[property] ~= nil then
for _, statement in pairs ( item.claims[property] ) do
if statement.mainsnak.datavalue ~= nil then
if statement.mainsnak.datavalue.value['numeric-id'] == qid then
return true
end
end
end
end
end
return false
end
function createRow( id, label, rawValue, link, withUid )
if link then
if withUid then
return '* ' .. label .. ' <span class="uid plainlinks">' .. link .. '</span>\n'
else
return '* ' .. label .. ' <span class="plainlinks">' .. link .. '</span>\n'
end
else
return '* <span class="error">Mã nhận dạng ' .. id .. ' id ' .. rawValue .. ' không hợp lệ.</span>[[Thể loại:Bài viết Wikisource chứa nhận dạng sai]]\n'
end
end
-- *** List of displayed authority control IDs ***
-- Authority controls will appear in the same order as the list below
--In this order: { name of the parameter, label, propertyId in Wikidata, formatting function },
local conf = {
{ 'VIAF', '[[w:Virtual International Authority File|VIAF]]', 214, viafLink },
{ 'LCCN', '[[w:LCCN|LCCN]]', 244, lccnLink },
{ 'ISNI', '[[w:Định danh tên chuẩn quốc tế|ISNI]]', 213, isniLink },
{ 'ORCID', '[[w:ORCID|ORCID]]', 496, orcidLink },
{ 'GND', '[[w:Gemeinsame Normdatei|GND]]', 227, gndLink },
{ 'Banglapedia', '[[w:en:Banglapedia|Banglapedia]]', 4255, BanglapediaEnglishLink },
{ 'Munks Roll', '[[w:en:Munk%27s_Roll|Munks Roll]]', 2941, MunksRollLink },
{ 'SELIBR', '[[w:LIBRIS|SELIBR]]', 906, selibrLink },
{ 'SUDOC', '[[w:Système universitaire de documentation|SUDOC]]', 269, sudocLink },
{ 'BNF', '[[w:Thư viện Quốc gia Pháp|BNF]]', 268, bnfLink },
{ 'BPN', '[[w:Biografisch Portaal|BPN]]', 651, bpnLink },
{ 'RID', '[[w:en:ResearcherID|ResearcherID]]', 1053, ridLink },
{ 'BIBSYS', '[[w:Bibsys|BIBSYS]]', 1015, bibsysLink },
{ 'ULAN', '[[w:Danh sách Liên minh Tên Nghệ sĩ|ULAN]]', 245, ulanLink },
{ 'HDS', '[[w:Từ điển lịch sử Thụy Sĩ|HDS]]', 902, hlsLink },
{ 'LIR', '[[w:en:Từ điển lịch sử Thụy Sĩ#Lexicon_Istoric_Retic|LIR]]', 886, lirLink },
{ 'MBA', '[[w:MusicBrainz|MusicBrainz]]', 434, mbLink },
{ 'NLA', '[[w:Thư viện Quốc gia Úc|NLA]]', 409, nlaLink },
{ 'NDL', '[[w:Thư viện Quốc hội Nhật Bản|NDL]]', 349, ndlLink },
{ 'NCL', '[[w:Thư viện Trung tâm Quốc gia|NCL]]', 1048, nclLink },
{ 'NKC', '[[w:Thư viện Quốc gia Cộng hòa Séc|NKC]]', 691, nkcLink },
{ 'CALIS', 'CALIS', 270, calisLink },
{ 'CiNii', '[[w:CiNii|CiNii]]', 271, ciniiLink },
{ 'SBN', '[[w:Viện Thư viện Trung ương về Danh mục Thư viện Ý và Thông tin thư mục|SBN]]', 396, sbnLink },
{ 'CBDB', 'CBDB', 497, cbdbLink },
{ 'Leonore', '[[w:Bắc Đẩu Bội tinh|Léonore]]', 640, leonoreLink },
{ 'DBNL', '[[w:en:Digital Library for Dutch Literature|DBNL]]', 723, dbnlLink },
{ 'RSL', '[[w:Thư viện Nhà nước Nga|RSL]]', 947, rslLink },
{ 'PTBNP', '[[w:en:Biblioteca Nacional de Portugal|PTBNP]]', 1005, ptbnpLink },
{ 'NTA', 'NTA', 1006, ntaLink },
{ 'BAV', '[[w:Thư viện Vatican|BAV]]', 1017, bavLink },
{ 'NLI', '[[w:Thư viện Quốc gia Israel|NLI]]', 949, nliLink },
{ 'NLC', '[[w:Thư viện Quốc gia Trung Quốc|NLC]]', 1213, nlcLink },
{ 'NUKAT', 'NUKAT', 1207, nukatLink },
{ 'Botanist', '[[w:International Plant Names Index|Botanist]]', 428, botanistLink },
{ 'NARAid', '[[w:en:National Archives and Records Administration|NARA]]', 1222, naraIdLink },
{ 'IBDB', '[[w:Internet Broadway Database|IBDB]]', 1220, ibdbLink },
{ 'ISFDB', '[[w:en:Internet Speculative Fiction Database|ISFDB]]', 1233, isfdbIdLink },
{ 'LibriVoxAuth', '[[w:en:LibriVox|LibriVox]]', 1899, libriVoxAuthorLink },
{ 'Gutenberg', '[[w:Dự án Gutenberg|Project Gutenberg]]', 1938, GutenbergLink },
{ 'Grave', '[[w:Find a Grave|Find a Grave]]', 535, findGraveLink },
{ 'MGP', '[[w:Dự án Phả hệ Toán học|MGP]]', 549, mgpLink },
{ 'RKD', '[[w:Viện Lịch sử Nghệ thuật Hà Lan|RKD]]', 650, rkdLink },
{ 'BNE', '[[w:Thư viện Quốc gia Tây Ban Nha|BNE]]', 950, bneLink },
{ 'NLR', '[[w:en:National Library of Romania|NLR]]', 1003, nlrLink },
{ 'Sycomore', '[[w:Hạ viện Pháp|Sycomore]]', 1045, sycomoreLink },
{ 'CH', '[[w:Phẩm trật trong Giáo hội Công giáo Rôma|CH]]', 1047, chLink },
{ 'USCongress', '[[w:Danh mục Tiểu sử Quốc hội Hoa Kỳ|US Congress]]', 1157, uscongressLink },
{ 'TLS', '[[w:en:Theaterlexikon der Schweiz|TLS]]', 1362, tlsLink },
{ 'SIKART', '[[w:en:SIKART|SIKART]]', 781, sikartLink },
{ 'KULTURNAV', 'KulturNav', 1248, kulturnavLink },
{ 'LCCNbook', '[[w:LCCN|LCCN]]', 1144, lccnBibliographicLink },
{ 'OCLC', '[[w:Online Computer Library Center|OCLC]]', 243, oclcLink },
{ 'ISBN', '[[w:ISBN|ISBN]]', 212, isbnLink },
{ 'NDLbook', '[[w:Thư viện Quốc hội Nhật Bản|NDL]]', 1054, ndlBibliographicLink },
{ 'ISSN', '[[w:ISSN|ISSN]]', 236, issnLink },
{ 'DOI', '[[w:DOI|DOI]]', 356, doiLink },
{ 'ERA', 'ERA', 1058, eraLink },
{ 'ISMN', '[[w:en:International Standard Music Number|ISMN]]', 1208, ismnLink },
{ 'SUDOCbook', '[[w:Système universitaire de documentation|SUDOC]]', 1025, sudocBibliographicLink },
{ 'ZDB', 'ZDB', 1042, zdbLink },
{ 'SWB', 'SWB', 1044, swbLink },
{ 'NLM', '[[w:en:United States National Library of Medicine|NLM]]', 1055, nlmLink },
{ 'SELIBRbook', '[[w:LIBRIS|SELIBR]]', 1182, selibrBibliographicLink },
{ 'ISFDBser', '[[w:en:Internet Speculative Fiction Database|ISFDB]]', 1235, isfdbSerLink },
{ 'ISFDBcon', '[[w:en:Internet Speculative Fiction Database|ISFDB]]', 1234, isfdbConLink },
{ 'OL', '[[w:en:Open Library|Open Library]]', 648, openLibLink },
{ 'ARCHIVE', '[[w:Internet Archive|Internet Archive]]', 724, archiveLink },
{ 'Gutenbergebook', '[[w:Dự án Gutenberg|Project Gutenberg]]', 2034, gutenbergebookLink },
{ 'DLI', '[[w:en:Digital Library of India|Digital Library of India]]', 2185, dliLink },
{ 'HathiTrust', '[[w:en:HathiTrust|HathiTrust]]', 1844, hathitrustLink },
{ 'Google', '[[w:Google Books|Google]]', 675, googleBooksLink },
{ 'Europeana', '[[w:Europeana|Europeana]]', 727, europeanaLink },
{ 'LT', '[[w:en:LibraryThing|LibraryThing]]', 1085, libraryThingLink },
{ 'Dewey', '[[w:en:Dewey Decimal Classification|Dewey]]', 1036, ddcLink },
{ 'NARAorg', '[[w:en:National Archives and Records Administration|NARA]]', 1223, naraOrgLink },
{ 'NARAgeo', '[[w:en:National Archives and Records Administration|NARA]]', 1224, naraGeoLink },
{ 'NARAsub', '[[w:en:National Archives and Records Administration|NARA]]', 1225, naraSubLink },
{ 'NARAtype', '[[w:en:National Archives and Records Administration|NARA]]', 1226, naraTypeLink },
{ 'ISFDBpub', '[[w:en:Internet Speculative Fiction Database|ISFDB]]', 1239, isfdbPubLink },
{ 'LEMBP', 'LEMBP', 920, lembpLink },
{ 'IMDB', '[[w:Internet Movie Database|IMDB]]', 345, imdbLink },
{ 'Freebase', '[[w:en:Freebase (database)|Freebase]]', 646, freebaseLink },
{ 'PRDL', '[[w:en:Post-Reformation Digital Library|PRDL]]', 1463, PrdlLink },
{ 'NUPILL-A', 'NUPILL', 1473, NupillALink },
{ 'MacTutorB', '[[w:Bộ lưu trữ lịch sử toán học MacTutor|MacTutor]]', 1563, MacTutorBLink },
{ 'ATCL', 'ATCL', 1564, AtclLink },
{ 'ELeM', 'ELeM', 1565, ElemLink },
{ 'Imslp', '[[w:en:International Music Score Library Project|IMSLP]]', 839, ImslpLink },
{ 'Odnb', '[[w:en:Oxford Dictionary of National Biography|ODNB]]', 1415, OdnbLink },
{ 'Gec', '[[w:en:Gran Enciclopèdia Catalana|GEC]]', 1296, GecLink },
{ 'WKS', '[[Wikisource:Kiểm soát chỉ mục|Wikisource tiếng Việt]]', 0, wksLink },
}
-- Check that the Wikidata item has this property-->value before adding it
local reqs = {}
reqs['MBA'] = {
{ 106, 177220 }, -- occupation -> singer
{ 31, 177220 }, -- instance of -> singer
{ 106, 13385019 }, -- occupation -> rapper
{ 31, 13385019 }, -- instance of -> rapper
{ 106, 639669 }, -- occupation -> musician
{ 31, 639669 }, -- instance of -> musician
{ 106, 36834 }, -- occupation -> composer
{ 31, 36834 }, -- instance of -> composer
{ 106, 488205 }, -- occupation -> singer-songwriter
{ 31, 488205 }, -- instance of -> singer-songwriter
{ 106, 183945 }, -- occupation -> record producer
{ 31, 183945 }, -- instance of -> record producer
{ 106, 10816969 }, -- occupation -> club DJ
{ 31, 10816969 }, -- instance of -> club DJ
{ 106, 130857 }, -- occupation -> DJ
{ 31, 130857 }, -- instance of -> DJ
{ 106, 158852 }, -- occupation -> conductor
{ 31, 158852 }, -- instance of -> conductor
{ 31, 215380 }, -- instance of -> band
}
local p = {}
function p.authorityControl( frame )
local parentArgs = frame:getParent().args
local wksid = frame.args.wksid
--Create rows
local elements = {}
--redirect PND to GND
if (parentArgs.GND == nil or parentArgs.GND == '') and parentArgs.PND ~= nil and parentArgs.PND ~= '' then
parentArgs.GND = parentArgs.PND
end
--en.wikisource backwards compatibility
--redirect LCCNid to LCCN
if (parentArgs.LCCN == nil or parentArgs.LCCN == '') and parentArgs.LCCNid ~= nil and parentArgs.LCCNid ~= '' then
parentArgs.LCCN = parentArgs.LCCNid
end
--Wikidata fallback if requested
local item = mw.wikibase.getEntityObject()
if item ~= nil and item.claims ~= nil then
for _, params in pairs( conf ) do
if params[3] ~= 0 then
local val = parentArgs[params[1]]
if not val or val == '' then
local canUseWikidata = nil
if reqs[params[1]] ~= nil then
canUseWikidata = matchesWikidataRequirements( item, reqs[params[1]] )
else
canUseWikidata = true
end
if canUseWikidata then
local wikidataIds = getIdsFromWikidata( item, 'P' .. params[3] )
if wikidataIds[1] then
parentArgs[params[1]] = wikidataIds[1]
end
end
end
end
end
end
--Configured rows
local rct = 0
for k, params in pairs( conf ) do
local val = parentArgs[params[1]]
if val and val ~= '' then
table.insert( elements, createRow( params[1], params[2] .. ':', val, params[4]( val ), true ) )
rct = rct + 1
end
end
--Wikisource self reference
if wksid and wksid ~= '' then
table.insert( elements, createRow( 'wksid', '', wksid, '[[Wikisource:Kiểm soát chỉ mục|Wikisource tiếng Việt]]: [//vi.wikisource.org/w/index.php?curid=' .. wksid .. ' ' .. wksid .. ']', true ) )
end
--WorldCat
if parentArgs['WORLDCATID'] and parentArgs['WORLDCATID'] ~= '' then
table.insert( elements, createRow( 'WORLDCATID', '', parentArgs['WORLDCATID'], '[http://www.worldcat.org/identities/' .. parentArgs['WORLDCATID'] .. ' WorldCat]', false ) ) --Validation?
elseif parentArgs['LCCN'] and parentArgs['LCCN'] ~= '' then
local lccnParts = splitLccn( parentArgs['LCCN'] )
if lccnParts then
table.insert( elements, createRow( 'LCCN', '', parentArgs['LCCN'], '[http://www.worldcat.org/identities/lccn-' .. lccnParts[1] .. lccnParts[2] .. '-' .. lccnParts[3] .. ' WorldCat]', false ) )
end
elseif parentArgs['VIAF'] and parentArgs['VIAF'] ~= '' then
table.insert( elements, createRow( 'VIAF', '', parentArgs['VIAF'], '[http://www.worldcat.org/identities/viaf-' .. parentArgs['VIAF'] .. ' WorldCat]', false ) )
elseif parentArgs['OCLC'] and parentArgs['OCLC'] ~= '' then
table.insert( elements, createRow( 'OCLC', '', parentArgs['OCLC'], '[http://www.worldcat.org/oclc/' .. parentArgs['OCLC'] .. ' WorldCat]', false ) )
end
local Navbox = require('Mô đun:Navbox')
local elementscats = ''
return Navbox._navbox( {
name = 'Kiểm soát chỉ mục',
bodyclass = 'hlist',
wrapclass = 'acContainer',
group1 = '[[Wikisource:Kiểm soát chỉ mục|Kiểm soát chỉ mục]]' .. elementscats,
list1 = table.concat( elements )
} )
end
return p