sdata 1.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. sdata/__init__.py +140 -0
  2. sdata/base.py +684 -0
  3. sdata/contrib/__init__.py +0 -0
  4. sdata/contrib/piexif/__init__.py +12 -0
  5. sdata/contrib/piexif/_common.py +94 -0
  6. sdata/contrib/piexif/_dump.py +346 -0
  7. sdata/contrib/piexif/_exceptions.py +2 -0
  8. sdata/contrib/piexif/_exif.py +638 -0
  9. sdata/contrib/piexif/_insert.py +60 -0
  10. sdata/contrib/piexif/_load.py +270 -0
  11. sdata/contrib/piexif/_remove.py +56 -0
  12. sdata/contrib/piexif/_transplant.py +45 -0
  13. sdata/contrib/piexif/_webp.py +240 -0
  14. sdata/contrib/piexif/helper.py +66 -0
  15. sdata/contrib/ranger/__init__.py +8 -0
  16. sdata/contrib/ranger/collections/__init__.py +0 -0
  17. sdata/contrib/ranger/collections/rangebucketmap.py +346 -0
  18. sdata/contrib/ranger/collections/rangemap.py +396 -0
  19. sdata/contrib/ranger/collections/rangeset.py +483 -0
  20. sdata/contrib/ranger/range/__init__.py +0 -0
  21. sdata/contrib/ranger/range/cut.py +285 -0
  22. sdata/contrib/ranger/range/range.py +644 -0
  23. sdata/contrib/sobol_seq.py +394 -0
  24. sdata/contrib/sortedcontainers/LICENSE +13 -0
  25. sdata/contrib/sortedcontainers/__init__.py +74 -0
  26. sdata/contrib/sortedcontainers/sorteddict.py +789 -0
  27. sdata/contrib/sortedcontainers/sortedlist.py +2646 -0
  28. sdata/contrib/sortedcontainers/sortedset.py +733 -0
  29. sdata/contrib/sqlitedict.py +598 -0
  30. sdata/contrib/timeflake/__init__.py +40 -0
  31. sdata/contrib/timeflake/flake.py +69 -0
  32. sdata/contrib/timeflake/utils.py +47 -0
  33. sdata/deprecated/__init__.py +10 -0
  34. sdata/deprecated/data.py +1503 -0
  35. sdata/did/__init__.py +129 -0
  36. sdata/did/_http.py +67 -0
  37. sdata/did/base58btc.py +49 -0
  38. sdata/did/did_github.py +152 -0
  39. sdata/did/did_peer4.py +155 -0
  40. sdata/did/did_web.py +222 -0
  41. sdata/did/diddoc.py +75 -0
  42. sdata/did/ed25519.py +225 -0
  43. sdata/did/eddsa.py +107 -0
  44. sdata/did/errors.py +40 -0
  45. sdata/did/issue_vc.py +193 -0
  46. sdata/did/jose.py +126 -0
  47. sdata/did/keys.py +104 -0
  48. sdata/did/utils_didkey.py +161 -0
  49. sdata/did/verify_vp.py +158 -0
  50. sdata/doe.py +101 -0
  51. sdata/dtypes.py +510 -0
  52. sdata/experiments/__init__.py +331 -0
  53. sdata/experiments/blob0.py +131 -0
  54. sdata/experiments/file.py +42 -0
  55. sdata/experiments/filegroup.py +144 -0
  56. sdata/experiments/image_old.py +313 -0
  57. sdata/experiments/ks2.py +15 -0
  58. sdata/experiments/lapshear.py +8 -0
  59. sdata/experiments/material.py +7 -0
  60. sdata/experiments/parameters_deprecated.py +394 -0
  61. sdata/experiments/workbook.py +226 -0
  62. sdata/format.py +125 -0
  63. sdata/imagemeta.py +533 -0
  64. sdata/interactive.py +118 -0
  65. sdata/iolib/__init__.py +51 -0
  66. sdata/iolib/hashtree.py +264 -0
  67. sdata/iolib/json1sqlitestore.py +554 -0
  68. sdata/iolib/jsonsqlitestore.py +704 -0
  69. sdata/iolib/pud.py +242 -0
  70. sdata/iolib/reader.py +262 -0
  71. sdata/iolib/writer.py +419 -0
  72. sdata/metadata.py +882 -0
  73. sdata/parameter.py +414 -0
  74. sdata/schema.py +273 -0
  75. sdata/sclass/__init__.py +111 -0
  76. sdata/sclass/bfo_classes.py +362 -0
  77. sdata/sclass/blob.py +362 -0
  78. sdata/sclass/content.py +87 -0
  79. sdata/sclass/dataframe.py +1251 -0
  80. sdata/sclass/dataframegroup.py +187 -0
  81. sdata/sclass/dependency_graph.py +85 -0
  82. sdata/sclass/filereference.py +124 -0
  83. sdata/sclass/image.py +218 -0
  84. sdata/sclass/lazy_namespace.py +155 -0
  85. sdata/sclass/process.py +383 -0
  86. sdata/sclass/process_graph.py +221 -0
  87. sdata/sclass/zipfile.py +135 -0
  88. sdata/semantic.py +346 -0
  89. sdata/suuid.py +136 -0
  90. sdata/timestamp.py +336 -0
  91. sdata/tools.py +14 -0
  92. sdata/units.py +602 -0
  93. sdata/vocab.py +149 -0
  94. sdata-1.5.0.dist-info/METADATA +264 -0
  95. sdata-1.5.0.dist-info/RECORD +98 -0
  96. sdata-1.5.0.dist-info/WHEEL +5 -0
  97. sdata-1.5.0.dist-info/licenses/LICENSE-MIT +21 -0
  98. sdata-1.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,111 @@
1
+ import logging
2
+ from .lazy_namespace import LazyRegistry
3
+ from typing import List, Dict, Any, Optional, Type, Literal
4
+ import sdata.base
5
+ import sys
6
+
7
+ # 1) Registry für dieses Package anlegen
8
+ _registry = LazyRegistry(__name__)
9
+
10
+ # 2) Anfangs-Exports (kann leer sein)
11
+ _registry.register_many({
12
+ "SUUID": "sdata.suuid:SUUID",
13
+ "Base": "sdata.base:Base",
14
+ "Blob":"sdata.sclass.blob:Blob",
15
+ "DataFrame":"sdata.sclass.dataframe:DataFrame",
16
+ "FileReference":"sdata.sclass.filereference:FileReference",
17
+ "Image":"sdata.sclass.image:Image",
18
+ "ProcessData":"sdata.sclass.process:ProcessData",
19
+ "ProcessNode":"sdata.sclass.process:ProcessNode",
20
+ # "Class2": "_mypkg.othermodule:Class2",
21
+ })
22
+ # 3) An Package binden (aktiviert __getattr__/__dir__)
23
+ _registry.attach()
24
+
25
+ # 4) Öffentliche API zum Erweitern zur Laufzeit
26
+ def register(name: str, spec: str) -> None:
27
+ """Erweitert den mypkg-Namespace zur Laufzeit."""
28
+ logging.debug(f"registering '{name}' with '{spec}'")
29
+ _registry.register(name, spec)
30
+
31
+ def register_many(mapping: dict[str, str]) -> None:
32
+ _registry.register_many(mapping)
33
+
34
+ def get_specs() -> dict[str, str]:
35
+ return _registry.exports()
36
+
37
+ # Optional: für (De-)Serialisierung wiederverwenden
38
+ from .lazy_namespace import to_json, from_json # re-export
39
+
40
+ from importlib import import_module
41
+ from typing import Any
42
+
43
+ def class_to_spec(cls: type) -> str:
44
+ """Canonischer, importierbarer String für eine Klasse."""
45
+ return f"{cls.__module__}:{cls.__qualname__}"
46
+
47
+ def obj_to_spec(obj: Any) -> str:
48
+ return class_to_spec(obj.__class__)
49
+
50
+ def spec_to_class(spec: str,
51
+ on_error: Literal["ignore", "strict"] = "strict",
52
+ ) -> type:
53
+ """Auflösung 'pkg.mod:Qual.Name' → Klasse (lazy import)."""
54
+ try:
55
+ mod_name, class_name = spec.split(":", 1)
56
+ register(class_name, spec)
57
+ mod = import_module(mod_name)
58
+ obj = mod
59
+ for part in class_name.split("."):
60
+ obj = getattr(obj, part)
61
+ return obj
62
+ except (Exception, ModuleNotFoundError, AttributeError, NameError) as e:
63
+ if on_error == "ignore":
64
+ obj = sdata.base.Base
65
+ return obj
66
+ else:
67
+ raise ModuleNotFoundError(f"sdata.sclass.spec_to_class Error {e}")
68
+
69
+ def is_importable_by_spec(cls: type) -> bool:
70
+ try:
71
+ return spec_to_class(class_to_spec(cls)) is cls
72
+ except Exception:
73
+ return False
74
+
75
+ def make_module_alias(cls: type, alias: Optional[str] = None) -> str:
76
+ """
77
+ Falls importierbarkeits-Check scheitert, Klassenalias im Modul erzeugen:
78
+ mod:Alias → importierbar, auch wenn Klasse ursprünglich lokal/nested war.
79
+ """
80
+ mod = sys.modules[cls.__module__]
81
+ name = alias or cls.__name__
82
+ setattr(mod, name, cls)
83
+ return f"{cls.__module__}:{name}"
84
+
85
+
86
+
87
+
88
+ # def to_json(obj: Any, *, short_name: str | None = None) -> dict:
89
+ # cls = obj.__class__
90
+ # payload = getattr(obj, "to_dict", lambda: obj.__dict__)()
91
+ # return {
92
+ # "__type__": short_name or cls.__name__, # kurz
93
+ # "__spec__": f"{cls.__module__}:{cls.__qualname__}", # kanonisch
94
+ # **payload,
95
+ # }
96
+ #
97
+ # def from_json(d: dict) -> Any:
98
+ # cls = spec_to_class(d["__spec__"])
99
+ # data = {k: v for k, v in d.items() if k not in {"__type__", "__spec__"}}
100
+ # if hasattr(cls, "from_dict"):
101
+ # return cls.from_dict(data)
102
+ # return cls(**data)
103
+
104
+ if __name__ == '__main__':
105
+ pass
106
+ # Process_1_Generic = create_process_class(
107
+ # 'Process_1',
108
+ # input_classes={'DataClass_1': DataClass_1, 'DataClass_2': DataClass_2},
109
+ # output_classes={'DataClass_3': DataClass_3},
110
+ # )
111
+ # print(Process_1_Generic)
@@ -0,0 +1,362 @@
1
+ # bfo_classes.py
2
+ # This module defines Python classes mirroring the BFO 2020 ontology structure.
3
+ # Each class inherits from its parent BFO class and stores its IRI (URL) as an instance variable.
4
+ # Docstrings are added based on elucidations and definitions from the BFO documentation.
5
+
6
+ """
7
+ The Basic Formal Ontology (BFO) is a small, upper level ontology that is designed for use in supporting information
8
+ retrieval, analysis and integration in scientific and other domains. BFO is a genuine upper ontology.
9
+ Thus it does not contain physical, chemical, biological or other terms which would properly fall within the coverage
10
+ domains of the special sciences. BFO is used by more than 550 ontology-driven endeavors throughout the world.
11
+ """
12
+
13
+ from .lazy_namespace import LazyRegistry
14
+
15
+ specs = {
16
+ "Entity": "sdata.sclass.bfo_classes:Entity",
17
+ "Continuant": "sdata.sclass.bfo_classes:Continuant",
18
+ "Occurrent": "sdata.sclass.bfo_classes:Occurrent",
19
+ "IndependentContinuant": "sdata.sclass.bfo_classes:IndependentContinuant",
20
+ "GenericallyDependentContinuant": "sdata.sclass.bfo_classes:GenericallyDependentContinuant",
21
+ "SpecificallyDependentContinuant": "sdata.sclass.bfo_classes:SpecificallyDependentContinuant",
22
+ "ImmaterialEntity": "sdata.sclass.bfo_classes:ImmaterialEntity",
23
+ "MaterialEntity": "sdata.sclass.bfo_classes:MaterialEntity",
24
+ "Quality": "sdata.sclass.bfo_classes:Quality",
25
+ "RealizableEntity": "sdata.sclass.bfo_classes:RealizableEntity",
26
+ "RelationalQuality": "sdata.sclass.bfo_classes:RelationalQuality",
27
+ "Role": "sdata.sclass.bfo_classes:Role",
28
+ "Disposition": "sdata.sclass.bfo_classes:Disposition",
29
+ "Function": "sdata.sclass.bfo_classes:Function",
30
+ "Site": "sdata.sclass.bfo_classes:Site",
31
+ "SpatialRegion": "sdata.sclass.bfo_classes:SpatialRegion",
32
+ "ContinuantFiatBoundary": "sdata.sclass.bfo_classes:ContinuantFiatBoundary",
33
+ "FiatPoint": "sdata.sclass.bfo_classes:FiatPoint",
34
+ "FiatSurface": "sdata.sclass.bfo_classes:FiatSurface",
35
+ "FiatLine": "sdata.sclass.bfo_classes:FiatLine",
36
+ "ZeroDimensionalSpatialRegion": "sdata.sclass.bfo_classes:ZeroDimensionalSpatialRegion",
37
+ "OneDimensionalSpatialRegion": "sdata.sclass.bfo_classes:OneDimensionalSpatialRegion",
38
+ "TwoDimensionalSpatialRegion": "sdata.sclass.bfo_classes:TwoDimensionalSpatialRegion",
39
+ "ThreeDimensionalSpatialRegion": "sdata.sclass.bfo_classes:ThreeDimensionalSpatialRegion",
40
+ "FiatObjectPart": "sdata.sclass.bfo_classes:FiatObjectPart",
41
+ "ObjectAggregate": "sdata.sclass.bfo_classes:ObjectAggregate",
42
+ "Object": "sdata.sclass.bfo_classes:Object",
43
+ "Process": "sdata.sclass.bfo_classes:Process",
44
+ "ProcessBoundary": "sdata.sclass.bfo_classes:ProcessBoundary",
45
+ "TemporalRegion": "sdata.sclass.bfo_classes:TemporalRegion",
46
+ "SpatiotemporalRegion": "sdata.sclass.bfo_classes:SpatiotemporalRegion",
47
+ "History": "sdata.sclass.bfo_classes:History",
48
+ "ZeroDimensionalTemporalRegion": "sdata.sclass.bfo_classes:ZeroDimensionalTemporalRegion",
49
+ "TemporalInstant": "sdata.sclass.bfo_classes:TemporalInstant",
50
+ "OneDimensionalTemporalRegion": "sdata.sclass.bfo_classes:OneDimensionalTemporalRegion",
51
+ "TemporalInterval": "sdata.sclass.bfo_classes:TemporalInterval"
52
+ }
53
+
54
+ # 1) Registry für dieses Package anlegen
55
+ _registry = LazyRegistry(__name__)
56
+
57
+ # 2) Anfangs-Exports (kann leer sein)
58
+ _registry.register_many(specs)
59
+ # 3) An Package binden (aktiviert __getattr__/__dir__)
60
+ _registry.attach()
61
+
62
+ class Entity:
63
+ """Elucidation: Entity is the most basic category in BFO, encompassing both continuants and occurrents.
64
+ It is a primitive term and cannot be defined non-circularly; instead, it is elucidated as anything that exists,
65
+ has existed, or will exist. Supplemented by axioms that all other classes are subclasses of entity."""
66
+
67
+ def __init__(self, **kwargs):
68
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000001"
69
+
70
+ def __str__(self):
71
+ return f"<bfo:{self.__class__.__name__}>"
72
+
73
+ def __repr__(self):
74
+ return f"<bfo:{self.__class__.__name__}>"
75
+
76
+ class Continuant(Entity):
77
+ """Elucidation: A continuant is an entity that persists, endures, or continues to exist through time while
78
+ maintaining its identity. Examples include objects, qualities, and functions."""
79
+
80
+ def __init__(self, **kwargs):
81
+ super().__init__(**kwargs)
82
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000002"
83
+
84
+ class Occurrent(Entity):
85
+ """Elucidation: An occurrent is an entity that unfolds or develops through time.
86
+ Examples include processes, events, and temporal regions."""
87
+
88
+ def __init__(self, **kwargs):
89
+ super().__init__(**kwargs)
90
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000003"
91
+
92
+ class IndependentContinuant(Continuant):
93
+ """Elucidation: An independent continuant is a continuant that is a bearer of quality
94
+ and realizable entity qualities, in which other entities inhere and which itself cannot inhere in anything.
95
+ Examples include material entities and sites."""
96
+
97
+ def __init__(self, **kwargs):
98
+ super().__init__(**kwargs)
99
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000004"
100
+
101
+ class GenericallyDependentContinuant(Continuant):
102
+ """Elucidation: A generically dependent continuant is a continuant that is dependent on one or other independent
103
+ continuant bearers. For any particular bearer, the dependent continuant is dependent on that bearer only.
104
+ Examples include digital files or information artifacts."""
105
+
106
+ def __init__(self, **kwargs):
107
+ super().__init__(**kwargs)
108
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000031"
109
+
110
+ class SpecificallyDependentContinuant(Continuant):
111
+ """Elucidation: A specifically dependent continuant is a continuant that inheres in or is borne by other entities.
112
+ Every instance of A requires some specific instance of B which must always be the same. Examples include qualities
113
+ and roles."""
114
+
115
+ def __init__(self, **kwargs):
116
+ super().__init__(**kwargs)
117
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000020"
118
+
119
+ class ImmaterialEntity(IndependentContinuant):
120
+ """Elucidation: An immaterial entity is an independent continuant that has no material parts.
121
+ Examples include sites, spatial regions, and fiat boundaries."""
122
+
123
+ def __init__(self, **kwargs):
124
+ super().__init__(**kwargs)
125
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000141"
126
+
127
+ class MaterialEntity(IndependentContinuant):
128
+ """Elucidation: A material entity is an independent continuant that has some portion of matter as proper
129
+ or improper part. Examples include objects and object aggregates."""
130
+
131
+ def __init__(self, **kwargs):
132
+ super().__init__(**kwargs)
133
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000040"
134
+
135
+ class Quality(SpecificallyDependentContinuant):
136
+ """Elucidation: A quality is a specifically dependent continuant that is exhibited if it inheres in an entity
137
+ or entities (internal quality) or if it is borne by an entity or entities (relational quality).
138
+ Examples include colors, shapes, or temperatures."""
139
+
140
+ def __init__(self, **kwargs):
141
+ super().__init__(**kwargs)
142
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000019"
143
+
144
+ class RealizableEntity(SpecificallyDependentContinuant):
145
+ """Elucidation: A realizable entity is a specifically dependent continuant that inheres in some independent
146
+ continuant which is not a spatial region and is of a type instances of which are realized in processes.
147
+ Examples include roles, dispositions, and functions."""
148
+
149
+ def __init__(self, **kwargs):
150
+ super().__init__(**kwargs)
151
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000017"
152
+
153
+ class RelationalQuality(Quality):
154
+ """Elucidation: A relational quality is a quality which specifically depends on two or more entities.
155
+ Attributes elucidating relationships among entities, like a parental connection."""
156
+
157
+ def __init__(self, **kwargs):
158
+ super().__init__(**kwargs)
159
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000145"
160
+
161
+ class Role(RealizableEntity):
162
+ """Elucidation: A role is a realizable entity that exists because there is some single bearer that is in
163
+ some natural or conventional context considered to play the role. Examples include student role or patient role."""
164
+
165
+ def __init__(self, **kwargs):
166
+ super().__init__(**kwargs)
167
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000023"
168
+
169
+ class Disposition(RealizableEntity):
170
+ """Elucidation: A disposition is a realizable entity that essentially causes a specific process or transformation
171
+ in the object in which it inheres, under specific circumstances. Examples include fragility or infectivity."""
172
+
173
+ def __init__(self, **kwargs):
174
+ super().__init__(**kwargs)
175
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000016"
176
+
177
+ class Function(Disposition):
178
+ """Elucidation: A function is a disposition that exists in virtue of the bearer's physical make-up and this
179
+ physical make-up is something the bearer possesses because it came into being, either through evolution or
180
+ through intentional design, in order to realize processes of a specific sort. Examples include the function of a heart or a hammer."""
181
+
182
+ def __init__(self, **kwargs):
183
+ super().__init__(**kwargs)
184
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000034"
185
+
186
+ class Site(ImmaterialEntity):
187
+ """Elucidation: A site is an immaterial entity that is a three-dimensional hole or cavity that contains some
188
+ material entity. Examples include the lumen of the gastrointestinal tract."""
189
+
190
+ def __init__(self, **kwargs):
191
+ super().__init__(**kwargs)
192
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000029"
193
+
194
+ class SpatialRegion(ImmaterialEntity):
195
+ """Elucidation: A spatial region is an immaterial entity that is a continuous part of space.
196
+ Examples include volumes, areas, lines, or points in space."""
197
+
198
+ def __init__(self, **kwargs):
199
+ super().__init__(**kwargs)
200
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000006"
201
+
202
+ class ContinuantFiatBoundary(ImmaterialEntity):
203
+ """Elucidation: A continuant fiat boundary is an immaterial entity that is of zero, one or two dimensions and
204
+ does not include a spatial region as part. Examples include fiat points, lines, and surfaces."""
205
+
206
+ def __init__(self, **kwargs):
207
+ super().__init__(**kwargs)
208
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000140"
209
+
210
+ class FiatPoint(ContinuantFiatBoundary):
211
+ """Elucidation: A fiat point is a zero-dimensional continuant fiat boundary.
212
+ Examples include the North Pole or arbitrary points on a map."""
213
+
214
+ def __init__(self, **kwargs):
215
+ super().__init__(**kwargs)
216
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000142"
217
+
218
+ class FiatSurface(ContinuantFiatBoundary):
219
+ """Elucidation: A fiat surface is a two-dimensional continuant fiat boundary.
220
+ Examples include political borders or surfaces defined by convention."""
221
+
222
+ def __init__(self, **kwargs):
223
+ super().__init__(**kwargs)
224
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000147"
225
+
226
+ class FiatLine(ContinuantFiatBoundary):
227
+ """Elucidation: A fiat line is a one-dimensional continuant fiat boundary.
228
+ Examples include lines on a map or borders."""
229
+
230
+ def __init__(self, **kwargs):
231
+ super().__init__(**kwargs)
232
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000148"
233
+
234
+ class ZeroDimensionalSpatialRegion(SpatialRegion):
235
+ """Elucidation: A zero-dimensional spatial region is a point in space."""
236
+
237
+ def __init__(self, **kwargs):
238
+ super().__init__(**kwargs)
239
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000018"
240
+
241
+ class OneDimensionalSpatialRegion(SpatialRegion):
242
+ """Elucidation: A one-dimensional spatial region is a line or a curve in space."""
243
+
244
+ def __init__(self, **kwargs):
245
+ super().__init__(**kwargs)
246
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000026"
247
+
248
+ class TwoDimensionalSpatialRegion(SpatialRegion):
249
+ """Elucidation: A two-dimensional spatial region is a surface or an area in space."""
250
+
251
+ def __init__(self, **kwargs):
252
+ super().__init__(**kwargs)
253
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000009"
254
+
255
+ class ThreeDimensionalSpatialRegion(SpatialRegion):
256
+ """Elucidation: A three-dimensional spatial region is a volume in space."""
257
+
258
+ def __init__(self, **kwargs):
259
+ super().__init__(**kwargs)
260
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000028"
261
+
262
+ class FiatObjectPart(MaterialEntity):
263
+ """Elucidation: A fiat object part is a material entity that is a proper part of some larger object, but is not
264
+ demarcated from the remainder of this object by a physical discontinuity.
265
+ Examples include hemispheres of the brain."""
266
+
267
+ def __init__(self, **kwargs):
268
+ super().__init__(**kwargs)
269
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000024"
270
+
271
+ class ObjectAggregate(MaterialEntity):
272
+ """Elucidation: An object aggregate is a material entity that is a mereological sum of separate objects.
273
+ Examples include populations or heaps."""
274
+
275
+ def __init__(self, **kwargs):
276
+ super().__init__(**kwargs)
277
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000038"
278
+
279
+ class Object(MaterialEntity):
280
+ """Elucidation: An object is a material entity that is spatially extended, maximally self-connected and
281
+ self-contained (the parts are not separated by any kind of discontinuity) and possesses some endurance or stability.
282
+ Examples include apples, planets, or humans."""
283
+
284
+ def __init__(self, **kwargs):
285
+ super().__init__(**kwargs)
286
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000030"
287
+
288
+ class Process(Occurrent):
289
+ """Elucidation: A process is an occurrent that has temporal proper parts and for some time t, p depends_on some
290
+ material entity at t. Examples include running or digestion."""
291
+
292
+ def __init__(self, **kwargs):
293
+ super().__init__(**kwargs)
294
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000015"
295
+
296
+ class ProcessBoundary(Occurrent):
297
+ """Elucidation: A process boundary is an occurrent that is the instantaneous temporal boundary of a process.
298
+ Markers denoting the commencement or termination of processes."""
299
+
300
+ def __init__(self, **kwargs):
301
+ super().__init__(**kwargs)
302
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000035"
303
+
304
+ class TemporalRegion(Occurrent):
305
+ """Elucidation: A temporal region is an occurrent that is a continuous part of time. Linear time segments
306
+ encompassing occurrences."""
307
+
308
+ def __init__(self, **kwargs):
309
+ super().__init__(**kwargs)
310
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000008"
311
+
312
+ class SpatiotemporalRegion(Occurrent):
313
+ """Elucidation: A spatiotemporal region is an occurrent that is a continuous part of spacetime. Examples include
314
+ the region occupied by a process."""
315
+
316
+ def __init__(self, **kwargs):
317
+ super().__init__(**kwargs)
318
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000005"
319
+
320
+ class History(Process):
321
+ """Elucidation: A history is a process that is the totality of processes taking place in the spatiotemporal region
322
+ occupied by a material entity or the fiat object part aggregate of such regions. Documented sequences of events
323
+ across a temporal expanse."""
324
+
325
+ def __init__(self, **kwargs):
326
+ super().__init__(**kwargs)
327
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000182"
328
+
329
+ class ZeroDimensionalTemporalRegion(TemporalRegion):
330
+ """Elucidation: A zero-dimensional temporal region is an instantaneous temporal boundary; a point in time."""
331
+
332
+ def __init__(self, **kwargs):
333
+ super().__init__(**kwargs)
334
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000007"
335
+
336
+ class TemporalInstant(ZeroDimensionalTemporalRegion):
337
+ """Elucidation: A temporal instant is a zero-dimensional temporal region that is instantaneous."""
338
+
339
+ def __init__(self, **kwargs):
340
+ super().__init__(**kwargs)
341
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000037"
342
+
343
+ class OneDimensionalTemporalRegion(TemporalRegion):
344
+ """Elucidation: A one-dimensional temporal region is a temporal interval with positive duration."""
345
+
346
+ def __init__(self, **kwargs):
347
+ super().__init__(**kwargs)
348
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000011"
349
+
350
+ class TemporalInterval(OneDimensionalTemporalRegion):
351
+ """Elucidation: A temporal interval is a one-dimensional temporal region that is extended."""
352
+
353
+ def __init__(self, **kwargs):
354
+ super().__init__(**kwargs)
355
+ self.iri = "http://purl.obolibrary.org/obo/BFO_0000168"
356
+
357
+ if __name__ == '__main__':
358
+
359
+ history = History()
360
+ print(history)
361
+
362
+ print(History)