Redigerer
Modul:Authority control/sandkasse
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
require('Module:No globals') local function viafLink( id ) if not string.match( id, '^%d+$' ) then return false end return 'https://viaf.org/viaf/' .. id end local function kulturnavLink( id ) return 'http://kulturnav.org/language/no/' .. id end local function geonamesLink( id ) return 'http://sws.geonames.org/' .. id end local function sikartLink( id ) return 'http://www.sikart.ch/KuenstlerInnen.aspx?id=' .. id .. '&lng=en' end local function tlsLink( id ) local id2 = mw.ustring.gsub(id, '%s', function(s) return mw.uri.encode(s, 'WIKI') end) return 'http://tls.theaterwissenschaft.ch/wiki/' .. id2 end local function ciniiLink( id ) return 'http://ci.nii.ac.jp/author/' .. id .. '?l=en' end local function bneLink( id ) return 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id end local function uscongressLink( id ) return 'http://bioguide.congress.gov/scripts/biodisplay.pl?index=' .. id end local function narapersonLink( id ) return 'http://research.archives.gov/person/' .. id end local function naraorganizationLink( id ) return 'http://research.archives.gov/organization/' .. id end local function botanistLink( id ) local 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 end local function mgpLink( id ) -- TODO Implement some sanity checking regex return 'http://www.genealogy.ams.org/id.php?id=' .. id end local function rslLink( id ) -- TODO Implement some sanity checking regex return 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=' .. id .. '&CON_LNG=ENG' end local function leonoreLink( id ) -- Identifiants allant de LH/1/1 à LH/2794/54 (légionnaires) -- Identifiants allant de C/0/1 à C/0/84 (84 légionnaires célèbres) -- Identifiants allant de 19800035/1/1 à 19800035/385/51670 (légionnaires décédés entre 1954 et 1977, et quelques dossiers de légionnaires décédés avant 1954) if not string.match( id, '^LH/%d%d?%d?%d?/%d%d?%d?$' ) and not string.match( id, '^C/0/%d%d?$' ) and not string.match( id, '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) then return false end return '//www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1=' .. id end local function sbnLink( id ) if not string.match( id, '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and not string.match( id, '^IT\\ICCU\\%u%u[%d%u]%u\\%d%d%d%d%d%d$' ) then return false end return 'http://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid=' .. id end local function nkcLink( id ) return 'http://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=' .. id .. '&CON_LNG=ENG' end local 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' end local function ndlLink( id ) return 'http://id.ndl.go.jp/auth/ndlna/' .. id end local 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 end local 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' end local 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' end local 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 local function append(str, c, length) while str:len() < length do str = c .. str end return str end local function lccnLink( id ) local parts = splitLccn( id ) if not parts then return false end local lccnType = parts[1] ~= 'sh' and 'names' or 'subjects' id = parts[1] .. parts[2] .. append( parts[3], '0', 6 ) return 'http://id.loc.gov/authorities/' .. lccnType .. '/' .. id end local function mbLink( id ) -- TODO Implement some sanity checking regex return '//musicbrainz.org/artist/' .. id end --Returns the ISNI check digit isni must be a string where the 15 first elements are digits local 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 --Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid --See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier local 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 local function isniLink( id ) id = validateIsni( id ) if not id then return false end return 'http://isni-url.oclc.nl/isni/' .. id end local 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 'http://orcid.org/' .. id end local function gndLink( id ) return 'http://d-nb.info/gnd/' .. id end local function selibrLink( id ) if not string.match( id, '^%d+$' ) then return false end return '//libris.kb.se/auth/' .. id end local 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 end local function bnfLink2( id ) --Add cb prefix if it has been removed if not string.match( id, '^cb.+$' ) then id = 'cb' .. id end return 'http://data.bnf.fr/ark:/12148/' .. id end local function bpnLink( id ) if not string.match( id, '^%d+$' ) then return false end return 'http://www.biografischportaal.nl/en/persoon/' .. id end local function ridLink( id ) return 'http://www.researcherid.com/rid/' .. id end local function bibsysLink( id ) return 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid' end local function ulanLink( id ) return '//www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id end local function nlaLink( id ) return '//nla.gov.au/anbd.aut-an' .. id end local function getIdsFromWikidata( item, property ) local ids = {} if not item.claims[property] then return ids end for _, statement in pairs( item.claims[property] ) do table.insert( ids, statement.mainsnak.datavalue.value ) end return ids end local 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 local function createRow( id, label, rawValue, link ) if link then return '* [' .. link .. ' ' .. label .. ']\n' else return '* <span class="error">' .. id .. '-identifikatoren ' .. rawValue .. ' er ikke gyldig.</span>[[Kategori:Artikler med feilaktige autoritetsdata]]\n' end end --In this order: name of the parameter, label, propertyId in Wikidata, formatting function local conf = { { 'BIBSYS', 'BIBSYS', 1015, bibsysLink }, { 'VIAF', 'VIAF', 214, viafLink }, { 'GND', 'GND', 227, gndLink }, { 'LCCN', 'LCCN', 244, lccnLink }, { 'ISNI', 'ISNI', 213, isniLink }, { 'BNF', 'BNF', 268, bnfLink }, { 'BNF2', 'BNF (data)', 268, bnfLink2 }, { 'MBA', 'MusicBrainz', 434, mbLink }, { 'ORCID', 'ORCID', 496, orcidLink }, { 'SELIBR', 'LIBRIS', 906, selibrLink }, { 'SUDOC', 'SUDOC', 269, sudocLink }, { 'BPN', 'BPN', 651, bpnLink }, { 'RID', 'ResearcherID', 0, ridLink }, { 'ULAN', 'ULAN', 245, ulanLink }, { 'HDS', 'HDS', 902, hlsLink }, { 'LIR', 'LIR', 886, lirLink }, { 'MGP', 'MGP', 549, mgpLink }, { 'NLA', 'NLA', 409, nlaLink }, { 'NDL', 'NDL', 349, ndlLink }, { 'NCL', 'NCL', 1048, nclLink }, { 'NKC', 'NKC', 691, nkcLink }, { 'Léonore', 'Léonore', 640, leonoreLink }, { 'SBN', 'ICCU', 396, sbnLink }, { 'RLS', 'RLS', 947, rslLink }, { 'Botanist', 'Botanist', 428, botanistLink }, { 'NARA-person', 'NARA', 1222, narapersonLink }, { 'NARA-organization', 'NARA', 1223, naraorganizationLink }, { 'USCongress', 'US Congress', 1157, uscongressLink }, { 'BNE', 'BNE', 950, bneLink }, { 'CINII', 'CiNii', 271, ciniiLink }, { 'TLS', 'TLS', 0, tlsLink }, { 'SIKART', 'SIKART', 781, sikartLink }, { 'KULTURNAV', 'KulturNav', 1248, kulturnavLink }, { 'GEONAMES', 'GeoNames', 1566, geonamesLink }, } -- 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 { 31, 5741069 }, -- instance of -> rock band } local p = {} function p.authorityControl( frame ) --Create rows local elements = {} --Collect info from Wikidata local authCtrls = {} local rct = 0 local item = mw.wikibase.getEntity() if item ~= nil and item.claims ~= nil then for _, params in pairs( conf ) do if params[3] ~= 0 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 authCtrls[params[1]] = wikidataIds[1] rct = rct + 1 if rct == 7 then break end -- Display max 7 entries end end end end end if rct == 0 then return '' end -- Skip box when no info --Worldcat if authCtrls['LCCN'] and authCtrls['LCCN'] ~= '' then local lccnParts = splitLccn( authCtrls['LCCN'] ) if lccnParts then table.insert(elements, createRow('WorldCat', 'WorldCat', authCtrls['LCCN'], '//www.worldcat.org/identities/lccn-' .. lccnParts[1] .. lccnParts[2] .. '-' .. lccnParts[3])) end end --Configured rows for k, params in pairs( conf ) do local val = authCtrls[params[1]] if val and val ~= '' then table.insert(elements, createRow(params[1], params[2], val, params[4](val))) end end local Navbox = require('Module:Navbox') return Navbox._navbox( { name = 'Autoritetsdata', bodyclass = 'hlist', group1 = '[[Autoritetsdata]]', list1 = table.concat( elements ) } ) end return p
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Mal som brukes på denne siden:
Modul:Authority control/sandkasse/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon