Source code for ngsildclient.model.constants
#!/usr/bin/env python3
# Software Name: ngsildclient
# SPDX-FileCopyrightText: Copyright (c) 2021 Orange
# SPDX-License-Identifier: Apache 2.0
#
# This software is distributed under the Apache 2.0;
# see the NOTICE file for more details.
#
# Author: Fabien BATTELLO <fabien.battello@orange.com> et al.
"""This module contains constants used in the model package.
"""
from enum import Enum
from typing import Union
from datetime import datetime, date, time, timezone
from zoneinfo import ZoneInfo
from geojson import Point, LineString, Polygon
from ..utils.sentinel import Sentinel
NgsiLocation = Union[tuple[int, int], Point]
"""A user type : either a tuple of two ints (lat, lon) or a GeoJson Point.
"""
NgsiGeometry = Union[NgsiLocation, LineString, Polygon]
"""A user type : Valid Geometries types for a NGSI-LD GeoProperty.
"""
NgsiDate = Union[str, datetime, date, time]
"""A user type : Valid Date types for a NGSI-LD TemporalProperty.
"""
CORE_CONTEXT = "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
"""The default NGSI-LD Core Context. Automatically set at entity creation time if no context is provided.
"""
META_ATTR_CONTEXT = "@context"
META_ATTR_UNITCODE = "unitCode"
META_ATTR_OBSERVED_AT = "observedAt"
META_ATTR_DATASET_ID = "datasetId"
NESTED = True
TZ_UTC = timezone.utc
TZ_WET = ZoneInfo("WET") # UTC+1 i.e. Europe/Lisbon
TZ_CET = ZoneInfo("CET") # UTC+2 i.e. Europe/Paris
TZ_FET = ZoneInfo("Europe/Minsk") # UTC+3
class Auto(Sentinel):
pass
[docs]class Rel(Enum):
HAS_PART = "hasPart"
HAS_DIRECT_PART = "hasDirectPart"
IS_CONTAINED_IN = "isContainedIn"
OBSERVED_BY = "observedBy"
PROVIDED_BY = "providedBy"
[docs]class AttrType(Enum):
PROP = "Property"
TEMPORAL = "Property" # Temporal Property
GEO = "GeoProperty"
REL = "Relationship"
[docs]class GeometryType(Enum):
POINT = "Point"
LINESTRING = "LineString"
POLYGON = "Polygon"
[docs]class TemporalType(Enum):
DATETIME = "DateTime"
DATE = "Date"
TIME = "Time"
SMARTDATAMODELS_BASEURL = "https://smart-data-models.github.io" # Github Pages
class SmartDataModels:
class SmartAgri:
class Agrifood:
AgriApp = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriApp/examples/example-normalized.jsonld"
AgriCrop = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriCrop/examples/example-normalized.jsonld"
AgriFarm = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriFarm/examples/example-normalized.jsonld"
AgriGreenhouse = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriGreenhouse/examples/example-normalized.jsonld"
AgriParcel = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriParcel/examples/example-normalized.jsonld"
AgriParcelOperation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriParcelOperation/examples/example-normalized.jsonld"
AgriParcelRecord = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriParcelRecord/examples/example-normalized.jsonld"
AgriPest = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriPest/examples/example-normalized.jsonld"
AgriProductType = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriProductType/examples/example-normalized.jsonld"
AgriSoil = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/AgriSoil/examples/example-normalized.jsonld"
Animal = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/Animal/examples/example-normalized.jsonld"
Compartment = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/Compartment/examples/example-normalized.jsonld"
Pen = f"{SMARTDATAMODELS_BASEURL}/dataModel.Agrifood/Pen/examples/example-normalized.jsonld"
class Aquaculture:
BreedingOperation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Aquaculture/BreedingOperation/examples/example-normalized.jsonld"
FishContainment = f"{SMARTDATAMODELS_BASEURL}/dataModel.Aquaculture/FishContainment/examples/example-normalized.jsonld"
class Weather:
SeaConditions = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/SeaConditions/examples/example-normalized.jsonld"
WeatherAlert = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherAlert/examples/example-normalized.jsonld"
WeatherForecast = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherForecast/examples/example-normalized.jsonld"
WeatherObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherObserved/examples/example-normalized.jsonld"
class SmartCities:
class Building:
Building = f"{SMARTDATAMODELS_BASEURL}/dataModel.Building/Building/examples/example-normalized.jsonld"
BuildingOperation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Building/BuildingOperation/examples/example-normalized.jsonld"
VibrationsObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Building/VibrationsObserved/examples/example-normalized.jsonld"
class Parking:
OffStreetParking = f"{SMARTDATAMODELS_BASEURL}/dataModel.Parking/OffStreetParking/examples/example-normalized.jsonld"
OnStreetParking = f"{SMARTDATAMODELS_BASEURL}/dataModel.Parking/OnStreetParking/examples/example-normalized.jsonld"
ParkingAccess = f"{SMARTDATAMODELS_BASEURL}/dataModel.Parking/ParkingAccess/examples/example-normalized.jsonld"
ParkingGroup = f"{SMARTDATAMODELS_BASEURL}/dataModel.Parking/ParkingGroup/examples/example-normalized.jsonld"
ParkingSpot = f"{SMARTDATAMODELS_BASEURL}/dataModel.Parking/ParkingSpot/examples/example-normalized.jsonld"
class ParksAndGarden:
FlowerBed = f"{SMARTDATAMODELS_BASEURL}/dataModel.ParksAndGardens/FlowerBed/examples/example-normalized.jsonld"
Garden = f"{SMARTDATAMODELS_BASEURL}/dataModel.ParksAndGardens/Garden/examples/example-normalized.jsonld"
GreenSpaceRecord = f"{SMARTDATAMODELS_BASEURL}/dataModel.ParksAndGardens/GreenspaceRecord/examples/example-normalized.jsonld"
class PointOfInterest:
Beach = f"{SMARTDATAMODELS_BASEURL}/dataModel.PointOfInterest/Beach/examples/example-normalized.jsonld"
Museum = f"{SMARTDATAMODELS_BASEURL}/dataModel.PointOfInterest/Museum/examples/example-normalized.jsonld"
PointOfInterest = f"{SMARTDATAMODELS_BASEURL}/dataModel.PointOfInterest/PointOfInterest/examples/example-normalized.jsonld"
Store = f"{SMARTDATAMODELS_BASEURL}/dataModel.PointOfInterest/Store/examples/example-normalized.jsonld"
class Ports:
BoatAuthorized = f"{SMARTDATAMODELS_BASEURL}/dataModel.Ports/BoatAuthorized/examples/example-normalized.jsonld"
SeaportFacilities = f"{SMARTDATAMODELS_BASEURL}/dataModel.Ports/SeaportFacilities/examples/example-normalized.jsonld"
BoatPlacesAvailable = f"{SMARTDATAMODELS_BASEURL}/dataModel.Ports/BoatPlacesAvailable/examples/example-normalized.jsonld"
class StreetLightning:
StreetLight = f"{SMARTDATAMODELS_BASEURL}/dataModel.Streetlighting/Streetlight/examples/example-normalized.jsonld"
StreetLightControlCabinet = f"{SMARTDATAMODELS_BASEURL}/dataModel.Streetlighting/StreetlightControlCabinet/examples/example-normalized.jsonld"
StreetLightGroup = f"{SMARTDATAMODELS_BASEURL}/dataModel.Streetlighting/StreetlightGroup/examples/example-normalized.jsonld"
StreetLightModel = f"{SMARTDATAMODELS_BASEURL}/dataModel.Streetlighting/StreetlightModel/examples/example-normalized.jsonld"
class Transportation:
BikeHireDockingStation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/BikeHireDockingStation/examples/example-normalized.jsonld"
BikeLane = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/BikeLane/examples/example-normalized.jsonld"
CityWork = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/CityWork/examples/example-normalized.jsonld"
CrowFlowObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/CrowdFlowObserved/examples/example-normalized.jsonld"
EVChargingStation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/EVChargingStation/examples/example-normalized.jsonld"
FareCollectionSystem = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/FareCollectionSystem/examples/example-normalized.jsonld"
ItemFlowObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/ItemFlowObserved/examples/example-normalized.jsonld"
RestrictedTrafficArea = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/RestrictedTrafficArea/examples/example-normalized.jsonld"
RestrictionException = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/RestrictionException/examples/example-normalized.jsonld"
Road = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/Road/examples/example-normalized.jsonld"
RoadAccident = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/RoadAccident/examples/example-normalized.jsonld"
RoadSegment = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/RoadSegment/examples/example-normalized.jsonld"
SpecialRestriction = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/SpecialRestriction/examples/example-normalized.jsonld"
TrafficFlowObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/TrafficFlowObserved/examples/example-normalized.jsonld"
TransportStation = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/TransportStation/examples/example-normalized.jsonld"
Vehicle = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/Vehicle/examples/example-normalized.jsonld"
VehicleModel = f"{SMARTDATAMODELS_BASEURL}/dataModel.Transportation/VehicleModel/examples/example-normalized.jsonld"
class UrbanMobility:
ArrivalEstimation = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/ArrivalEstimation/examples/example-normalized.jsonld"
GtfsAccessPoint = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsAccessPoint/examples/example-normalized.jsonld"
GtfsAgency = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsAgency/examples/example-normalized.jsonld"
GtfsCalendarDateRule = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsCalendarDateRule/examples/example-normalized.jsonld"
GtfsCalendarRule = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsCalendarRule/examples/example-normalized.jsonld"
GtfsFrequency = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsFrequency/examples/example-normalized.jsonld"
GtfsRoute = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsRoute/examples/example-normalized.jsonld"
GtfsService = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsService/examples/example-normalized.jsonld"
GtfsShape = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsShape/examples/example-normalized.jsonld"
GtfsStation = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsStation/examples/example-normalized.jsonld"
GtfsStop = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsStop/examples/example-normalized.jsonld"
GtfsStopTime = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsStopTime/examples/example-normalized.jsonld"
GtfsTransferRule = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsTransferRule/examples/example-normalized.jsonld"
GtfsTrip = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/GtfsTrip/examples/example-normalized.jsonld"
PublicTransportRoute = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/PublicTransportRoute/examples/example-normalized.jsonld"
PublicTransportStop = f"{SMARTDATAMODELS_BASEURL}/dataModel.UrbanMobility/PublicTransportStop/examples/example-normalized.jsonld"
class WasteManagement:
WasteContainer = f"{SMARTDATAMODELS_BASEURL}/dataModel.WasteManagement/WasteContainer/examples/example-normalized.jsonld"
WasteContainerIsle = f"{SMARTDATAMODELS_BASEURL}/dataModel.WasteManagement/WasteContainerIsle/examples/example-normalized.jsonld"
WasteContainerModel = f"{SMARTDATAMODELS_BASEURL}/dataModel.WasteManagement/WasteContainerModel/examples/example-normalized.jsonld"
class Weather:
SeaConditions = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/SeaConditions/examples/example-normalized.jsonld"
WeatherAlert = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherAlert/examples/example-normalized.jsonld"
WeatherForecast = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherForecast/examples/example-normalized.jsonld"
WeatherObserved = f"{SMARTDATAMODELS_BASEURL}/dataModel.Weather/WeatherObserved/examples/example-normalized.jsonld"