Modul:WikidataUtils/Football
Aspect

local Wikidata = require('Modul:Wikidata')
local prependIfMissing = require('Modul:StringUtils')._prependIfMissing
local NATIONAL_TEAM_TYPES = {'6979593', '21945604', '58840819', '45053817'}
local p = {}
p.isNationalTeam = function(teamId)
local teamTypeIds = Wikidata.getEntityIdsList(prependIfMissing({teamId, 'Q'}), 'P31')
local isNational = false
for teamTypeIdN, teamTypeIdV in pairs(teamTypeIds) do
-- verify if item is instance of "association football national team"
for _,eachNTType in ipairs(NATIONAL_TEAM_TYPES) do
if tostring(teamTypeIdV) == eachNTType then isNational = true end
end
local teamTypeSuperClasses = Wikidata.getEntityIdsList(prependIfMissing({tostring(teamTypeIdV), 'Q'}), 'P279')
if teamTypeSuperClasses then for _,eachTeamTypeSuperClass in pairs(teamTypeSuperClasses) do
if tostring(eachTeamTypeSuperClass) == '6979593' or tostring(eachTeamTypeSuperClass) == '21945604' then isNational = true end
end end
end
return isNational
end
p.getNationalTeamName = function(teamId)
if not teamId then return nil end
local shortNameClaims = Wikidata.loadOneValueInChain({teamId, 'P1813'})
if shortNameClaims then return shortNameClaims end
local country4sport = Wikidata.loadOneValueInChain({teamId, 'P1532', 'label'}) or ""
local compClassClaims = mw.wikibase.getBestStatements(teamId, 'P2094')
if not compClassClaims then return country4sport end
for _,eachcompClassClaim in ipairs(compClassClaims) do
if Wikidata.hasValueSnak(eachcompClassClaim) then
local compClassCompClassClaims = mw.wikibase.getBestStatements(eachcompClassClaim.mainsnak.datavalue.value.id, 'P2094')
if compClassCompClassClaims then
for _,eachCompClassCompClassClaim in ipairs(compClassCompClassClaims) do
if Wikidata.hasValueSnak(eachCompClassCompClassClaim) and eachCompClassCompClassClaim.qualifiers and eachCompClassCompClassClaim.qualifiers['P1013']
and eachCompClassCompClassClaim.qualifiers['P1013'][1] and eachCompClassCompClassClaim.qualifiers['P1013'][1].datavalue.value.id == 'Q185836' then
if eachCompClassCompClassClaim.mainsnak.datavalue.value.id == 'Q2735683' then
local success, isBTeam = pcall(mw.wikibase.getReferencedEntityId, teamId, 'P31', { 'Q45053817' } )
if success and isBTeam then return country4sport .. ' B' end
return country4sport
end
local ageGroupName = Wikidata.findLabel(eachCompClassCompClassClaim.mainsnak.datavalue.value.id)
for _,eachPattern in ipairs({'U(%d+)', 'under%-(%d+)', 'sub (%d+)', 'Under%-(%d+)'}) do
local uStart, uEnd, uMatch = mw.ustring.find(ageGroupName, eachPattern)
if uMatch then return country4sport .. ' U' .. uMatch end
end
end
end
end
end
end
return country4sport
end
return p