Modul:External links/conf/Autoritetsdata

Fra Wikipedia, den frie encyklopedi
Hopp til navigering Hopp til søk
Dokumentasjonsikon Moduldokumentasjon [vis] [rediger] [historikk] [oppdater]

Modulen "External links/conf/Autoritetsdata" inneholder konfigurasjon som brukes av Modul:External links

Det er i variabelen configured_claims en rekke rader som beskriver hvilke wikidata-egenskaper som skal benyttes for å lage eksterne lenker i artikler. Disse radene er bygd opp på følgende måte:

{ prop='Pnnnn', message ="$3 [$2 ''$1''] <beskrivelse>", short="[$2 <tekst>]", langcode ='aa', url="...", url_f=<function>, regex="...", genitiv=<boolean>, track=<boolean> },

Hvor følgende er tilfelle:

  • prop - er property-navnet som skal behandles.
    • Pnnnn - Dersom denne er en "P" etterfulgt av et nummer (Pnnnn), antas det at dette er et Property-nummer på Wikidata som skal sjekkes. F.eks. P345 som da er nummeret for IMDB sine lenker. Hvis dette finnes for artikkelen, vil en ekstern lenke for denne egenskapen potensielt vises frem.
    • SLaaaa - Dersom denne består av "SL" etterfulgt av et interwikinavn, f.eks. SLspecieswiki, vil det forsøkes å hente navnet på tilsvarende artikkel på den andre wikien, med understreker for mellomrom.
    • Dersom det er et annet property-navn, behandles dette som en ren lokal definisjon og trenger å få verdien/identifikatoren fra oppkallet av modulen. Se eksempel nedenfor.
  • message - er teksten som skal vises frem i artikkelen. Denne har to spesial-verdier: $1 og $2. Disse to vil erstattes med følgende:
    • $1 - Erstattes med artikkel-navnet. Se også genitiv under.
    • $2 - Erstattes med den rå-URL'en til den eksterne lenken. F.eks. http://www.imdb.com/title/tt0085255/
    • $3 - Erstattes med en språkkode. F.eks. (en) for engelsk språk. Se langcode.
    • $4 - Erstattes av selve verdien.
    • $5 - Erstattes av en URI-formatert versjon av selve verdien.
  • short - er en kort-versjon av teksten om skal vises frem. Denne har to spesial-verdier: $1 og $2. Disse to vil erstattes tilsvarende som for message ovenfor.
  • langcode - Her legges inn språkkoden for nettstedet. Denne brukes for å lage en indikasjon på hvilket språk nettstedet er skrevet. Dersom en P-verdi legges inn her, vil modulen lete etter denne P-verdien som en qualifier under P305 (verkets språk). Det er pr. i dag kun støttet P407 her.
  • url_f - Her kan det legges inn en formaterings-funksjon for URL'ene som skal kalles opp. Dette er kun navnet på funksjonen (som må være definert lokalt ovenfor configured_claims i denne modulen. Funksjonen vil kalles opp med én variabel som er identifikatoren som kommer fra wikidata eller lokalt og det forventes en ferdig rå-URL tilbake. Eksempel: url_f=imdb_formatter. Denne funksjonen er første prioritet ved valg mellom flere muligheter.
  • url - Her kan det legges inn URL'en som skal kalles opp. Eksempel: url="http://www.imdb.com/tt/$1". Denne strengen er andre prioritet ved valg mellom flere muligheter. Denne har en spesial-verdi: $1 som vil erstattes med følgende:
    • $1 - Erstattes med identifikatoren som kommer fra wikidata eller lokalt.
  • regex - Her kan det legges inn en regexp-streng som vil brukes for å verifisere at identifikatoren som kommer fra wikidata eller lokalt har korrekt format. Eksempel: regex="tt\\d+". Dersom denne er definert, identifikatoren passere denne testen først. Hvis det finnes relevante regexp-strenger på wikidata, vil disse sjekkes også, men etter denne.
  • genitiv - Dette er en variabel som bestemmer om det skal brukes genitiv på artikkelnavnet som erstatter $1 (se over). Denne kan enten være true (sann) eller false (usann).
  • track - Dette er en variabel som bestemmer om bruken av denne egenskapen skal melde inn artikkelen i en kategori. Kategorien styres av definisjonen lenger ned (['tracking-cat-found-data'] eller ['tracking-cat-found-local']). Denne kan enten være true (sann) eller false (usann).

Se også definisjonen av maksimum antall lenker som vil vises frem i artiklene i variabelen limits som ['links-shown'] = 10


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 function nkr_formatter( id )
	return id
end

local configured_claims = {}
configured_claims['nb'] = {
	{ prop='P4574',  message ="$3 [$2 ''$1''] i Historisk befolkningsregister", short="[$2 Historisk befolkningsregister]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P4342',  message ="$3 [$2 ''$1''] i Store norske leksikon", short="[$2 Store norske leksikon]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5080',  message ="$3 [$2 ''$1''] i Norsk biografisk leksikon", short="[$2 Norsk biografisk leksikon]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5081',  message ="$3 [$2 ''$1''] i Norsk kunstnerleksikon", short="[$2 Norsk kunstnerleksikon]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5082',  message ="$3 [$2 ''$1''] i Store medisinske leksikon", short="[$2 Store medisinske leksikon]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5871',  message ="$3 ''$1'' i Norsk krigsflyktningregister", short="Kjesæter $2", langcode ='no', genitiv = true, url_f=nkr_formatter }, -- if this exist, then we must make sure it is included
	{ prop='P5165',  message ="$3 [$2 ''$1''] hos Norsk pop- og rock leksikon", short="[$2 NPRL]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5171',  message ="$3 [$2 ''$1''] hos Rockipedia (album)", short="[$2 Rockipedia (album)]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5172',  message ="$3 [$2 ''$1''] hos Rockipedia (artist)", short="[$2 Rockipedia (artist)]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5173',  message ="$3 [$2 ''$1''] hos Rockipedia (area)", short="[$2 Rockipedia (area)]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5174',  message ="$3 [$2 ''$1''] hos Rockipedia (label)", short="[$2 Rockipedia (label)]", 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='P1847',  message ="$3 [$2 ''$1''] hos nb.no (nmff)", short="[$2 NMFF]", langcode ='nb', genitiv = false },
	{ prop='P1980',  message ="$3 [$2 ''$1''] hos NSD (PolSys)", short="[$2 PolSys]", langcode ='nb', genitiv = false },
	{ prop='P3072',  message ="$3 [$2 ''$1''] hos Stortinget", short="[$2 Stortinget]", langcode ='nb', genitiv = false },
	{ prop='P214',  message ="$3 [$2 ''$1''] hos VIAF", short="[$2 VIAF]", langcode ='en', genitiv = false },
	{ prop='P243',  message ="$3 [$2 ''$1''] hos WorldCat", short="[$2 OCLC]", 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='P236',  message ="$3 [$2 ''$1''] hos ISSN", short="[$2 ISSN]", 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='P5587',  message ="$3 [$2 ''$1''] hos LIBRIS", short="[$2 LIBRIS]", langcode ='sv', 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='P1417',  message ="$3 [$2 ''$1''] hos Encyclopædia Britannica", short="[$2 Encyclopædia Britannica]", langcode ='en', genitiv = false },
	{ prop='P3219',  message ="$3 [$2 ''$1''] hos Encyclopædia Universalis", short="[$2 Encyclopædia Universalis]", langcode ='fr', genitiv = false },
	{ prop='P5395',  message ="$3 [$2 ''$1''] hos Canadian Encyclopedia", short="[$2 Canadian Encyclopedia]", 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='P1955',  message ="$3 [$2 ''$1''] hos Discogs (label)", short="[$2 Discogs (label)]", langcode ='en', genitiv = false },
	{ prop='P1728',  message ="$3 [$2 ''$1''] hos AllMusic (artist)", short="[$2 AllMusic (artist)]", langcode ='en', 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 },
	{ prop='P2038',  message ="$3 [$2 ''$1''] i ResearchGate", short="[$2 ResearchGate]", langcode ='en', genitiv = false },
	{ prop='P4972',  message ="$3 [$2 ''$1''] i Norsk krigsseilerregister", short="[$2 Krigsseilerregisteret]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P5156',  message ="$3 [$2 ''$1''] i Norsk krigsseilerregister skip", short="[$2 Krigsseilerregisteret]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
	{ prop='P7626',  message ="$3 [$2 ''$1''] i NVE vannkraftdatabase", short="[$2 NVE-ID]", langcode ='no', genitiv = true }, -- if this exist, then we must make sure it is included
}
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'] = 16,		-- 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