33from abc import abstractmethod
44from typing import ClassVar
55
6- from pydantic import BaseModel
76from sqlalchemy import Column , ForeignKey , String , Table
87from sqlalchemy .dialects .postgresql import JSONB
9- from sqlalchemy .orm import DeclarativeBase , Mapped , mapped_column , relationship
8+ from sqlalchemy .orm import DeclarativeBase , Mapped , Relationship , mapped_column
9+ from sqlmodel import SQLModel
1010
1111from .enums import MemberType , SemanticRelationType
1212from .xml import (
1818)
1919
2020
21- class Dataset (BaseModel ):
21+ class Dataset (SQLModel ):
2222 """
2323 Base class for the datasets.
2424
@@ -124,12 +124,11 @@ class ConceptScheme(Base):
124124 __tablename__ = "concept_schemes"
125125
126126 iri : Mapped [str ] = mapped_column (primary_key = True )
127- notation : Mapped [str ] = mapped_column ()
128- scopeNote : Mapped [str ] = mapped_column ()
129- prefLabels : Mapped [dict [str , str ]] = mapped_column ()
127+ notation : Mapped [str ]
128+ scopeNote : Mapped [str ]
129+ prefLabels : Mapped [dict [str , str ]]
130130
131- members : Mapped [list ["Member" ]] = relationship (
132- "Member" ,
131+ members : Mapped [list ["Member" ]] = Relationship (
133132 secondary = "in_scheme" ,
134133 back_populates = "concept_schemes" ,
135134 )
@@ -190,22 +189,20 @@ class Member(Base):
190189 __tablename__ = "collection_members"
191190
192191 iri : Mapped [str ] = mapped_column (primary_key = True )
193- notation : Mapped [str ] = mapped_column ()
194- prefLabels : Mapped [dict [str , str ]] = mapped_column ()
195- member_type : Mapped [MemberType ] = mapped_column ()
192+ notation : Mapped [str ]
193+ prefLabels : Mapped [dict [str , str ]]
194+ member_type : Mapped [MemberType ]
196195
197196 __mapper_args__ = {
198197 "polymorphic_identity" : MemberType .COLLECTION_MEMBER ,
199198 "polymorphic_on" : "member_type" ,
200199 }
201200
202- concept_schemes : Mapped [list [ConceptScheme ]] = relationship (
203- "ConceptScheme" ,
201+ concept_schemes : Mapped [list [ConceptScheme ]] = Relationship (
204202 secondary = "in_scheme" ,
205203 back_populates = "members" ,
206204 )
207- collections : Mapped [list ["Collection" ]] = relationship (
208- "Collection" ,
205+ collections : Mapped [list ["Collection" ]] = Relationship (
209206 secondary = "in_collection" ,
210207 back_populates = "members" ,
211208 )
@@ -270,8 +267,7 @@ class Collection(Member):
270267 iri : Mapped [str ] = mapped_column (ForeignKey (Member .iri ), primary_key = True )
271268 member_iris : list [str ] = []
272269
273- members : Mapped [list [Member ]] = relationship (
274- "Member" ,
270+ members : Mapped [list [Member ]] = Relationship (
275271 secondary = "in_collection" ,
276272 back_populates = "collections" ,
277273 )
@@ -348,9 +344,9 @@ class Concept(Member):
348344 __tablename__ = "concepts"
349345
350346 iri : Mapped [str ] = mapped_column (ForeignKey (Member .iri ), primary_key = True )
351- identifier : Mapped [str ] = mapped_column ()
352- altLabels : Mapped [dict [str , list [str ]]] = mapped_column ()
353- scopeNotes : Mapped [dict [str , str ]] = mapped_column ()
347+ identifier : Mapped [str ]
348+ altLabels : Mapped [dict [str , list [str ]]]
349+ scopeNotes : Mapped [dict [str , str ]]
354350
355351 __mapper_args__ = {
356352 "polymorphic_identity" : MemberType .CONCEPT ,
@@ -459,7 +455,7 @@ class SemanticRelation(Base):
459455
460456 __tablename__ = "semantic_relations"
461457
462- type : Mapped [SemanticRelationType ] = mapped_column ()
458+ type : Mapped [SemanticRelationType ]
463459
464460 source_concept_iri : Mapped [str ] = mapped_column (
465461 ForeignKey (Concept .iri ),
@@ -469,8 +465,8 @@ class SemanticRelation(Base):
469465 ForeignKey (Concept .iri ),
470466 primary_key = True ,
471467 )
472- source_concept : Mapped [" Concept" ] = relationship (foreign_keys = [source_concept_iri ])
473- target_concept : Mapped [" Concept" ] = relationship (foreign_keys = [target_concept_iri ])
468+ source_concept : Mapped [Concept ] = Relationship (foreign_keys = [source_concept_iri ])
469+ target_concept : Mapped [Concept ] = Relationship (foreign_keys = [target_concept_iri ])
474470
475471 @classmethod
476472 def from_xml_element (cls , element ) -> list ["SemanticRelation" ]:
0 commit comments