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.
- sdata/__init__.py +140 -0
- sdata/base.py +684 -0
- sdata/contrib/__init__.py +0 -0
- sdata/contrib/piexif/__init__.py +12 -0
- sdata/contrib/piexif/_common.py +94 -0
- sdata/contrib/piexif/_dump.py +346 -0
- sdata/contrib/piexif/_exceptions.py +2 -0
- sdata/contrib/piexif/_exif.py +638 -0
- sdata/contrib/piexif/_insert.py +60 -0
- sdata/contrib/piexif/_load.py +270 -0
- sdata/contrib/piexif/_remove.py +56 -0
- sdata/contrib/piexif/_transplant.py +45 -0
- sdata/contrib/piexif/_webp.py +240 -0
- sdata/contrib/piexif/helper.py +66 -0
- sdata/contrib/ranger/__init__.py +8 -0
- sdata/contrib/ranger/collections/__init__.py +0 -0
- sdata/contrib/ranger/collections/rangebucketmap.py +346 -0
- sdata/contrib/ranger/collections/rangemap.py +396 -0
- sdata/contrib/ranger/collections/rangeset.py +483 -0
- sdata/contrib/ranger/range/__init__.py +0 -0
- sdata/contrib/ranger/range/cut.py +285 -0
- sdata/contrib/ranger/range/range.py +644 -0
- sdata/contrib/sobol_seq.py +394 -0
- sdata/contrib/sortedcontainers/LICENSE +13 -0
- sdata/contrib/sortedcontainers/__init__.py +74 -0
- sdata/contrib/sortedcontainers/sorteddict.py +789 -0
- sdata/contrib/sortedcontainers/sortedlist.py +2646 -0
- sdata/contrib/sortedcontainers/sortedset.py +733 -0
- sdata/contrib/sqlitedict.py +598 -0
- sdata/contrib/timeflake/__init__.py +40 -0
- sdata/contrib/timeflake/flake.py +69 -0
- sdata/contrib/timeflake/utils.py +47 -0
- sdata/deprecated/__init__.py +10 -0
- sdata/deprecated/data.py +1503 -0
- sdata/did/__init__.py +129 -0
- sdata/did/_http.py +67 -0
- sdata/did/base58btc.py +49 -0
- sdata/did/did_github.py +152 -0
- sdata/did/did_peer4.py +155 -0
- sdata/did/did_web.py +222 -0
- sdata/did/diddoc.py +75 -0
- sdata/did/ed25519.py +225 -0
- sdata/did/eddsa.py +107 -0
- sdata/did/errors.py +40 -0
- sdata/did/issue_vc.py +193 -0
- sdata/did/jose.py +126 -0
- sdata/did/keys.py +104 -0
- sdata/did/utils_didkey.py +161 -0
- sdata/did/verify_vp.py +158 -0
- sdata/doe.py +101 -0
- sdata/dtypes.py +510 -0
- sdata/experiments/__init__.py +331 -0
- sdata/experiments/blob0.py +131 -0
- sdata/experiments/file.py +42 -0
- sdata/experiments/filegroup.py +144 -0
- sdata/experiments/image_old.py +313 -0
- sdata/experiments/ks2.py +15 -0
- sdata/experiments/lapshear.py +8 -0
- sdata/experiments/material.py +7 -0
- sdata/experiments/parameters_deprecated.py +394 -0
- sdata/experiments/workbook.py +226 -0
- sdata/format.py +125 -0
- sdata/imagemeta.py +533 -0
- sdata/interactive.py +118 -0
- sdata/iolib/__init__.py +51 -0
- sdata/iolib/hashtree.py +264 -0
- sdata/iolib/json1sqlitestore.py +554 -0
- sdata/iolib/jsonsqlitestore.py +704 -0
- sdata/iolib/pud.py +242 -0
- sdata/iolib/reader.py +262 -0
- sdata/iolib/writer.py +419 -0
- sdata/metadata.py +882 -0
- sdata/parameter.py +414 -0
- sdata/schema.py +273 -0
- sdata/sclass/__init__.py +111 -0
- sdata/sclass/bfo_classes.py +362 -0
- sdata/sclass/blob.py +362 -0
- sdata/sclass/content.py +87 -0
- sdata/sclass/dataframe.py +1251 -0
- sdata/sclass/dataframegroup.py +187 -0
- sdata/sclass/dependency_graph.py +85 -0
- sdata/sclass/filereference.py +124 -0
- sdata/sclass/image.py +218 -0
- sdata/sclass/lazy_namespace.py +155 -0
- sdata/sclass/process.py +383 -0
- sdata/sclass/process_graph.py +221 -0
- sdata/sclass/zipfile.py +135 -0
- sdata/semantic.py +346 -0
- sdata/suuid.py +136 -0
- sdata/timestamp.py +336 -0
- sdata/tools.py +14 -0
- sdata/units.py +602 -0
- sdata/vocab.py +149 -0
- sdata-1.5.0.dist-info/METADATA +264 -0
- sdata-1.5.0.dist-info/RECORD +98 -0
- sdata-1.5.0.dist-info/WHEEL +5 -0
- sdata-1.5.0.dist-info/licenses/LICENSE-MIT +21 -0
- sdata-1.5.0.dist-info/top_level.txt +1 -0
sdata/sclass/__init__.py
ADDED
|
@@ -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)
|