GUIDA ALL'IMPLEMENTAZIONE DEL MODELLO ASTRATTO PER PER LA SCHEDA CENSIMENTO PELL
Nome file: CensusTechSheet-ImplementationGuide.html
Versione: 2.0
Ultimo aggiornamento: 13/05/2022
Note: Questo documento puo' essere visualizzato correttamente con browser Mozilla, Opera, Chrome e IE (versioni < 8.x)

Indice

1. Contesto
Questo documento costituisce una guida all'implementazione in formato XML del Modello Dati definito dalle "Specifiche di contenuto di riferimento PELL - illuminazione pubblica - versione 2.0 (del 25 marzo 2021)" [1].
Le istanze XML implementate secondo la struttura qui descritta devono essere valide rispetto allo schema CensusTechSheet.xsd [3] e che costituisce l'UNICO riferimento normativo per la validita' dei documenti XML; tale XML Schema utilizza le specifiche OpenGIS, in particolare il vocabolario appartenente al namespace "http://www.opengis.net/gml/3.2".
2. Retrocompatibilità della versione 2.0 con la versione 1.1
La versione 2.0 delle delle "Specifiche di contenuto di riferimento PELL - illuminazione pubblica" ha apportato modifiche alla struttura e al contenuto della Scheda Censimento XML che hanno richiesto l'aggiornamento dell'XML Schema CensusTechSheet.xsd e delle Regole semantiche (il primo rilascio delle versioni aggiornate e' avvenuto l'11 novembre 2021); le modifiche sono state tali da rendere sia CensusTechSheet.xsd che le Regole semantiche NON retrocompatibili con le precedenti versioni.
Questo significa che Schede Censimento valide rispetto alle specifiche versione 1.1, NON sono valide rispetto alle specifiche versione 2.0.
Le modifiche apportate alla struttura della Scheda Censimento (quindi all' XML Schema) sono le seguenti:
- definito un nuovo elemento LightSpotDeviceRefs: raggruppa gli identificativi punto luce apparecchio (PL_AP_ID - 07081201) afferenti ad una zona omogenea; l'elemento è stato aggiunto ai figli dell'elemento HomogeneousArea
- definito un nuovo elemento PreRenewalConsumptions: implementa l'attributo POD_C_CTEE (07080314); l'elemento e' stato aggiunto ai figli dell'elemento PODConsumptionData
- definito un nuovo elemento SubHomogArea: implementa l'attributo con DataType strutturato ZO_SUB (07081285); l'elemento e' stato aggiunto ai figli dell'elemento HomogeneousArea
- definito un nuovo elemento NumberOfTotalLightSpots: implementa l'attributo AN_IP_T_PL (07080113); l'elemento e' stato aggiunto ai figli dell'elemento PLSystemGeneralData
- definito un nuovo elemento NumberOfCorrespondingOperatingHours: implementa l'attributo POD_C_OREQ (07080315); l'elemento e' stato aggiunto ai figli dell'elemento PODConsumptionData
- definito un nuovo elemento NumberOfSubHomogeneousAreas: implementa l'attributo ZO_SUB_NUM (02); l'elemento e' figlio del nuovo elemento SubHomogArea
- definito un nuovo elemento SubHomogeneousAreaName: implementa l'attributo ZO_SUB_NOM (01); l'elemento e' figlio del nuovo elemento SubHomogArea
- l'elemento IlluminanceLevelValue, gia' definito nell'XSD, è stato usato per implementare il nuovo attributo ZO_SUB_ILL (04); l'elemento e' figlio del nuovo elemento SubHomogArea
- l'elemento AreaSurface, gia' definito nell'XSD, è stato usato per implementare il nuovo attributo ZO_SUB_SUP (05); l'elemento e' figlio del nuovo elemento SubHomogArea
- definito un nuovo elemento SubHomogeneousAreaType: implementa l'attributo ZO_SUB_TY (03); l'elemento e' figlio del nuovo elemento SubHomogArea
- definito un nuovo elemento PercentageOfConnectedLightSpots: implementa l'attributo AN_IP_NTPL (07080112); l'elemento e' stato aggiunto ai figli dell'elemento PLSystemGeneralData
- definito un nuovo elemento PlantStatus implementa l'attributo AN_IP_ANT (07080100); l'elemento e' stato aggiunto ai figli dell'elemento PLSystemGeneralData
- definito un nuovo elemento PublicTenderID: implementa l'attributo POD_C_CIG; l'elemento e' stato aggiunto ai figli dell'elemento PODConsumptionData
- definito un nuovo elemento WholeCityFlag: implementa l'attributo AN_IP_PL_C; l'elemento e' stato aggiunto ai figli dell'elemento PLSystemGeneralData
- definito un nuovo elemento MonthlyConsumption: implementa gli attributi CONS_M (01) e RIF_MES_AN (02); l'elemento e' figlio del nuovo elemento PreRenewalConsumptions
- definito un nuovo elemento LightingCalculationName: implementa l'attributo ZO_CAL_ILL (07081233)
- rimosso l'elemento OtherRoadLightSpotAllocation (ZO_A_DS_S)
- rimosso l'elemento HomogeneousAreaID (ZO_ID - 07080903)
- rimosso l'elemento gml:MultiPoint che implementava la componente spaziale della Zona Omogenea (ZO_POS - 070812101)
- rinominato l'elemento NumberOfLightSpots in NumberOfLightSpotDevices (ZO_NUM_AP - 07081223)
- modificato il set di valori ammessi per l'elemento OperatingStatus (QE_A_STAT - 07080511)
- modificato il set di valori ammessi per l'elemento OtherAreaTypology (ZO_TY_A - 07081204)
- modificato il set di valori ammessi per l'elemento RoadClassificationCode (ZO_CS_CI - 07081205)
- modificato il set di valori ammessi per l'elemento RoadLightSpotAllocation (ZO_DS_S - 07081218)
- ampliato il set di valori ammessi per l'elemento AreaTypology (ZO_TY - 07081203)
- ampliato il set di valori ammessi per l'elemento AdditionalDevice (PL_IS_ELE - 07080911)
- ampliato il set di valori ammessi per l'elemento EquipmentType (PL_IS_SOS - 07080904)
- ampliato il set di valori ammessi per l'elemento LightSpotBrand (PL_AP_MAR - 07081004)
- ampliato il set di valori ammessi per il'elemento LightSpotType (PL_AP_TY - 07081002)
- aggiunti i valori di indeterminatezza al set di valori ammessi per l'elemento SupportRedevelopingNeeds (QE_A_ST_RQ - 07080517)
- aggiunti i valori di indeterminatezza al set di valori ammessi per l'elemento LightSpotRange (PL_AP_AGE - 07081003)
- ampliato il range dei valori ammessi per l'elemento NumberOfLamps (PL_AP_LAMP - 07081007)
- ammesso lo 0 (zero) per l'elemento NumberOfConnectedLightSpots (AN_IP_N_PL - 07080109)
- ammesso il valore nullo per l'elemento ElectricPanelInstalledPower (QE_A_KW - 07080510)
- ammesso il valore nullo per l'elemento ExogenousElectricalLoads (QE_A_CAR_E - 07080516)
- ammesso il valore nullo per l'elemento NominalLuminousFlux (PL_SL_FLU - 07081104)
- proibito il valore nullo per l'elemento ReportingYear (POD_C_DAT - 07080302)
Le modifiche apportate alle Regole semantiche (quindi allo Schematron delle regole) sono le seguenti:
- sono stati aggiornati i seguenti Requisiti: 13, 90, 29, 33, 59, 61
- sono stati introdotti i seguenti Requisiti: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146
- sono state rimossi i seguenti Requisisti: 55, 86, 119, 76, 112, 121, 123
- sono state rimosse le seguenti Raccomandazioni: 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117
AGGIORNAMENTO del 13 maggio 2022
Il 13 maggio 2022 e' stato rilasciato un aggiornamento dell'XML Schema CensusTechSheet.xsd che ha riguardato:
- l'aggiornamento dell'elenco dei codici ISTAT alla piu' recente versione disponibile, ovvero quella del 3 marzo 2022 - pubblicata il 30 marzo 2022 (https://www.istat.it/it/archivio/6789)
- la possibilità di usare l'elemento GeometricComplex, IN ALTERNATIVA al singolo Poligono, in tutti gli elementi della Scheda Censimento in cui era previsto solo il singolo Poligono, ovvero: Ambito omogeneo per la metainformazione (META - 000202), Anagrafica illuminazione pubblica (AN_IP - 070801), Zona_omogenea_estensione (ZO_EXT - 070812102). Questa nuova opzione consente di descrivere superfici composte da Poligoni anche NON adiacenti
Questo aggiornamento NON compromette la retrocompatibilita' dell'XML Schema CensusTechSheet.xsd.
3. Struttura
Tutti i dati che possono essere contenuti nei documenti XML sopracitati sono illustrati nella seguente tabella dove:
1- la colonna 'Elemento' indica gli elementi richiesti (secondo la posizione e la cardinalita' indicate), dove:
- i due numeri che seguono ciascun elemento indicano la sua 'cardinalita'' (numero minimo e massimo di ripetizioni ammesse); il numero minimo uguale a 0 indica un elemento opzionale, il numero minimo maggiore o uguale a 1 indica un elemento obbligatorio;
- il simbolo '+' denota gli elementi 'complessi' ovvero aggregati di dati elementari;
- il simbolo '@' denota un attributo riferito all'elemento che lo precede nella tabella; la condizione d'uso (required, optional, ecc.) e' indicata fra parentesi quadre;
- il costrutto 'CHOICE' indica delle alternative tra piu' elementi; solo uno tra gli elementi proposti nella sua dichiarazione puo' essere inserito nell'elemento XML contenitore;
2- la colonna 'Descrizione' fornisce la mappatura di ciascun elemento verso gli elementi del Modello Dati [1]; in particolare:
- il 'nome esteso' con cui l'elemento è identificato nel modello dati astratto ('Class');
- il 'tag' con cui l'elemento è identificato nel modello dati astratto e nei database sulla base dei quali il modello è stato realizzato ('Label')
- il 'codice' con cui l'elemento è identificato nel Modello Dati ('Code')
- la descrizione dell'elemento('Definition')
- l'eventuale lista di codici da utilizzare per l'elemento ('codelist info')
- eventuali altri vincoli sul contentuto dell'elemento, ad esempio massima lunghezza caratteri ('facets info info')
- il tipo da cui è stato derivato l'elemento ('derivation info')
- il riferimento a eventuali REGOLE SEMANTICHE sull'elemento o sui suoi figli ('BusinessRuleGroup').
NOTA BENE: gli elementi/attributi il cui nome e' preceduto dal prefisso "gml" appartengono al namespace "http://www.opengis.net/gml/3.2"
ElementoDescrizione
+*CensusTechSheet
4. Regole semantiche
Al fine di favorire la corretta compilazione delle Schede Censimento, PELL ha individuato dei set di Requisiti e Raccomandazioni applicabili al contenuto dei documenti XML.
Requisiti e Racomandazioni sono descritti nel dettaglio nelle Linee Guida [2]; qui si riporta l'implementazione in regole Schematron che ne è stata fatta per consentire la loro verifica (validazione) automatica sui documenti XML.
Il file Schematron contenente le Regole Semantiche è disponibile nella sezione download della piattaforma PELL [4].
Come leggere la tabella:
1- la tabella elenca l'insieme di elementi (individuati tramite XPath) della Scheda Censimento XML soggetti ad una o piu' regole (righe con sfondo grigio).
2- per ogni regola vengono indicati:
- la sua descrizione testuale preceduta dal suo identificatore (l'identificatore costituisce il riferimento al requisito o raccomandazione delle Linee Guida che la regola implementa; ad esempio: [Racc 1] = Raccomandazione 1; [Req 13] = Requisito 13);
- la sintassi XML che la esprime;
- il livello di errore: WARNING (regola che implementa una Raccomandazione: mira a migliorare la qualita' del documento ma non ne compromette la validita') o FATAL (regola che implementa un Requisito: determina la validita' del documento).
PELL - XML-CensusTechSheet
1) /CensusTechSheet
•[Req 13] - Se nel documento non sono presenti quadri elettrici "in disuso", il numero di punti luce totali (PLSystemGeneralData/NumberOfConnectedLightSpots) DEVE essere uguale al numero di punti luce afferenti ai singoli quadri elettrici descritti nel documento (somma dei valori degli elementi //ElectricPanel/ElectricPanelGeneralData/NumberOfConnectedLightSpots). Se nel documento sono presenti quadri elettrici "in disuso", il numero di punti luce totali (PLSystemGeneralData/NumberOfConnectedLightSpots) DEVE essere maggiore o uguale al numero di punti luce afferenti ai singoli quadri elettrici non "in disuso" descritti nel documento (somma dei valori degli elementi //ElectricPanel/ElectricPanelGeneralData/NumberOfConnectedLightSpots aventi il relativo elemento ElectricPanelGeneralData/OperatingStatus diverso da '03'.) e minore o uguale al numero di punti luce afferenti ai singoli quadri elettrici (somma dei valori degli elementi //ElectricPanel/ElectricPanelGeneralData/NumberOfConnectedLightSpots).
((count(//ElectricPanelGeneralData[OperatingStatus = '03']) = 0) and (number(PLSystemGeneralData/NumberOfConnectedLightSpots) = sum(//ElectricPanelGeneralData/NumberOfConnectedLightSpots))) or ((count(//ElectricPanelGeneralData[OperatingStatus = '03']) > 0) and (number(PLSystemGeneralData/NumberOfConnectedLightSpots) >= sum(//ElectricPanelGeneralData[not(OperatingStatus = '03')]/NumberOfConnectedLightSpots)) and (number(PLSystemGeneralData/NumberOfConnectedLightSpots) <= sum(//ElectricPanelGeneralData/NumberOfConnectedLightSpots)))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 144] - Se nel documento non sono presenti quadri elettrici "in disuso", il numero di punti luce di proprietà (NumberOfOwnedLightSpots) DEVE essere uguale al numero totale di punti luce di proprietà afferenti a quadri elettrici del documento. Se nel documento sono presenti quadri elettrici "in disuso", il numero di punti luce di proprietà (NumberOfOwnedLightSpots) DEVE essere maggiore o uguale al numero totale di punti luce di proprietà afferenti a quadri elettrici non "in disuso" e minore o uguale al numero totale di punti luce di proprietà afferenti a quadri elettrici del documento.
((count(//ElectricPanelGeneralData[OperatingStatus = '03']) = 0) and (number(PLSystemGeneralData/NumberOfOwnedLightSpots) = number(sum(//ElectricPanelGeneralData[not(OperatingStatus = '03')]/NumberOfOwnedLightSpots)))) or ((count(//ElectricPanelGeneralData[OperatingStatus = '03']) > 0) and (number(PLSystemGeneralData/NumberOfOwnedLightSpots) >= number(sum(//ElectricPanelGeneralData[not(OperatingStatus = '03')]/NumberOfOwnedLightSpots))) and (number(PLSystemGeneralData/NumberOfOwnedLightSpots) <= number(sum(//ElectricPanelGeneralData/NumberOfOwnedLightSpots))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 141] - La Zona Omogenea DEVE avere i riferimenti a Punti Luce Apparecchio, a meno che nel documento non siano descritti solo quadri elettrici "in disuso".
((count(//ElectricPanelGeneralData[OperatingStatus = '03']) = count(//ElectricPanelGeneralData)) or (not(count(//HomogeneousArea/LightSpotDeviceRefs[@xsi:nil = 'true']) > 0)))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 90] - Se nel documento non sono presenti quadri elettrici "in disuso", il numero di punti luce totali (NumberOfConnectedLightSpots) DEVE essere uguale al numero di punti luce descritti nel documento (numero di blocchi LightSpot). Se nel documento sono presenti quadri elettrici "in disuso", il numero di punti luce totali (PLSystemGeneralData/NumberOfConnectedLightSpots) DEVE essere maggiore o uguale al numero di punti luce descritti nel documento e afferenti a quadri elettrici non "in disuso" (numero di blocchi //LightSpot afferenti a quadri non "in disuso").
((count(//ElectricPanelGeneralData[OperatingStatus = '03']) = 0) and number(PLSystemGeneralData/NumberOfConnectedLightSpots) = count(//LightSpot)) or ((count(//ElectricPanelGeneralData[OperatingStatus = '03']) > 0) and (number(PLSystemGeneralData/NumberOfConnectedLightSpots) >= count(//LightSpot[ElectricPanelID = //ElectricPanelID[ancestor::ElectricPanel[ElectricPanelGeneralData[not(OperatingStatus = '03')]]]])))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 87] - L'identificativo dell'apparecchio (LightSpotDeviceID) DEVE essere univoco all'interno del documento XML.
(count(//LightSpotDevice/LightSpotDeviceID) = count(distinct-values(//LightSpotDevice/normalize-space(LightSpotDeviceID))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 88] - Il codice POD (POD/PODCode) DEVE essere univoco all'interno del documento XML.
(count(//POD/PODCode) = count(distinct-values(//POD/normalize-space(PODCode))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 27] - L'identificativo del quadro (//ElectricPanel/ElectricPanelID) DEVE essere univoco all'interno del documento XML.
(count(//ElectricPanel/ElectricPanelID) = count(distinct-values(//ElectricPanel/normalize-space(ElectricPanelID))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 91] - L'identificativo della zona omogenea (HomogeneousAreaID) DEVE essere univoco all'interno del documento XML.
(count(//HomogeneousArea/HomogeneousAreaID) = count(distinct-values(//HomogeneousArea/normalize-space(HomogeneousAreaID))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 93] - L'id sorgente luminosa (LightSourceID) DEVE essere univoco all'interno del documento XML.
(count(//LightSource/LightSourceID) = count(distinct-values(//LightSource/normalize-space(LightSourceID))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 138] Il CIG DEVE essere lo stesso per tutti i POD descritti nel documento
count(distinct-values(//POD/PODConsumptionData/normalize-space(PublicTenderID))) = 1
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 145] - Se nel documento non ci sono Quadri elettrici in disuso, ogni apparecchio DEVE essere collegato ad una Zona Omogenea.
(count(//ElectricPanelGeneralData/OperatingStatus = '03') > 0) or (count(//LightSpotDevice) = count(distinct-values(//LightSpotDeviceID[ancestor::LightSpotDeviceRefs])))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 147] - La Percentuale punti luce rispetto al totale comunale DEVE essere maggiore di zero, a meno che nel documento non siano descritti solo quadri elettrici "in disuso".
(count(//ElectricPanelGeneralData[OperatingStatus = '03']) = count(//ElectricPanelGeneralData)) or (not(number(PLSystemGeneralData/PercentageOfConnectedLightSpots) = 0))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 120] - Se nel documento sono descritti solo quadri elettrici "in disuso", la Percentuale punti luce rispetto al totale comunale DOVREBBE essere zero.
not(count(//ElectricPanelGeneralData[OperatingStatus = '03']) = count(//ElectricPanelGeneralData)) or (number(PLSystemGeneralData/PercentageOfConnectedLightSpots) = 0)
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
2) /CensusTechSheet/PLSystemGeneralData
•[Req 9] - Se il nome comune (City) occorre più di una volta, ogni occorrenza DEVE avere l'attributo @ln valorizzato e i valori delle varie occorrenze di @ln DEVONO essere distinti.
(count(City) <= 1) or ((count(City[@ln]) = count(City)) and (count(City/@ln) = count(distinct-values(City/@ln))))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 3] - L'attributo XML @uom (unità di misura) dell'elemento Surface DOVREBBE essere presente e valorizzato con il valore prefissato "km2".
not(Surface) or (Surface[@uom = 'km2'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 15] - Il numero di punti luce di proprietà (NumberOfOwnedLightSpots) DEVE essere minore o uguale al numero di punti luce totali descritti nel singolo documento XML (NumberOfConnectedLightSpots).
number(NumberOfConnectedLightSpots) >= number(NumberOfOwnedLightSpots)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 127] - Il numero di punti luce di proprietà (NumberOfOwnedLightSpots) DEVE essere minore o uguale alla somma dei punti luce indicati nei singoli quadri elettrici.
number(NumberOfOwnedLightSpots) <= sum(//ElectricPanelGeneralData/NumberOfConnectedLightSpots)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 137] - Se valorizzato, il numero totale punti luce comunali (NumberOfTotalLightSpots) DEVE essere maggiore o uguale al numero di punti luce associati all'anagrafica ed inseriti nella scheda.
(NumberOfTotalLightSpots[@xsi:nil = 'true']) or (number(NumberOfTotalLightSpots) >= number(NumberOfConnectedLightSpots))
Se questa regola viene violata il documento NON E' VALIDO .
3) //PODGeneralData
•[Req 18] - Se il numero quadri elettrici da sostituire (NumberOfElectricPanelsToBeChanged) e/o il numero quadri elettrici da ricondizionare (NumberOfElectricPanelsToBeReconditioned) afferenti un POD sono indicati, la loro somma DEVE essere minore o uguale al numero di quadri elettrici (NumberOfElectricPanels) del POD.
((NumberOfElectricPanelsToBeChanged[@xsi:nil = 'true']) and (NumberOfElectricPanelsToBeReconditioned[@xsi:nil = 'true'])) or (number(NumberOfElectricPanels) >= (number(NumberOfElectricPanelsToBeChanged) + number(NumberOfElectricPanelsToBeReconditioned))) or ((number(NumberOfElectricPanels) >= number(NumberOfElectricPanelsToBeChanged)) and (NumberOfElectricPanelsToBeReconditioned[@xsi:nil = 'true'])) or ((number(NumberOfElectricPanels) >= number(NumberOfElectricPanelsToBeReconditioned)) and (NumberOfElectricPanelsToBeChanged[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 19] - Il numero di quadri elettrici afferenti il POD (NumberOfElectricPanels) DEVE essere uguale al numero di quadri elettrici (numero di blocchi //ElectricPanel) afferenti quello stesso POD descritti nel documento XML.
(NumberOfElectricPanels) = count(//ElectricPanel[PODCode = $podCode])
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 4] - Se non nullo, il numero quadri elettrici da sostituire (NumberOfElectricPanelsToBeChanged) afferenti il POD DOVREBBE essere uguale al numero di quadri elettrici collegati a quel POD aventi stato di conservazione = "da sostituire" (ElectricPanel/ElectricPanelGeneralData/PreservationStatus = "04").
(NumberOfElectricPanelsToBeChanged[@xsi:nil = 'true']) or ((NumberOfElectricPanelsToBeChanged) = count(//ElectricPanel[PODCode = $podCode]/ElectricPanelGeneralData[PreservationStatus = '04']))
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 5] - Se non nullo, il numero quadri elettrici da ricondizionare (NumberOfElectricPanelsToBeReconditioned) DOVREBBE essere uguale al numero di quadri elettrici collegati al POD e aventi stato di conservazione = "da mettere a norma" o "da manutenere" (numero di blocchi ElectricPanel aventi ElectricPanelGeneralData/PreservationStatus = "02" o = "03").
(NumberOfElectricPanelsToBeReconditioned[@xsi:nil = 'true']) or ((NumberOfElectricPanelsToBeReconditioned) = count(//ElectricPanel[PODCode = $podCode]/ElectricPanelGeneralData[PreservationStatus = '02' or PreservationStatus = '03']))
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
4) //PODConsumptionData
•[Racc 6] - L'attributo XML @uom (unità di misura) dell'elemento InstalledPower DOVREBBE essere presente e valorizzato con il valore prefissato "kW".
not(InstalledPower) or (InstalledPower[@uom = 'kW']) or (InstalledPower[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 7] - L'attributo XML @uom (unità di misura) dell'elemento PreviousYearAnnualConsumption DOVREBBE essere presente e valorizzato con il valore prefissato "kWh".
not(PreviousYearAnnualConsumption) or (PreviousYearAnnualConsumption[@uom = 'kWh'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 8] - L'attributo XML @uom (unità di misura) dell'elemento ContractuallyCommittedPower DOVREBBE essere presente e valorizzato con il valore prefissato "kW".
not(ContractuallyCommittedPower) or (ContractuallyCommittedPower[@uom = 'kW'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 9] - L'attributo XML @uom (unità di misura) dell'elemento CurrentYearAnnualConsumption DOVREBBE essere presente e valorizzato con il valore prefissato "kWh".
not(CurrentYearAnnualConsumption) or (CurrentYearAnnualConsumption[@uom = 'kWh'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento PreviousYearElectricEnergyAnnualAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(PreviousYearElectricEnergyAnnualAmount) or (PreviousYearElectricEnergyAnnualAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento CurrentYearElectricEnergyAnnualAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(CurrentYearElectricEnergyAnnualAmount) or (CurrentYearElectricEnergyAnnualAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 118] - Non sono stati forniti i consumi mensile del periodo precedente alla riqualificazione; i Certificati Bianchi (TEE) non potranno essere richiesti.
not(PreRenewalConsumptions[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 143] - I 12 mesi a cui fanno riferimento i consumi del periodo precedente alla riqualificazione DEVONO essere distinti.
(PreRenewalConsumptions[@xsi:nil = 'true']) or (count(distinct-values(PreRenewalConsumptions/MonthlyConsumption/@yearMonth)) = 12)
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 119] - Il dato sulle ore equivalente di funzionamento non e' stato fornito; i Certificati Bianchi (TEE) non potranno essere richiesti.
not(NumberOfCorrespondingOperatingHours[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
5) //ElectricPanel
•[Req 29] - Se il quadro non e' "in disuso", il codice POD indicato nel quadro elettrico (PODCode) DEVE essere uguale al codice di uno dei POD (//POD/PODCode) descritti nel documento XML.
(ElectricPanelGeneralData/OperatingStatus = '03') or (count(//POD[PODCode = $refPodCode]) > 0)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 128] - Se il quadro non e' "in disuso", i dati tecnici del quadro (ElectricPanelGeneralData) DEVONO essere forniti.
(ElectricPanelGeneralData/OperatingStatus = '03') or (count(ElectricPanelTechnicalData) = 1)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 129] - Se il quadro non e' "in disuso", i dati funzionamento e gestione del quadro (ElectricPanelOperatingData) DEVONO essere forniti.
(ElectricPanelGeneralData/OperatingStatus = '03') or (count(ElectricPanelOperatingData) = 1)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 130] - Se il quadro non e' "in disuso", i dati di manutenzione del quadro (ElectricPanelMaintenance) DEVONO essere forniti.
(ElectricPanelGeneralData/OperatingStatus = '03') or (count(ElectricPanelMaintenance) = 1)
Se questa regola viene violata il documento NON E' VALIDO .
6) //ElectricPanel/ElectricPanelGeneralData
•[Racc 11] - L'attributo XML @uom (unità di misura) dell'elemento ElectricPanelInstalledPower DOVREBBE essere presente e valorizzato con il valore prefissato "kW".
not(ElectricPanelInstalledPower) or (ElectricPanelInstalledPower[@uom = 'kW']) or (ElectricPanelInstalledPower[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 32] - Il numero totale di punti luce (NumberOfConnectedLightSpots) DEVE essere uguale alla somma tra il numero di punti luce di proprietà e non di proprietà (NumberOfOwnedLightSpots e NumberOfNotOwnedLightSpots) associati allo stesso quadro.
number(NumberOfConnectedLightSpots) = (number(NumberOfOwnedLightSpots) + number(NumberOfNotOwnedLightSpots))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 33] - Se il quadro elettrico non e' "in disuso", il numero totale di punti luce (NumberOfConnectedLightSpots) DEVE essere uguale numero di punti luce associati al quadro elettrico presenti nel documento (numero di blocchi LightSpot aventi ElectricPanelID uguale all'identificativo del quadro che si sta considerando).
(OperatingStatus = '03') or ((number(NumberOfConnectedLightSpots) = count(//LightSpot[ElectricPanelID = $electricPanID])))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 131] - Se il quadro non e' "in disuso", la potenza installata (ElectricPanelInstalledPower) DEVE essere fornita.
(OperatingStatus = '03') or (not(ElectricPanelInstalledPower[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 132] - Se il quadro non e' "in disuso", il numero totale di punti luce (NumberOfConnectedLightSpots) DEVE essere maggiore di zero.
(OperatingStatus = '03') or (number(NumberOfConnectedLightSpots) > 0)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 133] - Se il quadro non e' "in disuso", l'informazione relativa alla presenza dei carichi esogeni elettrici (ExogenousElectricalLoads) DEVE essere fornita.
(OperatingStatus = '03') or (not(ExogenousElectricalLoads = '91') and not(ExogenousElectricalLoads = '93') and not(ExogenousElectricalLoads = '94'))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 134] - Se il quadro non e' "in disuso", l'informazione relativa ai sostegni da riqualificare (SupportRedevelopingNeeds) DEVE essere fornita.
(OperatingStatus = '03') or (not(SupportRedevelopingNeeds = '91') and not(SupportRedevelopingNeeds = '93') and not(SupportRedevelopingNeeds = '94'))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 132] - Se il quadro non e' "in disuso", il numero numero sostegni (NumberOfSupports) DEVE essere maggiore di zero.
(OperatingStatus = '03') or (number(NumberOfSupports) > 0)
Se questa regola viene violata il documento NON E' VALIDO .
7) //ElectricPanel/ElectricPanelTechnicalData
•[Req 94] - Se è stato valorizzato l'indice IPEI 2013 (Ipei2013), l'indice IPEI 2018 (Ipei2018) DEVE assumere uno dei valori di indeterminatezza.
(Ipei2013 = '91') or (Ipei2013 = '93') or (Ipei2013 = '94') or (Ipei2018 = '91') or (Ipei2018 = '93') or (Ipei2018 = '94')
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 12] - L'attributo XML @uom (unità di misura) dell'elemento NominalVoltage DOVREBBE essere presente e valorizzato con il valore prefissato "V".
not(NominalVoltage) or (NominalVoltage[@uom = 'V'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 98] - Se è stato dichiarato che è presente un trasformatore di tensione in cabina elettrica, la potenza del trasformatore (TransformerPower) DEVE essere presente.
(((TransformerFlag = 'false') or (TransformerFlag[@xsi:nil = 'true']) or not(TransformerFlag)) and (not(TransformerPower) or (TransformerPower[@xsi:nil = 'true']))) or ((TransformerFlag = 'true') and (TransformerPower/node()))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 14] - L'attributo XML @uom (unità di misura) dell'elemento TransformerPower DOVREBBE essere presente e valorizzato con il valore prefissato "kV*A".
not(TransformerPower) or (TransformerPower[@uom = 'kV*A']) or (TransformerPower[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
8) //ElectricPanel/ElectricPanelOperatingData
•[Req 45] - Se è stato indicato che l'accensione è parzializzata (PowerOnPartializationFlag = 'true'), la durata di accensione parzializzata (NumberOfPartialOperatingHours) DEVE essere indicata e il valore DEVE essere inferiore al numero di ore di accensione dell'impianto (NumberOfOperatingHours). Nel caso di accensione non parzializzata (PowerOnPartializationFlag = 'false'), l'elemento NumberOfPartialOperatingHours DEVE essere valorizzato con il valore di indeterminatezza.
((PowerOnPartializationFlag = 'true') and (number(NumberOfOperatingHours) > number(NumberOfPartialOperatingHours))) or ((PowerOnPartializationFlag = 'false') and (NumberOfPartialOperatingHours[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 46] - In caso di accensione parzializzata (PowerOnPartializationFlag = 'true'), la riduzione del flusso luminoso (LuminousFluxReducingFlag) DEVE avere valore nullo.
not(PowerOnPartializationFlag = 'true') or (LuminousFluxReducingFlag[@xsi:nil = 'true'])
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 48] - In caso di attuazione di strategie di riduzione del flusso luminoso (LuminousFluxReducingFlag = 'true'), la durata di riduzione del flusso luminoso (NumberOfReducedFluxOperatingHours) DEVE essere valorizzata e il valore DEVE essere inferiore al numero di ore di accensione dell'impianto (NumberOfOperatingHours); altrimenti DEVE assumere il valore nullo.
((LuminousFluxReducingFlag = 'true') and (not(NumberOfReducedFluxOperatingHours[@xsi:nil = 'true'])) and (number(NumberOfOperatingHours) > number(NumberOfReducedFluxOperatingHours))) or (not(LuminousFluxReducingFlag = 'true') and (NumberOfReducedFluxOperatingHours[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 50] - In caso di utilizzo di strategie di riduzione del flusso luminoso (LuminousFluxReducingFlag = 'true'), il valore medio di riduzione del flusso luminoso (ReductionRate) DEVE essere valorizzato; altrimenti DEVE assumere il valore nullo.
((LuminousFluxReducingFlag = 'true') and not(ReductionRate[@xsi:nil = 'true'])) or (not(LuminousFluxReducingFlag = 'true') and (ReductionRate[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 51] - Se presenti, le informazioni sul meter DEVONO essere complete: occorre indicare sia l'identificativo (MeterID) che la classe (MeterClass).
((not(MeterID) or (MeterID[@xsi:nil = 'true'])) and (not(MeterClass) or (MeterClass = '91') or (MeterClass = '93') or (MeterClass = '94'))) or ((MeterID/text()) and (MeterClass) and not((MeterClass = '91') or (MeterClass = '93') or (MeterClass = '94')))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 52] - In caso di parzializzazione accensione tutta notte - mezza notte (PowerOnPartializationFlag = 'true'), la percentuale di riduzione della potenza (PowerReductionRate) DEVE essere fornita; altrimenti DEVE assumere il valore nullo.
((PowerOnPartializationFlag = 'false') and (PowerReductionRate[@xsi:nil = 'true'])) or ((PowerOnPartializationFlag = 'true') and not(PowerReductionRate[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 53] - In caso di utilizzo di strategie di riduzione del flusso luminoso, la percentuale di riduzione media della potenza (PowerAverageReductionRate) DEVE essere fornita, altrimenti DEVE assumere il valore nullo.
((LuminousFluxReducingFlag = 'true') and (not(PowerAverageReductionRate[@xsi:nil = 'true']))) or (not(LuminousFluxReducingFlag = 'true') and (PowerAverageReductionRate[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
9) //ElectricPanel/ElectricPanelMaintenance
•[Racc 2] - L'elemento PreviousYearOrdinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(PreviousYearOrdinaryMaintenanceAmount) or (PreviousYearOrdinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento PreviousYearOtherOrdinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(PreviousYearOtherOrdinaryMaintenanceAmount) or (PreviousYearOtherOrdinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento PreviousYearExtraordinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(PreviousYearExtraordinaryMaintenanceAmount) or (PreviousYearExtraordinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento CurrentYearOrdinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(CurrentYearOrdinaryMaintenanceAmount) or (CurrentYearOrdinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento CurrentYearOtherOrdinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(CurrentYearOtherOrdinaryMaintenanceAmount) or (CurrentYearOtherOrdinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 2] - L'elemento CurrentYearExtraordinaryMaintenanceAmount corrisponde ad un attributo del Data model indicante un importo, DOVREBBE quindi avere l'attributo XML @currency (valuta) valorizzato con il valore prefissato "EUR".
not(CurrentYearExtraordinaryMaintenanceAmount) or (CurrentYearExtraordinaryMaintenanceAmount[@currency = 'EUR'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
10) //LightSpot
•[Req 54] - L'identificativo del quadro elettrico indicato nel punto luce (ElectricPanelID) DEVE essere uguale all'identificativo di uno dei quadri elettrici descritti nel documento (ElectricPanel/ElectricPanelID).
(//ElectricPanel[ElectricPanelID = $electricPanID])
Se questa regola viene violata il documento NON E' VALIDO .
11) //LightSpot/LightSpotDevice
•[Req 146] - Se l'apparecchio afferisce ad un Quadro Elettrico NON in disuso, DEVE essere collegato ad una e una sola Zona Omogenea.
(count(//ElectricPanel[ElectricPanelID = $epID][ElectricPanelGeneralData/OperatingStatus = '03']) > 0) or (count(//LightSpotDeviceRefs/LightSpotDeviceID[. = $deviceID]) = 1)
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 85] - Il numero di lampade o moduli per singolo apparecchio (NumberOfLamps) DEVE essere uguale al numero di sorgenti luminose (blocchi LightSource) associate all'apparecchio.
(count(//LightSpot/LightSource[LightSpotDeviceID = $deviceID]) = NumberOfLamps)
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 19] - L'attributo XML @uom (unità di misura) dell'elemento TerminalPower DOVREBBE essere presente e valorizzato con il valore prefissato "W".
not(TerminalPower) or (TerminalPower[@uom = 'W'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 20] - La proprietà del punto luce (Owner) DOVREBBE essere sempre indicata (si sconsiglia l'uso dei valori di indeterminatezza).
(Owner = '01') or (Owner = '02')
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 97] - Se l'elemento UpwardEmission è presente, il suo attributo XML @uom (unità di misura) DEVE essere presente e valorizzato.
not(UpwardEmission) or (UpwardEmission[@uom] and not(UpwardEmission/@uom = '')) or (UpwardEmission[@xsi:nil = 'true'])
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 21] - L'attributo XML @uom (unità di misura) dell'elemento Flux DOVREBBE essere presente e valorizzato con il valore prefissato "lm".
not(Flux) or (Flux[@uom = 'lm']) or (Flux[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 95] - Se è stato valorizzato l'indice IPEA 2013 (Ipea2013), l'indice IPEA 2018 (Ipea2018) DEVE assumere uno dei valori di indeterminatezza.
(Ipea2013 = '91') or (Ipea2013 = '93') or (Ipea2013 = '94') or (Ipea2018 = '91') or (Ipea2018 = '93') or (Ipea2018 = '94')
Se questa regola viene violata il documento NON E' VALIDO .
12) //LightSpot/LightSpotEquipment
•[Req 118] - L'identificativo geografico del punto luce DEVE essere fornito.
(gml:Point/@gml:id)
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 15] - L'attributo XML @uom (unità di misura) dell'elemento Height DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(Height) or (Height[@uom = 'm'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 16] - L'attributo XML @uom (unità di misura) dell'elemento Incline DOVREBBE essere presente e valorizzato con il valore prefissato "°".
not(Incline) or (Incline[@uom = '°']) or (Incline[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 17] - L'attributo XML @uom (unità di misura) dell'elemento Distance DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(Distance) or (Distance[@uom = 'm']) or (Distance[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 18] - L'attributo XML @uom (unità di misura) dell'elemento Length DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(Length) or (Length[@uom = 'm']) or (Length[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 59] - Se la tipologia installazione (EquipmentType) è diversa da "su palo" o "su braccio" o da una delle loro sottotipologie, la distanza del sostegno dall’inizio della carreggiata (Distance) NON DEVE essere presente o, se presente, DEVE assumere il valore nullo.
((Distance) and ((starts-with(EquipmentType, '01')) or (starts-with(EquipmentType, '03')))) or not(Distance) or (Distance[@xsi:nil = 'true'])
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 61] - Se la tipologia installazione (EquipmentType) è diversa da "su palo" o "su braccio" o da una delle loro sottotipologie, la lunghezza braccio (Length) NON DEVE essere presente o, se presente, DEVE assumere il valore nullo.
((Length) and ((starts-with(EquipmentType, '01')) or (starts-with(EquipmentType, '03')))) or not(Length) or (Length[@xsi:nil = 'true'])
Se questa regola viene violata il documento NON E' VALIDO .
13) //LightSpot/LightSource
•[Req 96] - L'identificativo dell'apparecchio indicato nella sorgente luminosa (LightSpotDeviceID) DEVE essere uguale all'identificativo di uno degli apparecchi appartenenti al punto luce a cui è associata la sorgente luminosa.
(preceding-sibling::LightSpotDevice[LightSpotDeviceID = $deviceID])
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 22] - L'attributo XML @uom (unità di misura) dell'elemento NominalPower DOVREBBE essere presente e valorizzato con il valore prefissato "W".
not(NominalPower) or (NominalPower[@uom = 'W'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 23] - L'attributo XML @uom (unità di misura) dell'elemento NominalLuminousFlux DOVREBBE essere presente e valorizzato con il valore prefissato "lm".
not(NominalLuminousFlux) or (NominalLuminousFlux[@uom = 'lm']) or (NominalLuminousFlux[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 24] - L'attributo XML @uom (unità di misura) dell'elemento CCT DOVREBBE essere presente e valorizzato con il valore prefissato "k".
not(CCT) or (CCT[@uom = 'k']) or (CCT[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
14) //LightSpotDeviceID[ancestor::LightSpotDeviceRefs]
•[Req 119] - Ogni apparecchio della zona omogenea DEVE essere descritto nel documento.
(count(//LightSpotDeviceID[ancestor::LightSpotDevice][. = $devID]) = 1)
Se questa regola viene violata il documento NON E' VALIDO .
15) //HomogeneousArea
•[Req 142] - Gli identificativi apparecchio inidicati della zona omogenea DEVONO essere diversi.
(count(LightSpotDeviceRefs/LightSpotDeviceID) = count(distinct-values(LightSpotDeviceRefs/LightSpotDeviceID)))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 25] - L'attributo XML @uom (unità di misura) dell'elemento GridLength DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(GridLength) or (GridLength[@uom = 'm']) or (GridLength[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 26] - L'attributo XML @uom (unità di misura) dell'elemento GridWidth DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(GridWidth) or (GridWidth[@uom = 'm']) or (GridWidth[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 140] - O la superficie del reticolo di calcolo (AreaSurface) o lunghezza e larghezza del reticolo (GridLength e GridWidth) DEVONO essere fornite.
((not(GridLength[@xsi:nil = 'true']) and not(GridWidth[@xsi:nil = 'true'])) or not(AreaSurface[@xsi:nil = 'true']))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 27] - L'attributo XML @uom (unità di misura) dell'elemento AreaSurface DOVREBBE essere presente e valorizzato con il valore prefissato "m2".
not(AreaSurface) or (AreaSurface[@uom = 'm2']) or (AreaSurface[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 29] - L'attributo XML @uom (unità di misura) dell'elemento FootpathWidth DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(FootpathWidth) or (FootpathWidth[@uom = 'm']) or (FootpathWidth[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 30] - L'attributo XML @uom (unità di misura) dell'elemento DistanceBetweenLightSpots DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(DistanceBetweenLightSpots) or (DistanceBetweenLightSpots[@uom = 'm'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Racc 31] - L'attributo XML @uom (unità di misura) dell'elemento OtherFootpathWidth DOVREBBE essere presente e valorizzato con il valore prefissato "m".
not(OtherFootpathWidth) or (OtherFootpathWidth[@xsi:nil = 'true']) or (OtherFootpathWidth[@uom = 'm'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 70] - Se la tipologia di area illuminata (AreaTypology) è diversa da 'area di circolazione veicolare', il tipo carreggiata (RoadwayType) DEVE essere valorizzato con uno dei valori di indeterminatezza, altrimenti DEVE essere indicato uno dei tipi carreggiata previsti.
(not(AreaTypology = '01') and ((RoadwayType = '91') or (RoadwayType = '93') or (RoadwayType = '94'))) or ((AreaTypology = '01') and (not(RoadwayType = '91') and not(RoadwayType = '93') and not(RoadwayType = '94')))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 73] - Se la tipologia di area illuminata (AreaTypology) è diversa da “area di circolazione veicolare”, il numero di corsie seconda carreggiata (NumberOfSecondRoadwayLanes) NON DEVE presente o, se presente, assumere il valore nullo.
(AreaTypology = '01') or (not(NumberOfSecondRoadwayLanes)) or (NumberOfSecondRoadwayLanes[@xsi:nil = 'true'])
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 28] - Il numero di corsie seconda carreggiata DOVREBBE essere valorizzato solo se il tipo di carreggiata (RoadwayType) è 'due carreggiate simmetriche' o 'due carreggiate asimmetriche'.
((RoadwayType = '02') or (RoadwayType = '03')) or (not(NumberOfSecondRoadwayLanes)) or (NumberOfSecondRoadwayLanes[@xsi:nil = 'true'])
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
•[Req 75] - Se la tipologia di area illuminata (AreaTypology) è diversa da 'area di circolazione veicolare', l'elemento distribuzione stradale degli apparecchi (RoadLightSpotAllocation) DEVE essere valorizzato con il valore di indeterminatezza, altrimenti DEVE essere valorizzato con una delle opzioni previste.
(not(AreaTypology = '01') and ((RoadLightSpotAllocation = '91') or (RoadLightSpotAllocation = '93') or (RoadLightSpotAllocation = '94'))) or ((AreaTypology = '01') and (not(RoadLightSpotAllocation = '91') and not(RoadLightSpotAllocation = '93') and not(RoadLightSpotAllocation = '94')))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 139] - La sottotipologia di area illuminata DEVE essere coerente con la tipologia di area illuminata.
(OtherAreaTypology = '91') or (OtherAreaTypology = '93') or (OtherAreaTypology = '94') or ((AreaTypology = '01') and ((OtherAreaTypology = '01') or (OtherAreaTypology = '02') or (OtherAreaTypology = '03') or (OtherAreaTypology = '04') or (OtherAreaTypology = '05') or (OtherAreaTypology = '06') or (OtherAreaTypology = '07'))) or ((AreaTypology = '02') and ((OtherAreaTypology = '02') or (OtherAreaTypology = '08')) or ((AreaTypology = '03') and (OtherAreaTypology = '08'))) or ((AreaTypology = '95') and ((OtherAreaTypology = '09') or (OtherAreaTypology = '10')))
•[Req 77] - Se la tipologia di area illuminata (AreaTypology) è uguale a 'area di circolazione veicolare', l'elemento 'altra distribuzione degli apparecchi' (OtherLightSpotAllocation) NON DEVE essere presente o, se presente, DEVE assumere il valore nullo.
not(AreaTypology = '01') or ((not(OtherLightSpotAllocation) or (OtherLightSpotAllocation[@xsi:nil = 'true'])))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 81] - Il numero totale apparecchi (NumberOfLightSpotDevices) DEVE essere maggiore o uguale al numero totale dei sostegni (NumberOfSupports).
(number(NumberOfLightSpotDevices) >= number(NumberOfSupports))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 82] - Il numero totale apparecchi (NumberOfLightSpotDevices) DEVE essere uguale al numero di identificativi di punti luce apparecchio (LightSpotDeviceID) indicati nella zona omogenea.
(number(NumberOfLightSpotDevices) = count(LightSpotDeviceRefs/LightSpotDeviceID))
Se questa regola viene violata il documento NON E' VALIDO .
•[Req 84] - La larghezza altro marciapiede (OtherFootpathWidth) non DEVE essere valorizzata in caso di opzione presenza di marciapiede (Footpath) diversa da "sì, su ambo i lati" o valore uguale a "larghezza marciapiede" (FootpathWidth).
((Footpath = '02') or (not(OtherFootpathWidth) or (OtherFootpathWidth[@xsi:nil = 'true']))) and (not(number(OtherFootpathWidth) = number(FootpathWidth)))
Se questa regola viene violata il documento NON E' VALIDO .
16) //gml:Point
•[Req 122] - Il Punto geografico e i suoi attributi 'srsDimension' e 'srsName' DEVONO essere forniti e valorizzati.
(@srsDimension) and not(@srsDimension = '') and (@srsName) and not(@srsName = '') and (not(normalize-space(.) = ''))
Se questa regola viene violata il documento NON E' VALIDO .
17) //gml:Polygon
•[Req 124] - L'Area geografica e il suo attributo 'srsName' DEVE essere fornito e valorizzato.
(@srsName) and not(@srsName = '') and (not(normalize-space(.) = ''))
Se questa regola viene violata il documento NON E' VALIDO .
18) (//*)
•[Req 0] - Ogni elemento presente nel documento XML DEVE essere valorizzato o, se ammesso, settato a nullo.
((namespace-uri() = 'http://www.opengis.net/gml/3.2') and ((local-name() = 'pointMember') or (count(child::gml:*) > 0))) or (.[@xsi:nil = 'true']) or (not(normalize-space(.) = ''))
Se questa regola viene violata il documento NON E' VALIDO .
•[Racc 0] - Se un elemento è settato a nullo, l'unità di misura NON DOVREBBE essere presente (verifica l'elemento con uom ).
not((@xsi:nil = 'true') and (exists(@uom)))
Se questa regola viene violata il documento e' comunque valido ma si raccomanda la VERIFICA dei inseriti .
Riferimenti

[1] Questo documento costituisce una guida all'implementazione in formato XML del Modello Dati definito dalle "Specifiche di contenuto di riferimento PELL - illuminazione pubblica - versione 2.0 (del 25 marzo 2021)" [1]. http://geodati.gov.it/geoportale/datiterritoriali/regole-tecniche[2] Linee Guida PELL https://www.pell.enea.it/download[3] XML Schema Scheda Censimento (XSD) https://www.pell.enea.it/download[4] Regole semantiche (Schematron) https://www.pell.enea.it/download