OID Types
Overview
Object identifiers (OIDs) are used throughout the framework to uniquely identify domain objects, organizations, providers and data owners.
The framework defines a generic Oid contract and allows applications to
provide concrete implementations appropriate for their environment.
This design keeps the framework independent of any specific identifier format.
Oid
Oid is the abstract base type for all framework object identifiers.
Concrete implementations define their own validation rules while exposing a consistent API.
oid: Oid
The framework depends on Oid rather than on specific implementations.
Standardoid
Standardoid is the default INTERLIS-compatible OID implementation.
A Standardoid consists of a 16-character alphanumeric identifier.
Example:
oid = Standardoid(
"ch000000geping01",
)
print(
oid.value,
)
Invalid values raise a TeksiHookError.
Standardoid(
"invalid",
)
Using OIDs
Framework models reference Oid rather than concrete implementations.
@dataclass(
frozen=True,
slots=True,
)
class Provider:
organisation_oid: Oid
This allows the application to choose the concrete identifier type while keeping framework models unchanged.
Configuring OID Types
Parsers and services that create identifiers accept a concrete OID type.
Example:
parser = ProviderRightsParser(
oid_type=Standardoid,
)
The parser validates all parsed identifiers using the supplied OID implementation.
Creating Custom OID Types
Applications may provide their own OID implementation by inheriting from
Oid.
Example:
@dataclass(
frozen=True,
slots=True,
)
class UuidOid(Oid):
_pattern = re.compile(
r"...",
)
Custom implementations automatically integrate with framework parsers,
resolvers, evaluators and services as long as they derive from Oid.
Design Principles
Framework components depend on
Oidrather than concrete implementations.Applications select the OID implementation that matches their environment.
Validation is performed by the OID implementation itself.
OIDs are immutable value objects.
The framework is independent of INTERLIS-specific identifier formats.