Módulo:Controle de autoridade
Este módulo é baseado no utilizado pelo en.Wikisource, com sutis adaptações. É completamente incompatível com o utilizado pela pt.Wikipédia. Seja cauteloso ao sincronizar ou atualizar seu código. |
Este módulo depende dos seguintes outros módulos: |
Usage
[editar]This module is used by the template {{controle de autoridade}} to access authority control data from Wikidata.
Adding additional items
[editar]Step one — formatting function
[editar]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
[editar]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
[editar]- The order of the lines under "List of displayed authority control IDs" is also the order in which they appear in the template.
WorldCat
[editar]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
[editar]Wikidata links
[editar]- 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.
A documentação acima é transcluída de Módulo:Controle de autoridade/doc. (editar | histórico) Editores podem experimentar nas páginas de teste (criar | espelhar) e de exemplos para testes (criar) deste módulo. Subpáginas deste módulo. |
function getCatForId( id )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if namespace == 0 then
return '[[Categoria:!Páginas de conteúdo com controle de autoridade]]'
elseif namespace == 2 and not title.isSubpage then
return '[[Categoria:!Páginas de usuário com identificadores ' .. id .. ']]'
elseif namespace == 100 and not title.isSubpage then
return '[[Categoria:!Portais de navegação com controle de autoridade]]'
elseif namespace == 102 and not title.isSubpage then
return '[[Categoria:!Biografias com controle de autoridade]]'
else
return '[[Categoria:!Miscellaneous pages with authority control data]]'
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/' .. 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 WBPLNauthorID( id )
return '[http://dspace.wbpublibnet.gov.in:8080/jspui/browse?type=author&order=ASC&rpp=20&value=' .. id .. ' ' .. id .. ']' .. getCatForId( 'WBPLN' )
end
function BHLcreatorID( id )
return '[http://www.biodiversitylibrary.org/creator/' .. id .. ' ' .. id .. ']' .. getCatForId( 'BHL' )
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 vcbaLink( id )
return '[https://wikidata-externalid-url.toolforge.org/?p=8034&url_prefix=https://opac.vatlib.it/auth/detail/&id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'VcBA' )
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.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 '[https://www.findagrave.com/memorial/' .. 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 '[https://www.literaturabrasileira.ufsc.br/autores/?id=' .. id .. ' ' .. id .. ']' .. getCatForId( 'NUPILL' )
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 '[https://doi.org/10.1093/ref:odnb/' .. 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 '[https://freebase.toolforge.org/' .. 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
function syrBiographicalLink( id )
return '[http://syriaca.org/person/' .. id .. ' ' .. id .. ']'
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
function blSysnumLink( id )
return '[http://explore.bl.uk/BLVU1:LSCOP-ALL:BLL01' .. id .. ' ' .. id .. ']' .. getCatForId( 'BL' )
end
function BNBRLink( id )
return '[http://acervo.bn.br/sophia_web/autoridade/detalhe/' .. id .. ' ' .. id .. ']' .. getCatForId( 'BN.br' )
end
function onlineBooksLink( id )
return '[http://onlinebooks.library.upenn.edu/webbin/cinfo/' .. id .. ' ' .. id .. ']' .. getCatForId( 'OnlineBooks' )
end
function newspapersComLink( id )
if not string.match( id, '^%d+$' ) then
return false
end
return '[https://www.newspapers.com/title_' .. id .. ' ' .. id .. ']'
end
-- ** Entradas específicas ao Wikisource.pt **
function LitteraLink( id )
return '[http://cantigas.fcsh.unl.pt/autor.asp?cdaut=' .. id .. ' ' .. id .. ']' .. getCatForId( 'Littera' )
end
function PhiloBiblonLink( id )
return '[http://pb.lib.berkeley.edu/xtf/servlet/org.cdlib.xtf.dynaXML.DynaXML?source=BITAGAP/Display/' .. id .. 'BITAGAP.Person.xml&style=Person.xsl ' .. id .. ']' .. getCatForId( 'PhiloBiblon' )
end
-- Entry for Wikisource using 'wgArticleID' as an authority. Should always be last
-- ATENÇÃO AO SUBDOMÍNIO AO SINCRONIZAR CÓDIGO
function wksLink( id )
if id and wksid ~= '' then
return false
end
return '[//pt.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">The ' .. id .. ' id ' .. rawValue .. ' is not valid.</span>[[Categoria:!Entradas do Wikisource com identificadores de autoridade defeituosos]]\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:en:Virtual International Authority File|VIAF]]', 214, viafLink },
{ 'LCCN', '[[w:en:Library of Congress Control Number|LCCN]]', 244, lccnLink },
{ 'ISNI', '[[w:en:International Standard Name Identifier|ISNI]]', 213, isniLink },
{ 'ORCID', '[[w:en:ORCID|ORCID]]', 496, orcidLink },
{ 'GND', '[[w:en:Integrated Authority File|GND]]', 227, gndLink },
{ 'Banglapedia', '[[w:en:Banglapedia|Banglapedia]]', 4255, BanglapediaEnglishLink },
{ 'WBPLN', 'WBPLN', 4343, WBPLNauthorID },
{ 'BHL', '[[w:en:Biodiversity Heritage Library|BHL]]', 4081, BHLcreatorID },
{ 'Munks Roll', '[[w:en:Munk%27s_Roll|Munks Roll]]', 2941, MunksRollLink },
{ 'SELIBR', '[[w:en:LIBRIS|SELIBR]]', 906, selibrLink },
{ 'SUDOC', '[[w:en:Système universitaire de documentation|SUDOC]]', 269, sudocLink },
{ 'BNF', '[[w:en:Bibliothèque nationale de France|BNF]]', 268, bnfLink },
{ 'BPN', '[[w:en:Biografisch Portaal|BPN]]', 651, bpnLink },
{ 'RID', '[[w:en:ResearcherID|ResearcherID]]', 1053, ridLink },
{ 'BIBSYS', '[[w:en:BIBSYS|BIBSYS]]', 1015, bibsysLink },
{ 'BL', '[[w:en:British Library|BL]]', 5199, blSysnumLink },
{ 'ULAN', '[[w:en:Union List of Artist Names|ULAN]]', 245, ulanLink },
{ 'HDS', '[[w:en:Historical Dictionary of Switzerland|HDS]]', 902, hlsLink },
{ 'LIR', '[[w:en:Historical Dictionary of Switzerland#Lexicon_Istoric_Retic|LIR]]', 886, lirLink },
{ 'MBA', '[[w:en:MusicBrainz|MusicBrainz]]', 434, mbLink },
{ 'NLA', '[[w:en:National Library of Australia|NLA]]', 409, nlaLink },
{ 'NDL', '[[w:en:National Diet Library|NDL]]', 349, ndlLink },
{ 'NCL', '[[w:en:National Central Library|NCL]]', 1048, nclLink },
{ 'NKC', '[[w:en:National Library of the Czech Republic|NKC]]', 691, nkcLink },
{ 'CALIS', 'CALIS', 270, calisLink },
{ 'CiNii', '[[w:en:CiNii|CiNii]]', 271, ciniiLink },
{ 'SBN', '[[w:en:Istituto Centrale per il Catalogo Unico|SBN]]', 396, sbnLink },
{ 'CBDB', 'CBDB', 497, cbdbLink },
{ 'Leonore', '[[w:en:Legion of Honour|Léonore]]', 640, leonoreLink },
{ 'DBNL', '[[w:en:Digital Library for Dutch Literature|DBNL]]', 723, dbnlLink },
{ 'RSL', '[[w:en:Russian State Library|RSL]]', 947, rslLink },
{ 'PTBNP', '[[w:en:Biblioteca Nacional de Portugal|PTBNP]]', 1005, ptbnpLink },
{ 'NTA', 'NTA', 1006, ntaLink },
{ 'VcBA', '[[w:en:Vatican Library|VcBA]]', 8034, vcbaLink },
{ 'NLI', '[[w:en:National Library of Israel|NLI]]', 949, nliLink },
{ 'NLC', '[[w:en:National Library of China|NLC]]', 1213, nlcLink },
{ 'NUKAT', 'NUKAT', 1207, nukatLink },
{ 'Botanist', '[[w:en:International Plant Names Index|Botanist]]', 428, botanistLink },
{ 'NARAid', '[[w:en:National Archives and Records Administration|NARA]]', 1222, naraIdLink },
{ 'IBDB', '[[w:en:Internet Broadway Database|IBDB]]', 1220, ibdbLink },
{ 'ISFDB', '[[w:en:Internet Speculative Fiction Database|ISFDB]]', 1233, isfdbIdLink },
{ 'LibriVoxAuth', '[[w:LibriVox|LibriVox]]', 1899, libriVoxAuthorLink },
{ 'Gutenberg', '[[w:Project Gutenberg|Project Gutenberg]]', 1938, GutenbergLink },
{ 'SBD', '[[w:en:Syriac Biographical Dictionary|SBD]]', 6934, syrBiographicalLink },
{ 'Grave', '[[w:en:Find a Grave|Find a Grave]]', 535, findGraveLink },
{ 'MGP', '[[w:en:Mathematics Genealogy Project|MGP]]', 549, mgpLink },
{ 'RKD', '[[w:en:Netherlands Institute for Art History|RKD]]', 650, rkdLink },
{ 'BNE', '[[w:en:Biblioteca Nacional de España|BNE]]', 950, bneLink },
{ 'NLR', '[[w:en:National Library of Romania|NLR]]', 1003, nlrLink },
{ 'Sycomore', '[[w:en:National Assembly (France)|Sycomore]]', 1045, sycomoreLink },
{ 'CH', '[[w:en:Hierarchy of the Catholic Church|CH]]', 1047, chLink },
{ 'USCongress', '[[w:en:Biographical Directory of the United States Congress|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:en:Library of Congress Control Number|LCCN]]', 1144, lccnBibliographicLink },
{ 'OCLC', '[[w:en:OCLC|OCLC]]', 243, oclcLink },
{ 'ISBN', '[[w:en:International Standard Book Number|ISBN]]', 212, isbnLink },
{ 'NDLbook', '[[w:en:National Diet Library|NDL]]', 1054, ndlBibliographicLink },
{ 'ISSN', '[[w:en:International Standard Serial Number|ISSN]]', 236, issnLink },
{ 'DOI', '[[w:en:Digital object identifier|DOI]]', 356, doiLink },
{ 'ERA', 'ERA', 1058, eraLink },
{ 'ISMN', '[[w:en:International Standard Music Number|ISMN]]', 1208, ismnLink },
{ 'SUDOCbook', '[[w:en: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:en: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:en:Internet Archive|Internet Archive]]', 724, archiveLink },
{ 'Gutenbergebook', '[[w:Project 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:en:Google Books|Google]]', 675, googleBooksLink },
{ 'Europeana', '[[w:en: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:en:Internet Movie Database|IMDB]]', 345, imdbLink },
{ 'Freebase', '[[w:en:Freebase|Freebase]]', 646, freebaseLink },
{ 'PRDL', '[[w:en:Post-Reformation Digital Library|PRDL]]', 1463, PrdlLink },
{ 'NUPILL-A', 'NUPILL', 1473, NupillALink },
{ 'MacTutorB', '[[w:MacTutor History of Mathematics archive|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 },
{ 'BN.br', '[[w:Biblioteca Nacional do Brasil|BN.br]]', 4619, BNBRLink },
{ 'OnlineBooks', '[[w:en:Online Books Page|Online Books Page]]', 5396, onlineBooksLink },
{ 'Newspapers.com', '[[w:en:Newspapers.com|Newspapers.com]]', 7259, newspapersComLink },
{ 'Littera', 'Littera', 0, LitteraLink },
{ 'PhiloBiblon', 'PhiloBiblon', 0, PhiloBiblonLink },
{ 'WKS', '[[Wikisource:Controle de autoridade|Wikisource lusófono]]', 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:Controle de autoridade|Wikisource lusófono]]: [//pt.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ódulo:Navbox')
local elementscats = ''
return Navbox._navbox( {
name = 'Controle de autoridade',
bodyclass = 'hlist',
navboxclass = 'acContainer ws-noexport dynlayout-exempt',
group1 = '[[Wikisource:Controle de autoridade|Controle de autoridade]]' .. elementscats,
list1 = table.concat( elements )
} )
end
return p