Modul:External links/conf/Autoritetsdata

Fra MotorWiki
Hopp til navigering Hopp til søk

Dokumentasjon for denne modulen kan opprettes på Modul:External links/conf/Autoritetsdata/dok

local function bibsys_formatter( id )
	-- return 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid'
	return 'http://bibsys-almaprimo.hosted.exlibrisgroup.com/primo_library/libweb/action/dlSearch.do?institution=BIBSYS&vid=BIBSYS&search_scope=blended_scope&query=lsr39,exact,' .. id:gsub('^x0*', '')
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 isni_formatter( id )
	id = validateIsni( id )
	if not id then
		return false
	end
	return 'http://isni.org/' .. id
end

local function bnfdata_formatter( 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 configured_claims = {}
configured_claims['nb'] = {
	{ prop='P4574',  message ="$3 [$2 ''$1''] i Historisk befolkningsregister", short="[$2 HB]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P1015',  message ="$3 [$2 ''$1''] hos BIBSYS", short="[$2 BIBSYS]", langcode ='nb', genitiv = false, url_f=bibsys_formatter },
	{ prop='P214',  message ="$3 [$2 ''$1''] hos VIAF", short="[$2 VIAF]", langcode ='en', genitiv = false },
	{ prop='P227',  message ="$3 [$2 ''$1''] hos GND", short="[$2 GND]", langcode ='de', genitiv = false },
	{ prop='P244',  message ="$3 [$2 ''$1''] hos LCCN", short="[$2 LCCN]", langcode ='en', genitiv = false },
	{ prop='P213',  message ="$3 [$2 ''$1''] hos ISNI", short="[$2 ISNI]", langcode ='en', genitiv = false, url_f=isni_formatter },
	{ prop='P268',  message ="$3 [$2 ''$1''] hos BNF", short="[$2 BNF]", langcode ='fr', genitiv = false },
	{ prop='P268',  message ="$3 [$2 ''$1''] hos BNF2", short="[$2 BNF (data)]", langcode ='fr', genitiv = false, url_f=bnfdata_formatter },
	{ prop='P496',  message ="$3 [$2 ''$1''] hos ORCID", short="[$2 ORCID]", langcode ='en', genitiv = false },
	{ prop='P906',  message ="$3 [$2 ''$1''] hos LIBRIS", short="[$2 LIBRIS]", langcode ='en', genitiv = false },
	{ prop='P269',  message ="$3 [$2 ''$1''] hos SUDOC", short="[$2 SUDOC]", langcode ='fr', genitiv = false },
	{ prop='P651',  message ="$3 [$2 ''$1''] hos BPN", short="[$2 BPN]", langcode ='en', genitiv = false },
	{ prop='P1053',  message ="$3 [$2 ''$1''] hos ResearcherID", short="[$2 ResearcherID]", langcode ='en', genitiv = false },
	{ prop='P245',  message ="$3 [$2 ''$1''] hos ULAN", short="[$2 ULAN]", langcode ='en', genitiv = false },
	{ prop='P902',  message ="$3 [$2 ''$1''] hos HDS", short="[$2 HDS]", langcode ='en', genitiv = false },
	{ prop='P886',  message ="$3 [$2 ''$1''] hos LIR", short="[$2 LIR]", langcode ='en', genitiv = false },
	{ prop='P549',  message ="$3 [$2 ''$1''] hos MGP", short="[$2 MGP]", langcode ='en', genitiv = false },
	{ prop='P409',  message ="$3 [$2 ''$1''] hos NLA", short="[$2 NLA]", langcode ='en', genitiv = false },
	{ prop='P349',  message ="$3 [$2 ''$1''] hos NDL", short="[$2 NDL]", langcode ='en', genitiv = false },
	{ prop='P1048',  message ="$3 [$2 ''$1''] hos NCL", short="[$2 NCL]", langcode ='en', genitiv = false },
	{ prop='P691',  message ="$3 [$2 ''$1''] hos NKC", short="[$2 NKC]", langcode ='en', genitiv = false },
	{ prop='P640',  message ="$3 [$2 ''$1''] hos Léonore", short="[$2 Léonore]", langcode ='en', genitiv = false },
	{ prop='P396',  message ="$3 [$2 ''$1''] hos ICCU", short="[$2 ICCU]", langcode ='en', genitiv = false },
	{ prop='P947',  message ="$3 [$2 ''$1''] hos RLS", short="[$2 RLS]", langcode ='en', genitiv = false },
	{ prop='P428',  message ="$3 [$2 ''$1''] hos Botanist", short="[$2 Botanist]", langcode ='en', genitiv = false },
	{ prop='P1222',  message ="$3 [$2 ''$1''] hos NARA", short="[$2 NARA]", langcode ='en', genitiv = false },
	{ prop='P1223',  message ="$3 [$2 ''$1''] hos NARA", short="[$2 NARA]", langcode ='en', genitiv = false },
	{ prop='P1157',  message ="$3 [$2 ''$1''] hos US Congress", short="[$2 US Congress]", langcode ='en', genitiv = false },
	{ prop='P950',  message ="$3 [$2 ''$1''] hos BNE", short="[$2 BNE]", langcode ='en', genitiv = false },
	{ prop='P271',  message ="$3 [$2 ''$1''] hos CiNii", short="[$2 CiNii]", langcode ='en', genitiv = false },
	{ prop='P1362',  message ="$3 [$2 ''$1''] hos TLS", short="[$2 TLS]", langcode ='en', genitiv = false },
	{ prop='P781',  message ="$3 [$2 ''$1''] hos SIKART", short="[$2 SIKART]", langcode ='en', genitiv = false },
	{ prop='P646',  message ="$3 [$2 ''$1''] hos Freebase", short="[$2 Freebase]", langcode ='en', genitiv = false },
	{ prop='P1248',  message ="$3 [$2 ''$1''] hos KulturNav", short="[$2 KulturNav]", langcode ='en', genitiv = false },
	{ prop='P2287',  message ="$3 [$2 ''$1''] hos CRIStin", short="[$2 CRIStin]", langcode ='en', genitiv = false },
	{ prop='P1566',  message ="$3 [$2 ''$1''] hos GeoNames", short="[$2 GeoNames]", langcode ='en', genitiv = false },
	{ prop='P1850',  message ="$3 [$2 ''$1''] hos SSR (navn)", short="[$2 SSR (navn)]", langcode ='en', genitiv = false },
	{ prop='P1732',  message ="$3 [$2 ''$1''] hos Naturbase", short="[$2 Naturbase]", langcode ='en', genitiv = false },
	{ prop='P1866',  message ="$3 [$2 ''$1''] hos CatolicDiocese", short="[$2 CatolicDiocese]", langcode ='en', genitiv = false },
	{ prop='P1305',  message ="$3 [$2 ''$1''] hos SkyscraperCenter", short="[$2 SkyscraperCenter]", langcode ='en', genitiv = false },
	{ prop='P1617',  message ="$3 [$2 ''$1''] hos BBC Things", short="[$2 BBC Things]", langcode ='en', genitiv = false },
	{ prop='P2333',  message ="$3 [$2 ''$1''] hos BR orgnr", short="[$2 BR orgnr]", langcode ='en', genitiv = false },
	{ prop='P2355',  message ="$3 [$2 ''$1''] hos UNESCO lang", short="[$2 UNESCO lang]", langcode ='en', genitiv = false },
	--{ prop='P758',  message ="$3 [$2 ''$1''] hos Riksantikvaren (nor)", short="[$2 Riksantikvaren (nor)]", langcode ='en', genitiv = false },
	{ prop='P1284',  message ="$3 [$2 ''$1''] hos Munzinger (iba)", short="[$2 Munzinger (iba)]", langcode ='en', genitiv = false },
	{ prop='P1285',  message ="$3 [$2 ''$1''] hos Munzinger (sport)", short="[$2 Munzinger (sport)]", langcode ='en', genitiv = false },
	{ prop='P1286',  message ="$3 [$2 ''$1''] hos Munzinger (pop)", short="[$2 Munzinger (pop)]", langcode ='en', genitiv = false },
	{ prop='P434',  message ="$3 [$2 ''$1''] hos MusicBrainz (artist)", short="[$2 MusicBrainz (artist)]", langcode ='en', genitiv = false },
	{ prop='P436',  message ="$3 [$2 ''$1''] hos MusicBrainz (release-group)", short="[$2 MusicBrainz (release-group)]", langcode ='en', genitiv = false },
	{ prop='P966',  message ="$3 [$2 ''$1''] hos MusicBrainz (label)", short="[$2 MusicBrainz (label)]", langcode ='en', genitiv = false },
	{ prop='P982',  message ="$3 [$2 ''$1''] hos MusicBrainz (area)", short="[$2 MusicBrainz (area)]", langcode ='en', genitiv = false },
	{ prop='P1953',  message ="$3 [$2 ''$1''] hos Discogs (artist)", short="[$2 Discogs (artist)]", langcode ='en', genitiv = false },
	{ prop='P1728',  message ="$3 [$2 ''$1''] hos AllMusic (artist)", short="[$2 AllMusic (artist)]", langcode ='en', genitiv = false },
	{ prop='P1847',  message ="$3 [$2 ''$1''] hos nb.no (nmff)", short="[$2 NMFF]", langcode ='nb', genitiv = false },
	{ prop='P804',  message ="$3 [$2 ''$1''] hos US Geological Survey's Geographic Names Information System", short="[$2 GNIS]", langcode ='en', genitiv = false },
	{ prop='P590',  message ="$3 [$2 ''$1''] hos US Geological Survey's Geographic Names Information System", short="[$2 GNIS]", langcode ='en', genitiv = false },
	{ prop='P3230',  message ="$3 [$2 ''$1''] i SCAR Composite Gazetteer of Antarctica", short="[$2 SCAR]", langcode ='en', genitiv = false },
	
}
local messages_conf = {}
messages_conf['nb'] = {
	['short-list-separator'] = " '''·''' ",
	['no-data-cat'] = '[[Kategori:Artikler uten autoritetsdatalenker fra Wikidata]]',
	['with-data-cat'] = '[[Kategori:Artikler med autoritetsdatalenker fra Wikidata]]',
	['with-local-cat'] = '[[Kategori:Artikler med autoritetsdatalenker fra lokale verdier]]',
	['no-data-text'] = "''Artikkelen har ingen egenskaper for autoritetsdata i Wikidata''",
	['no-wikilink'] = "''Artikkelen mangler oppslag i Wikidata''",
	['no-wikilink-cat'] = "[[Kategori:Artikler med autoritetsdatalenker og uten kobling til Wikidata]]",
	['track-cat-wd-wd'] = '[[Kategori:Artikler med autoritetsdatalenker for $1 fra Wikidata]]',
	['track-cat-local-local'] = '[[Kategori:Artikler med autoritetsdatalenker for $1 lokalt]]',
	['track-cat-wd-local'] = '[[Kategori:Artikler med autoritetsdatalenker med $1 fra Wikidata men verdi lokalt]]',
	['track-cat-local-wd'] = '[[Kategori:Artikler med autoritetsdatalenker med $1 definert lokalt men verdi fra Wikidata]]',
	['track-cat-local-wd-equal'] = '[[Kategori:Artikler med autoritetsdatalenker hvor $1 sin verdi lokalt er lik med Wikidata]]',
	['track-cat-local-wd-unequal'] = '[[Kategori:Artikler med autoritetsdatalenker hvor $1 sin verdi lokalt er ulik Wikidata]]',
}
local limits = {
	['links-shown'] = 10,		-- maximum number of links shown in the article.
}


local p = {}

function p.getConfiguredClaims (self, lang)
	return configured_claims[lang]
end

function p.getMessage (self, lang, msg)
	return messages_conf[lang][msg] 
end

function p.getLimits (self)
	return limits
end

-- metatable for the export
local mt = {
	-- adjust the installation of the module
	['__call'] = function (self, lang)
		self.configured_claims = configured_claims[lang]
		self.messages_conf = messages_conf[lang]
		return self
	end
}

-- install the metatable
setmetatable(p, mt)

return p