##############################
# Auto-generated. Do not Edit
##############################
import re
from pylipd.utils import uniqid
from pylipd.classes.interpretationseasonality import InterpretationSeasonality
from pylipd.classes.interpretationvariable import InterpretationVariable
[docs]
class Interpretation:
"""Auto-generated LinkedEarth class representing `Interpretation`."""
def __init__(self):
"""Initialize a new Interpretation instance."""
self.basis: str = None
self.direction: str = None
self.local: str = None
self.mathematicalRelation: str = None
self.notes: str = None
self.rank: str = None
self.scope: str = None
self.seasonality: InterpretationSeasonality = None
self.seasonalityGeneral: InterpretationSeasonality = None
self.seasonalityOriginal: InterpretationSeasonality = None
self.variable: InterpretationVariable = None
self.variableDetail: str = None
self.variableGeneral: str = None
self.variableGeneralDirection: str = None
self.misc = {}
self.ontns = "http://linked.earth/ontology#"
self.ns = "http://linked.earth/lipd"
self.type = "http://linked.earth/ontology#Interpretation"
self.id = self.ns + "/" + uniqid("Interpretation.")
[docs]
@staticmethod
def from_data(id, data) -> 'Interpretation':
"""Instantiate `Interpretation` from an ontology-style data graph.
Parameters
----------
id : str
The node identifier for this object.
data : dict
Dictionary mapping node ids to their predicate lists.
Returns
-------
Interpretation
The populated `Interpretation` instance.
"""
self = Interpretation()
self.id = id
mydata = data[id]
for key in mydata:
value = mydata[key]
obj = None
if key == "type":
for val in value:
self.type = val["@id"]
elif key == "hasBasis":
for val in value:
if "@value" in val:
obj = val["@value"]
self.basis = obj
elif key == "hasDirection":
for val in value:
if "@value" in val:
obj = val["@value"]
self.direction = obj
elif key == "hasMathematicalRelation":
for val in value:
if "@value" in val:
obj = val["@value"]
self.mathematicalRelation = obj
elif key == "hasNotes":
for val in value:
if "@value" in val:
obj = val["@value"]
self.notes = obj
elif key == "hasRank":
for val in value:
if "@value" in val:
obj = val["@value"]
self.rank = obj
elif key == "hasScope":
for val in value:
if "@value" in val:
obj = val["@value"]
self.scope = obj
elif key == "hasSeasonality":
for val in value:
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", val["@id"]))
self.seasonality = obj
elif key == "hasSeasonalityGeneral":
for val in value:
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", val["@id"]))
self.seasonalityGeneral = obj
elif key == "hasSeasonalityOriginal":
for val in value:
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", val["@id"]))
self.seasonalityOriginal = obj
elif key == "hasVariable":
for val in value:
obj = InterpretationVariable.from_synonym(re.sub("^.*?#", "", val["@id"]))
self.variable = obj
elif key == "hasVariableDetail":
for val in value:
if "@value" in val:
obj = val["@value"]
self.variableDetail = obj
elif key == "hasVariableGeneral":
for val in value:
if "@value" in val:
obj = val["@value"]
self.variableGeneral = obj
elif key == "hasVariableGeneralDirection":
for val in value:
if "@value" in val:
obj = val["@value"]
self.variableGeneralDirection = obj
elif key == "isLocal":
for val in value:
if "@value" in val:
obj = val["@value"]
self.local = obj
else:
for val in value:
obj = None
if "@id" in val:
obj = data[val["@id"]]
elif "@value" in val:
obj = val["@value"]
self.set_non_standard_property(key, obj)
return self
[docs]
def to_data(self, data={}):
"""Serialize the object into a JSON-LD compatible dictionary.
Parameters
----------
data : dict, optional
Existing data dictionary to extend.
Returns
-------
dict
The updated data dictionary.
"""
data[self.id] = {}
data[self.id]["type"] = [
{
"@id": self.type,
"@type": "uri"
}
]
if self.basis:
value_obj = self.basis
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasBasis"] = [obj]
if self.direction:
value_obj = self.direction
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasDirection"] = [obj]
if self.local:
value_obj = self.local
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["isLocal"] = [obj]
if self.mathematicalRelation:
value_obj = self.mathematicalRelation
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasMathematicalRelation"] = [obj]
if self.notes:
value_obj = self.notes
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasNotes"] = [obj]
if self.rank:
value_obj = self.rank
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasRank"] = [obj]
if self.scope:
value_obj = self.scope
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasScope"] = [obj]
if self.seasonality:
value_obj = self.seasonality
if type(value_obj) is str:
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
else:
obj = {
"@id": value_obj.id,
"@type": "uri"
}
data = value_obj.to_data(data)
data[self.id]["hasSeasonality"] = [obj]
if self.seasonalityGeneral:
value_obj = self.seasonalityGeneral
if type(value_obj) is str:
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
else:
obj = {
"@id": value_obj.id,
"@type": "uri"
}
data = value_obj.to_data(data)
data[self.id]["hasSeasonalityGeneral"] = [obj]
if self.seasonalityOriginal:
value_obj = self.seasonalityOriginal
if type(value_obj) is str:
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
else:
obj = {
"@id": value_obj.id,
"@type": "uri"
}
data = value_obj.to_data(data)
data[self.id]["hasSeasonalityOriginal"] = [obj]
if self.variable:
value_obj = self.variable
if type(value_obj) is str:
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
else:
obj = {
"@id": value_obj.id,
"@type": "uri"
}
data = value_obj.to_data(data)
data[self.id]["hasVariable"] = [obj]
if self.variableDetail:
value_obj = self.variableDetail
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasVariableDetail"] = [obj]
if self.variableGeneral:
value_obj = self.variableGeneral
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasVariableGeneral"] = [obj]
if self.variableGeneralDirection:
value_obj = self.variableGeneralDirection
obj = {
"@value": value_obj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[self.id]["hasVariableGeneralDirection"] = [obj]
for key in self.misc:
value = self.misc[key]
data[self.id][key] = []
ptype = None
tp = type(value).__name__
if tp == "int":
ptype = "http://www.w3.org/2001/XMLSchema#integer"
elif tp == "float" or tp == "double":
ptype = "http://www.w3.org/2001/XMLSchema#float"
elif tp == "str":
if re.match(r"\d{4}-\d{2}-\d{2}( |T)\d{2}:\d{2}:\d{2}", value):
ptype = "http://www.w3.org/2001/XMLSchema#datetime"
elif re.match(r"\d{4}-\d{2}-\d{2}", value):
ptype = "http://www.w3.org/2001/XMLSchema#date"
else:
ptype = "http://www.w3.org/2001/XMLSchema#string"
elif tp == "bool":
ptype = "http://www.w3.org/2001/XMLSchema#boolean"
data[self.id][key].append({
"@value": value,
"@type": "literal",
"@datatype": ptype
})
return data
[docs]
def to_json(self):
"""Return a lightweight JSON representation (used by LiPD).
Returns
-------
dict
A dictionary representation of this object.
"""
data = {
"@id": self.id
}
if self.basis:
value_obj = self.basis
obj = value_obj
data["basis"] = obj
if self.direction:
value_obj = self.direction
obj = value_obj
data["direction"] = obj
if self.local:
value_obj = self.local
obj = value_obj
data["isLocal"] = obj
if self.mathematicalRelation:
value_obj = self.mathematicalRelation
obj = value_obj
data["mathematicalRelation"] = obj
if self.notes:
value_obj = self.notes
obj = value_obj
data["notes"] = obj
if self.rank:
value_obj = self.rank
obj = value_obj
data["rank"] = obj
if self.scope:
value_obj = self.scope
obj = value_obj
data["scope"] = obj
if self.seasonality:
value_obj = self.seasonality
obj = value_obj.to_json()
data["seasonality"] = obj
if self.seasonalityGeneral:
value_obj = self.seasonalityGeneral
obj = value_obj.to_json()
data["seasonalityGeneral"] = obj
if self.seasonalityOriginal:
value_obj = self.seasonalityOriginal
obj = value_obj.to_json()
data["seasonalityOriginal"] = obj
if self.variable:
value_obj = self.variable
obj = value_obj.to_json()
data["variable"] = obj
if self.variableDetail:
value_obj = self.variableDetail
obj = value_obj
data["variableDetail"] = obj
if self.variableGeneral:
value_obj = self.variableGeneral
obj = value_obj
data["variableGeneral"] = obj
if self.variableGeneralDirection:
value_obj = self.variableGeneralDirection
obj = value_obj
data["variableGeneralDirection"] = obj
for key in self.misc:
value = self.misc[key]
data[key] = value
return data
[docs]
@staticmethod
def from_json(data) -> 'Interpretation':
"""Instantiate `Interpretation` from its lightweight JSON representation.
Parameters
----------
data : dict
The JSON dictionary to parse.
Returns
-------
Interpretation
The populated `Interpretation` instance.
"""
self = Interpretation()
for key in data:
pvalue = data[key]
if key == "@id":
self.id = pvalue
elif key == "basis":
value = pvalue
obj = value
self.basis = obj
elif key == "direction":
value = pvalue
obj = value
self.direction = obj
elif key == "isLocal":
value = pvalue
obj = value
self.local = obj
elif key == "mathematicalRelation":
value = pvalue
obj = value
self.mathematicalRelation = obj
elif key == "notes":
value = pvalue
obj = value
self.notes = obj
elif key == "rank":
value = pvalue
obj = value
self.rank = obj
elif key == "scope":
value = pvalue
obj = value
self.scope = obj
elif key == "seasonality":
value = pvalue
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", value))
self.seasonality = obj
elif key == "seasonalityGeneral":
value = pvalue
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", value))
self.seasonalityGeneral = obj
elif key == "seasonalityOriginal":
value = pvalue
obj = InterpretationSeasonality.from_synonym(re.sub("^.*?#", "", value))
self.seasonalityOriginal = obj
elif key == "variable":
value = pvalue
obj = InterpretationVariable.from_synonym(re.sub("^.*?#", "", value))
self.variable = obj
elif key == "variableDetail":
value = pvalue
obj = value
self.variableDetail = obj
elif key == "variableGeneral":
value = pvalue
obj = value
self.variableGeneral = obj
elif key == "variableGeneralDirection":
value = pvalue
obj = value
self.variableGeneralDirection = obj
else:
self.set_non_standard_property(key, pvalue)
return self
[docs]
def set_non_standard_property(self, key, value):
"""Store a predicate that is not defined in the ontology schema.
This is useful for forward-compatibility with new properties that are
not yet part of the official schema.
Parameters
----------
key : str
The property name.
value : any
The property value.
"""
if key not in self.misc:
self.misc[key] = value
[docs]
def get_non_standard_property(self, key):
"""Return a single non-standard property by key.
Parameters
----------
key : str
The property name.
Returns
-------
any
The property value.
"""
return self.misc[key]
[docs]
def get_all_non_standard_properties(self):
"""Return the dictionary of all non-standard properties.
Returns
-------
dict
Dictionary of all non-standard properties.
"""
return self.misc
[docs]
def add_non_standard_property(self, key, value):
"""Append a value to a list-valued non-standard property.
Parameters
----------
key : str
The property name.
value : any
The value to append.
"""
if key not in self.misc:
self.misc[key] = []
self.misc[key].append(value)
[docs]
def getBasis(self) -> str:
"""Get basis.
Returns
-------
str
The current value of basis.
"""
return self.basis
[docs]
def setBasis(self, basis:str):
"""Set basis.
Parameters
----------
basis : str
The value to assign.
"""
assert isinstance(basis, str), f"Error: '{basis}' is not of type str"
self.basis = basis
[docs]
def getDirection(self) -> str:
"""Get direction.
Returns
-------
str
The current value of direction.
"""
return self.direction
[docs]
def setDirection(self, direction:str):
"""Set direction.
Parameters
----------
direction : str
The value to assign.
"""
assert isinstance(direction, str), f"Error: '{direction}' is not of type str"
self.direction = direction
[docs]
def getMathematicalRelation(self) -> str:
"""Get mathematicalRelation.
Returns
-------
str
The current value of mathematicalRelation.
"""
return self.mathematicalRelation
[docs]
def setMathematicalRelation(self, mathematicalRelation:str):
"""Set mathematicalRelation.
Parameters
----------
mathematicalRelation : str
The value to assign.
"""
assert isinstance(mathematicalRelation, str), f"Error: '{mathematicalRelation}' is not of type str"
self.mathematicalRelation = mathematicalRelation
[docs]
def getNotes(self) -> str:
"""Get notes.
Returns
-------
str
The current value of notes.
"""
return self.notes
[docs]
def setNotes(self, notes:str):
"""Set notes.
Parameters
----------
notes : str
The value to assign.
"""
assert isinstance(notes, str), f"Error: '{notes}' is not of type str"
self.notes = notes
[docs]
def getRank(self) -> str:
"""Get rank.
Returns
-------
str
The current value of rank.
"""
return self.rank
[docs]
def setRank(self, rank:str):
"""Set rank.
Parameters
----------
rank : str
The value to assign.
"""
assert isinstance(rank, str), f"Error: '{rank}' is not of type str"
self.rank = rank
[docs]
def getScope(self) -> str:
"""Get scope.
Returns
-------
str
The current value of scope.
"""
return self.scope
[docs]
def setScope(self, scope:str):
"""Set scope.
Parameters
----------
scope : str
The value to assign.
"""
assert isinstance(scope, str), f"Error: '{scope}' is not of type str"
self.scope = scope
[docs]
def getSeasonality(self) -> InterpretationSeasonality:
"""Get seasonality.
Returns
-------
InterpretationSeasonality
The current value of seasonality.
"""
return self.seasonality
[docs]
def setSeasonality(self, seasonality:InterpretationSeasonality):
"""Set seasonality.
Parameters
----------
seasonality : InterpretationSeasonality
The value to assign.
"""
assert isinstance(seasonality, InterpretationSeasonality), f"Error: '{seasonality}' is not of type InterpretationSeasonality\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.from_synonym(\"{seasonality}\")\n- Create a new custom InterpretationSeasonality: InterpretationSeasonality(\"{seasonality}\")"
self.seasonality = seasonality
[docs]
def getSeasonalityGeneral(self) -> InterpretationSeasonality:
"""Get seasonalityGeneral.
Returns
-------
InterpretationSeasonality
The current value of seasonalityGeneral.
"""
return self.seasonalityGeneral
[docs]
def setSeasonalityGeneral(self, seasonalityGeneral:InterpretationSeasonality):
"""Set seasonalityGeneral.
Parameters
----------
seasonalityGeneral : InterpretationSeasonality
The value to assign.
"""
assert isinstance(seasonalityGeneral, InterpretationSeasonality), f"Error: '{seasonalityGeneral}' is not of type InterpretationSeasonality\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.from_synonym(\"{seasonalityGeneral}\")\n- Create a new custom InterpretationSeasonality: InterpretationSeasonality(\"{seasonalityGeneral}\")"
self.seasonalityGeneral = seasonalityGeneral
[docs]
def getSeasonalityOriginal(self) -> InterpretationSeasonality:
"""Get seasonalityOriginal.
Returns
-------
InterpretationSeasonality
The current value of seasonalityOriginal.
"""
return self.seasonalityOriginal
[docs]
def setSeasonalityOriginal(self, seasonalityOriginal:InterpretationSeasonality):
"""Set seasonalityOriginal.
Parameters
----------
seasonalityOriginal : InterpretationSeasonality
The value to assign.
"""
assert isinstance(seasonalityOriginal, InterpretationSeasonality), f"Error: '{seasonalityOriginal}' is not of type InterpretationSeasonality\nYou can create a new InterpretationSeasonality object from a string using the following syntax:\n- Fetch existing InterpretationSeasonality by synonym: InterpretationSeasonality.from_synonym(\"{seasonalityOriginal}\")\n- Create a new custom InterpretationSeasonality: InterpretationSeasonality(\"{seasonalityOriginal}\")"
self.seasonalityOriginal = seasonalityOriginal
[docs]
def getVariable(self) -> InterpretationVariable:
"""Get variable.
Returns
-------
InterpretationVariable
The current value of variable.
"""
return self.variable
[docs]
def setVariable(self, variable:InterpretationVariable):
"""Set variable.
Parameters
----------
variable : InterpretationVariable
The value to assign.
"""
assert isinstance(variable, InterpretationVariable), f"Error: '{variable}' is not of type InterpretationVariable\nYou can create a new InterpretationVariable object from a string using the following syntax:\n- Fetch existing InterpretationVariable by synonym: InterpretationVariable.from_synonym(\"{variable}\")\n- Create a new custom InterpretationVariable: InterpretationVariable(\"{variable}\")"
self.variable = variable
[docs]
def getVariableDetail(self) -> str:
"""Get variableDetail.
Returns
-------
str
The current value of variableDetail.
"""
return self.variableDetail
[docs]
def setVariableDetail(self, variableDetail:str):
"""Set variableDetail.
Parameters
----------
variableDetail : str
The value to assign.
"""
assert isinstance(variableDetail, str), f"Error: '{variableDetail}' is not of type str"
self.variableDetail = variableDetail
[docs]
def getVariableGeneral(self) -> str:
"""Get variableGeneral.
Returns
-------
str
The current value of variableGeneral.
"""
return self.variableGeneral
[docs]
def setVariableGeneral(self, variableGeneral:str):
"""Set variableGeneral.
Parameters
----------
variableGeneral : str
The value to assign.
"""
assert isinstance(variableGeneral, str), f"Error: '{variableGeneral}' is not of type str"
self.variableGeneral = variableGeneral
[docs]
def getVariableGeneralDirection(self) -> str:
"""Get variableGeneralDirection.
Returns
-------
str
The current value of variableGeneralDirection.
"""
return self.variableGeneralDirection
[docs]
def setVariableGeneralDirection(self, variableGeneralDirection:str):
"""Set variableGeneralDirection.
Parameters
----------
variableGeneralDirection : str
The value to assign.
"""
assert isinstance(variableGeneralDirection, str), f"Error: '{variableGeneralDirection}' is not of type str"
self.variableGeneralDirection = variableGeneralDirection
[docs]
def isLocal(self) -> str:
"""Get local.
Returns
-------
str
The current value of local.
"""
return self.local
[docs]
def setLocal(self, local:str):
"""Set local.
Parameters
----------
local : str
The value to assign.
"""
assert isinstance(local, str), f"Error: '{local}' is not of type str"
self.local = local