about summary refs log tree commit diff stats
path: root/archive/2025/summer/bsc_gerg/src/terminology/models.py
diff options
context:
space:
mode:
authorMartin Fink <martin@finkmartin.com>2025-09-11 09:19:48 +0200
committerGitHub <noreply@github.com>2025-09-11 09:19:48 +0200
commit17af5f6fc0538f615b8612dcd2cb77c2affad63f (patch)
tree76e4c260123b68b93da2417482024ba11f9838ee /archive/2025/summer/bsc_gerg/src/terminology/models.py
parenta910d0a3e57f4de47cf2387ac239ae8d0eaca507 (diff)
parent3e5d3ca82193e8e8561beb9ceac9982f376d84e2 (diff)
downloadresearch-work-archive-artifacts-17af5f6fc0538f615b8612dcd2cb77c2affad63f.tar.gz
research-work-archive-artifacts-17af5f6fc0538f615b8612dcd2cb77c2affad63f.zip
Merge pull request #10 from walamana/main
Add bsc_gerg
Diffstat (limited to 'archive/2025/summer/bsc_gerg/src/terminology/models.py')
-rw-r--r--archive/2025/summer/bsc_gerg/src/terminology/models.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/archive/2025/summer/bsc_gerg/src/terminology/models.py b/archive/2025/summer/bsc_gerg/src/terminology/models.py
new file mode 100644
index 000000000..270751e6c
--- /dev/null
+++ b/archive/2025/summer/bsc_gerg/src/terminology/models.py
@@ -0,0 +1,34 @@
+import uuid
+from typing import Any, Optional, Annotated, List
+from uuid import UUID
+
+from pydantic import BaseModel, Field
+
+
+class TextSource(BaseModel):
+    id: UUID = Field(UUID)
+    text: str
+
+
+class Definition(BaseModel):
+    text: str
+    verified: bool
+    partial: bool
+    source: Optional[TextSource | Any] = None
+
+    def is_combined(self) -> bool:
+        return not self.verified and not self.partial
+
+    def is_partial(self) -> bool:
+        return not self.verified and self.partial
+
+class Term(BaseModel):
+    id: Annotated[UUID, Field(default_factory=uuid.uuid4)]
+    text: str
+    normalization: Optional[str] = None
+    variations: Annotated[List[str], Field(default_factory=list)]
+    occurrences: Annotated[List[UUID], Field(default_factory=list)]
+    definitions: Annotated[List[Definition], Field(default_factory=list)]
+
+    def normalized_or_text(self):
+        return self.normalization if self.normalization is not None else self.text