# Auto generated from brreg-modellkatalog-schema.yaml by pythongen.py version: 0.0.1
# Generation date: 2026-06-10T18:13:59
# Schema: brreg-modellkatalog
#
# id: https://data.norge.no/modellkatalog/brreg-modellkatalog
# description: Modellkatalog for Brønnøysundregistra sine informasjonsmodellar. Implementerer ModelDCAT-AP-NO direkte via import.
# license: https://creativecommons.org/publicdomain/zero/1.0/

import dataclasses
import re
from dataclasses import dataclass
from datetime import (
    date,
    datetime,
    time
)
from typing import (
    Any,
    ClassVar,
    Dict,
    List,
    Optional,
    Union
)

from jsonasobj2 import (
    JsonObj,
    as_dict
)
from linkml_runtime.linkml_model.meta import (
    EnumDefinition,
    PermissibleValue,
    PvFormulaOptions
)
from linkml_runtime.utils.curienamespace import CurieNamespace
from linkml_runtime.utils.enumerations import EnumDefinitionImpl
from linkml_runtime.utils.formatutils import (
    camelcase,
    sfx,
    underscore
)
from linkml_runtime.utils.metamodelcore import (
    bnode,
    empty_dict,
    empty_list
)
from linkml_runtime.utils.slot import Slot
from linkml_runtime.utils.yamlutils import (
    YAMLRoot,
    extended_float,
    extended_int,
    extended_str
)
from rdflib import (
    Namespace,
    URIRef
)

from linkml_runtime.linkml_model.types import Boolean, Date, String, Uri, Uriorcurie
from linkml_runtime.utils.metamodelcore import Bool, URI, URIorCURIE, XSDDate

metamodel_version = "1.11.0"
version = "1.0.0"

# Namespaces
ADMS = CurieNamespace('adms', 'http://www.w3.org/ns/adms#')
CAPNO = CurieNamespace('capno', 'https://data.norge.no/ap-no/common-ap-no/')
CV = CurieNamespace('cv', 'http://data.europa.eu/m8g/')
DCAT = CurieNamespace('dcat', 'http://www.w3.org/ns/dcat#')
DCT = CurieNamespace('dct', 'http://purl.org/dc/terms/')
FOAF = CurieNamespace('foaf', 'http://xmlns.com/foaf/0.1/')
LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/')
MODELLDCATNO = CurieNamespace('modelldcatno', 'https://data.norge.no/vocabulary/modelldcatno#')
OWL = CurieNamespace('owl', 'http://www.w3.org/2002/07/owl#')
PROF = CurieNamespace('prof', 'http://www.w3.org/ns/dx/prof/')
RDF = CurieNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
RDFS = CurieNamespace('rdfs', 'http://www.w3.org/2000/01/rdf-schema#')
SKOS = CurieNamespace('skos', 'http://www.w3.org/2004/02/skos/core#')
VCARD = CurieNamespace('vcard', 'http://www.w3.org/2006/vcard/ns#')
XKOS = CurieNamespace('xkos', 'http://rdf-vocabulary.ddialliance.org/xkos#')
XSD = CurieNamespace('xsd', 'http://www.w3.org/2001/XMLSchema#')
DEFAULT_ = CurieNamespace('', 'https://data.norge.no/modellkatalog/brreg-modellkatalog/')


# Types
class Spraak(str):
    """ Språk """
    type_class_uri = DCT["language"]
    type_class_curie = "dct:language"
    type_name = "Spraak"
    type_model_uri = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Spraak")


class LangString(str):
    """ Språktagget streng (rdf:langString). """
    type_class_uri = RDF["langString"]
    type_class_curie = "rdf:langString"
    type_name = "LangString"
    type_model_uri = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/LangString")


class NonNegativeInteger(int):
    """ Ikkje-negativ heltalsverdi (xsd:nonNegativeInteger). """
    type_class_uri = XSD["nonNegativeInteger"]
    type_class_curie = "xsd:nonNegativeInteger"
    type_name = "NonNegativeInteger"
    type_model_uri = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/NonNegativeInteger")


class Duration(str):
    """ ISO 8601-varigheit (xsd:duration), t.d. PT15M. """
    type_class_uri = XSD["duration"]
    type_class_curie = "xsd:duration"
    type_name = "Duration"
    type_model_uri = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Duration")


class GYear(str):
    """ Gregorisk årstal (xsd:gYear), t.d. 2024. """
    type_class_uri = XSD["gYear"]
    type_class_curie = "xsd:gYear"
    type_name = "GYear"
    type_model_uri = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/GYear")


# Class references
class KatalogisertRessursId(URIorCURIE):
    pass


class AktoerId(URIorCURIE):
    pass


class KontaktopplysningId(URIorCURIE):
    pass


class StandardId(URIorCURIE):
    pass


class LisensdokumentId(URIorCURIE):
    pass


class LokasjonId(URIorCURIE):
    pass


class TidsperiodeId(URIorCURIE):
    pass


class DokumentId(URIorCURIE):
    pass


class ModellkatalogId(URIorCURIE):
    pass


class InformasjonsmodellId(URIorCURIE):
    pass


class ModellelementId(URIorCURIE):
    pass


class ObjekttypeId(ModellelementId):
    pass


class RotobjekttypeId(ModellelementId):
    pass


class DatatypeId(ModellelementId):
    pass


class EnkeltypeId(ModellelementId):
    pass


class KodelisteId(ModellelementId):
    pass


class ModulId(ModellelementId):
    pass


class EgenskapId(URIorCURIE):
    pass


class AttributtId(EgenskapId):
    pass


class AssosiasjonId(EgenskapId):
    pass


class RolleId(EgenskapId):
    pass


class SpesialiseringId(EgenskapId):
    pass


class KomposisjonId(EgenskapId):
    pass


class RealiseringId(EgenskapId):
    pass


class AbstraksjonId(EgenskapId):
    pass


class AvhengighetId(EgenskapId):
    pass


class SamlingId(EgenskapId):
    pass


class ValgId(EgenskapId):
    pass


class AlleId(ValgId):
    pass


class NoenAvId(ValgId):
    pass


class NoteId(URIorCURIE):
    pass


class BegrensningsregelId(NoteId):
    pass


class OgId(BegrensningsregelId):
    pass


class EllerId(BegrensningsregelId):
    pass


class EntenEllerId(BegrensningsregelId):
    pass


class IkkeId(BegrensningsregelId):
    pass


class KodeelementId(URIorCURIE):
    pass


class MediatypeId(URIorCURIE):
    pass


class KonseptId(URIorCURIE):
    pass


class BegrepssamlingId(URIorCURIE):
    pass


@dataclass(repr=False)
class ModellkatalogContainer(YAMLRoot):
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/ModellkatalogContainer")
    class_class_curie: ClassVar[str] = None
    class_name: ClassVar[str] = "ModellkatalogContainer"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/ModellkatalogContainer")

    modellkataloger: Optional[Union[dict[Union[str, ModellkatalogId], Union[dict, "Modellkatalog"]], list[Union[dict, "Modellkatalog"]]]] = empty_dict()
    informasjonsmodeller: Optional[Union[dict[Union[str, InformasjonsmodellId], Union[dict, "Informasjonsmodell"]], list[Union[dict, "Informasjonsmodell"]]]] = empty_dict()
    objekttyper: Optional[Union[dict[Union[str, ObjekttypeId], Union[dict, "Objekttype"]], list[Union[dict, "Objekttype"]]]] = empty_dict()
    kodelister: Optional[Union[dict[Union[str, KodelisteId], Union[dict, "Kodeliste"]], list[Union[dict, "Kodeliste"]]]] = empty_dict()
    egenskaper: Optional[Union[dict[Union[str, EgenskapId], Union[dict, "Egenskap"]], list[Union[dict, "Egenskap"]]]] = empty_dict()
    aktoerer: Optional[Union[dict[Union[str, AktoerId], Union[dict, "Aktoer"]], list[Union[dict, "Aktoer"]]]] = empty_dict()
    kontaktpunkt: Optional[Union[list[Union[str, KontaktopplysningId]], dict[Union[str, KontaktopplysningId], Union[dict, "Kontaktopplysning"]]]] = empty_dict()

    def __post_init__(self, *_: str, **kwargs: Any):
        self._normalize_inlined_as_list(slot_name="modellkataloger", slot_type=Modellkatalog, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="informasjonsmodeller", slot_type=Informasjonsmodell, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="objekttyper", slot_type=Objekttype, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="kodelister", slot_type=Kodeliste, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="egenskaper", slot_type=Egenskap, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="aktoerer", slot_type=Aktoer, key_name="id", keyed=True)

        self._normalize_inlined_as_list(slot_name="kontaktpunkt", slot_type=Kontaktopplysning, key_name="id", keyed=True)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class KatalogisertRessurs(YAMLRoot):
    """
    Basisklasse for ressursar som kan katalogiserast (dcat:Resource).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCAT["Resource"]
    class_class_curie: ClassVar[str] = "dcat:Resource"
    class_name: ClassVar[str] = "KatalogisertRessurs"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/KatalogisertRessurs")

    id: Union[str, KatalogisertRessursId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KatalogisertRessursId):
            self.id = KatalogisertRessursId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Aktoer(YAMLRoot):
    """
    Ein aktør (person, organisasjon eller system) med ansvar for ein ressurs.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = FOAF["Agent"]
    class_class_curie: ClassVar[str] = "foaf:Agent"
    class_name: ClassVar[str] = "Aktoer"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Aktoer")

    id: Union[str, AktoerId] = None
    navn_aktoer: Optional[Union[str, list[str]]] = empty_list()
    identifikator_literal: Optional[str] = None
    type_concept: Optional[Union[str, KonseptId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AktoerId):
            self.id = AktoerId(self.id)

        if not isinstance(self.navn_aktoer, list):
            self.navn_aktoer = [self.navn_aktoer] if self.navn_aktoer is not None else []
        self.navn_aktoer = [v if isinstance(v, str) else str(v) for v in self.navn_aktoer]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if self.type_concept is not None and not isinstance(self.type_concept, KonseptId):
            self.type_concept = KonseptId(self.type_concept)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Kontaktopplysning(YAMLRoot):
    """
    Kontaktinformasjon (vcard:Organization).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = VCARD["Organization"]
    class_class_curie: ClassVar[str] = "vcard:Organization"
    class_name: ClassVar[str] = "Kontaktopplysning"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Kontaktopplysning")

    id: Union[str, KontaktopplysningId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KontaktopplysningId):
            self.id = KontaktopplysningId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Standard(YAMLRoot):
    """
    Ein standard (dct:Standard).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCT["Standard"]
    class_class_curie: ClassVar[str] = "dct:Standard"
    class_name: ClassVar[str] = "Standard"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Standard")

    id: Union[str, StandardId] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    har_referanse: Optional[Union[Union[str, URI], list[Union[str, URI]]]] = empty_list()
    versjonsnummer: Optional[str] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, StandardId):
            self.id = StandardId(self.id)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.har_referanse, list):
            self.har_referanse = [self.har_referanse] if self.har_referanse is not None else []
        self.har_referanse = [v if isinstance(v, URI) else URI(v) for v in self.har_referanse]

        if self.versjonsnummer is not None and not isinstance(self.versjonsnummer, str):
            self.versjonsnummer = str(self.versjonsnummer)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Lisensdokument(YAMLRoot):
    """
    Eit lisensdokument (dct:LicenseDocument).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCT["LicenseDocument"]
    class_class_curie: ClassVar[str] = "dct:LicenseDocument"
    class_name: ClassVar[str] = "Lisensdokument"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Lisensdokument")

    id: Union[str, LisensdokumentId] = None
    type_concept: Optional[Union[str, KonseptId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, LisensdokumentId):
            self.id = LisensdokumentId(self.id)

        if self.type_concept is not None and not isinstance(self.type_concept, KonseptId):
            self.type_concept = KonseptId(self.type_concept)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Lokasjon(YAMLRoot):
    """
    Eit geografisk område (dct:Location).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCT["Location"]
    class_class_curie: ClassVar[str] = "dct:Location"
    class_name: ClassVar[str] = "Lokasjon"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Lokasjon")

    id: Union[str, LokasjonId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, LokasjonId):
            self.id = LokasjonId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Tidsperiode(YAMLRoot):
    """
    Eit tidsintervall med start- og sluttdato.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCT["PeriodOfTime"]
    class_class_curie: ClassVar[str] = "dct:PeriodOfTime"
    class_name: ClassVar[str] = "Tidsperiode"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Tidsperiode")

    id: Union[str, TidsperiodeId] = None
    startdato: Optional[Union[str, XSDDate]] = None
    sluttdato: Optional[Union[str, XSDDate]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, TidsperiodeId):
            self.id = TidsperiodeId(self.id)

        if self.startdato is not None and not isinstance(self.startdato, XSDDate):
            self.startdato = XSDDate(self.startdato)

        if self.sluttdato is not None and not isinstance(self.sluttdato, XSDDate):
            self.sluttdato = XSDDate(self.sluttdato)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Dokument(YAMLRoot):
    """
    Eit dokument (foaf:Document).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = FOAF["Document"]
    class_class_curie: ClassVar[str] = "foaf:Document"
    class_name: ClassVar[str] = "Dokument"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Dokument")

    id: Union[str, DokumentId] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    spraak: Optional[Union[str, list[str]]] = empty_list()
    format: Optional[str] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, DokumentId):
            self.id = DokumentId(self.id)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.spraak, list):
            self.spraak = [self.spraak] if self.spraak is not None else []
        self.spraak = [v if isinstance(v, str) else str(v) for v in self.spraak]

        if self.format is not None and not isinstance(self.format, str):
            self.format = str(self.format)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Modellkatalog(YAMLRoot):
    """
    Ei kuratert samling av metadata om informasjonsmodellar (dcat:Catalog).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCAT["Catalog"]
    class_class_curie: ClassVar[str] = "dcat:Catalog"
    class_name: ClassVar[str] = "Modellkatalog"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Modellkatalog")

    id: Union[str, ModellkatalogId] = None
    har_del: Union[Union[str, KatalogisertRessursId], list[Union[str, KatalogisertRessursId]]] = None
    identifikator_literal: str = None
    kontaktpunkt: Union[Union[str, KontaktopplysningId], list[Union[str, KontaktopplysningId]]] = None
    utgiver: Union[str, AktoerId] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    beskrivelse: Optional[Union[str, list[str]]] = empty_list()
    endringsdato: Optional[Union[str, XSDDate]] = None
    heimeside: Optional[Union[Union[str, URI], list[Union[str, URI]]]] = empty_list()
    lisens: Optional[Union[str, LisensdokumentId]] = None
    modell: Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]] = empty_list()
    spraak: Optional[Union[str, list[str]]] = empty_list()
    tema: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    temaer: Optional[Union[Union[str, BegrepssamlingId], list[Union[str, BegrepssamlingId]]]] = empty_list()
    utgivelsesdato: Optional[Union[str, XSDDate]] = None
    er_del_av: Optional[Union[str, ModellkatalogId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, ModellkatalogId):
            self.id = ModellkatalogId(self.id)

        if self._is_empty(self.har_del):
            self.MissingRequiredField("har_del")
        if not isinstance(self.har_del, list):
            self.har_del = [self.har_del] if self.har_del is not None else []
        self.har_del = [v if isinstance(v, KatalogisertRessursId) else KatalogisertRessursId(v) for v in self.har_del]

        if self._is_empty(self.identifikator_literal):
            self.MissingRequiredField("identifikator_literal")
        if not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if self._is_empty(self.kontaktpunkt):
            self.MissingRequiredField("kontaktpunkt")
        if not isinstance(self.kontaktpunkt, list):
            self.kontaktpunkt = [self.kontaktpunkt] if self.kontaktpunkt is not None else []
        self.kontaktpunkt = [v if isinstance(v, KontaktopplysningId) else KontaktopplysningId(v) for v in self.kontaktpunkt]

        if self._is_empty(self.utgiver):
            self.MissingRequiredField("utgiver")
        if not isinstance(self.utgiver, AktoerId):
            self.utgiver = AktoerId(self.utgiver)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.beskrivelse, list):
            self.beskrivelse = [self.beskrivelse] if self.beskrivelse is not None else []
        self.beskrivelse = [v if isinstance(v, str) else str(v) for v in self.beskrivelse]

        if self.endringsdato is not None and not isinstance(self.endringsdato, XSDDate):
            self.endringsdato = XSDDate(self.endringsdato)

        if not isinstance(self.heimeside, list):
            self.heimeside = [self.heimeside] if self.heimeside is not None else []
        self.heimeside = [v if isinstance(v, URI) else URI(v) for v in self.heimeside]

        if self.lisens is not None and not isinstance(self.lisens, LisensdokumentId):
            self.lisens = LisensdokumentId(self.lisens)

        if not isinstance(self.modell, list):
            self.modell = [self.modell] if self.modell is not None else []
        self.modell = [v if isinstance(v, InformasjonsmodellId) else InformasjonsmodellId(v) for v in self.modell]

        if not isinstance(self.spraak, list):
            self.spraak = [self.spraak] if self.spraak is not None else []
        self.spraak = [v if isinstance(v, str) else str(v) for v in self.spraak]

        if not isinstance(self.tema, list):
            self.tema = [self.tema] if self.tema is not None else []
        self.tema = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.tema]

        if not isinstance(self.temaer, list):
            self.temaer = [self.temaer] if self.temaer is not None else []
        self.temaer = [v if isinstance(v, BegrepssamlingId) else BegrepssamlingId(v) for v in self.temaer]

        if self.utgivelsesdato is not None and not isinstance(self.utgivelsesdato, XSDDate):
            self.utgivelsesdato = XSDDate(self.utgivelsesdato)

        if self.er_del_av is not None and not isinstance(self.er_del_av, ModellkatalogId):
            self.er_del_av = ModellkatalogId(self.er_del_av)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Informasjonsmodell(YAMLRoot):
    """
    Ein informasjonsmodell som er katalogisert i ein modellkatalog (modelldcatno:InformationModel).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["InformationModel"]
    class_class_curie: ClassVar[str] = "modelldcatno:InformationModel"
    class_name: ClassVar[str] = "Informasjonsmodell"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Informasjonsmodell")

    id: Union[str, InformasjonsmodellId] = None
    utgiver: Union[str, AktoerId] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    begrep: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    beskrivelse: Optional[Union[str, list[str]]] = empty_list()
    identifikator_literal: Optional[str] = None
    informasjonsmodellidentifikator: Optional[str] = None
    inneholder_modellelement: Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]] = empty_list()
    kontaktpunkt: Optional[Union[Union[str, KontaktopplysningId], list[Union[str, KontaktopplysningId]]]] = empty_list()
    lisens: Optional[Union[str, LisensdokumentId]] = None
    tema: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    dekningsomraade: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    endringsdato: Optional[Union[str, XSDDate]] = None
    er_del_av: Optional[Union[str, InformasjonsmodellId]] = None
    er_profil_av: Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]] = empty_list()
    er_erstattet_av: Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]] = empty_list()
    erstatter: Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]] = empty_list()
    har_del: Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]] = empty_list()
    finnes_i_format: Optional[Union[Union[str, DokumentId], list[Union[str, DokumentId]]]] = empty_list()
    gyldighetsperiode: Optional[Union[Union[str, TidsperiodeId], list[Union[str, TidsperiodeId]]]] = empty_list()
    heimeside: Optional[Union[Union[str, URI], list[Union[str, URI]]]] = empty_list()
    er_i_samsvar_med: Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]] = empty_list()
    status: Optional[Union[str, KonseptId]] = None
    nokkelord: Optional[Union[str, list[str]]] = empty_list()
    produsent: Optional[Union[str, AktoerId]] = None
    spraak: Optional[Union[str, list[str]]] = empty_list()
    type_concept: Optional[Union[str, KonseptId]] = None
    utgivelsesdato: Optional[Union[str, XSDDate]] = None
    versjonsnummer: Optional[str] = None
    versjonsmerknad: Optional[Union[str, list[str]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, InformasjonsmodellId):
            self.id = InformasjonsmodellId(self.id)

        if self._is_empty(self.utgiver):
            self.MissingRequiredField("utgiver")
        if not isinstance(self.utgiver, AktoerId):
            self.utgiver = AktoerId(self.utgiver)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.begrep, list):
            self.begrep = [self.begrep] if self.begrep is not None else []
        self.begrep = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.begrep]

        if not isinstance(self.beskrivelse, list):
            self.beskrivelse = [self.beskrivelse] if self.beskrivelse is not None else []
        self.beskrivelse = [v if isinstance(v, str) else str(v) for v in self.beskrivelse]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if self.informasjonsmodellidentifikator is not None and not isinstance(self.informasjonsmodellidentifikator, str):
            self.informasjonsmodellidentifikator = str(self.informasjonsmodellidentifikator)

        if not isinstance(self.inneholder_modellelement, list):
            self.inneholder_modellelement = [self.inneholder_modellelement] if self.inneholder_modellelement is not None else []
        self.inneholder_modellelement = [v if isinstance(v, ModellelementId) else ModellelementId(v) for v in self.inneholder_modellelement]

        if not isinstance(self.kontaktpunkt, list):
            self.kontaktpunkt = [self.kontaktpunkt] if self.kontaktpunkt is not None else []
        self.kontaktpunkt = [v if isinstance(v, KontaktopplysningId) else KontaktopplysningId(v) for v in self.kontaktpunkt]

        if self.lisens is not None and not isinstance(self.lisens, LisensdokumentId):
            self.lisens = LisensdokumentId(self.lisens)

        if not isinstance(self.tema, list):
            self.tema = [self.tema] if self.tema is not None else []
        self.tema = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.tema]

        if not isinstance(self.dekningsomraade, list):
            self.dekningsomraade = [self.dekningsomraade] if self.dekningsomraade is not None else []
        self.dekningsomraade = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.dekningsomraade]

        if self.endringsdato is not None and not isinstance(self.endringsdato, XSDDate):
            self.endringsdato = XSDDate(self.endringsdato)

        if self.er_del_av is not None and not isinstance(self.er_del_av, InformasjonsmodellId):
            self.er_del_av = InformasjonsmodellId(self.er_del_av)

        if not isinstance(self.er_profil_av, list):
            self.er_profil_av = [self.er_profil_av] if self.er_profil_av is not None else []
        self.er_profil_av = [v if isinstance(v, StandardId) else StandardId(v) for v in self.er_profil_av]

        if not isinstance(self.er_erstattet_av, list):
            self.er_erstattet_av = [self.er_erstattet_av] if self.er_erstattet_av is not None else []
        self.er_erstattet_av = [v if isinstance(v, InformasjonsmodellId) else InformasjonsmodellId(v) for v in self.er_erstattet_av]

        if not isinstance(self.erstatter, list):
            self.erstatter = [self.erstatter] if self.erstatter is not None else []
        self.erstatter = [v if isinstance(v, InformasjonsmodellId) else InformasjonsmodellId(v) for v in self.erstatter]

        if not isinstance(self.har_del, list):
            self.har_del = [self.har_del] if self.har_del is not None else []
        self.har_del = [v if isinstance(v, InformasjonsmodellId) else InformasjonsmodellId(v) for v in self.har_del]

        if not isinstance(self.finnes_i_format, list):
            self.finnes_i_format = [self.finnes_i_format] if self.finnes_i_format is not None else []
        self.finnes_i_format = [v if isinstance(v, DokumentId) else DokumentId(v) for v in self.finnes_i_format]

        if not isinstance(self.gyldighetsperiode, list):
            self.gyldighetsperiode = [self.gyldighetsperiode] if self.gyldighetsperiode is not None else []
        self.gyldighetsperiode = [v if isinstance(v, TidsperiodeId) else TidsperiodeId(v) for v in self.gyldighetsperiode]

        if not isinstance(self.heimeside, list):
            self.heimeside = [self.heimeside] if self.heimeside is not None else []
        self.heimeside = [v if isinstance(v, URI) else URI(v) for v in self.heimeside]

        if not isinstance(self.er_i_samsvar_med, list):
            self.er_i_samsvar_med = [self.er_i_samsvar_med] if self.er_i_samsvar_med is not None else []
        self.er_i_samsvar_med = [v if isinstance(v, StandardId) else StandardId(v) for v in self.er_i_samsvar_med]

        if self.status is not None and not isinstance(self.status, KonseptId):
            self.status = KonseptId(self.status)

        if not isinstance(self.nokkelord, list):
            self.nokkelord = [self.nokkelord] if self.nokkelord is not None else []
        self.nokkelord = [v if isinstance(v, str) else str(v) for v in self.nokkelord]

        if self.produsent is not None and not isinstance(self.produsent, AktoerId):
            self.produsent = AktoerId(self.produsent)

        if not isinstance(self.spraak, list):
            self.spraak = [self.spraak] if self.spraak is not None else []
        self.spraak = [v if isinstance(v, str) else str(v) for v in self.spraak]

        if self.type_concept is not None and not isinstance(self.type_concept, KonseptId):
            self.type_concept = KonseptId(self.type_concept)

        if self.utgivelsesdato is not None and not isinstance(self.utgivelsesdato, XSDDate):
            self.utgivelsesdato = XSDDate(self.utgivelsesdato)

        if self.versjonsnummer is not None and not isinstance(self.versjonsnummer, str):
            self.versjonsnummer = str(self.versjonsnummer)

        if not isinstance(self.versjonsmerknad, list):
            self.versjonsmerknad = [self.versjonsmerknad] if self.versjonsmerknad is not None else []
        self.versjonsmerknad = [v if isinstance(v, str) else str(v) for v in self.versjonsmerknad]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Modellelement(YAMLRoot):
    """
    Abstrakt basisklasse for alle modellelement i ein informasjonsmodell.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["ModelElement"]
    class_class_curie: ClassVar[str] = "modelldcatno:ModelElement"
    class_name: ClassVar[str] = "Modellelement"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Modellelement")

    id: Union[str, ModellelementId] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    begrep: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    identifikator_literal: Optional[str] = None
    har_egenskap: Optional[Union[Union[str, EgenskapId], list[Union[str, EgenskapId]]]] = empty_list()
    beskrivelse: Optional[Union[str, list[str]]] = empty_list()
    tilhoerer_modul: Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, ModellelementId):
            self.id = ModellelementId(self.id)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.begrep, list):
            self.begrep = [self.begrep] if self.begrep is not None else []
        self.begrep = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.begrep]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if not isinstance(self.har_egenskap, list):
            self.har_egenskap = [self.har_egenskap] if self.har_egenskap is not None else []
        self.har_egenskap = [v if isinstance(v, EgenskapId) else EgenskapId(v) for v in self.har_egenskap]

        if not isinstance(self.beskrivelse, list):
            self.beskrivelse = [self.beskrivelse] if self.beskrivelse is not None else []
        self.beskrivelse = [v if isinstance(v, str) else str(v) for v in self.beskrivelse]

        if not isinstance(self.tilhoerer_modul, list):
            self.tilhoerer_modul = [self.tilhoerer_modul] if self.tilhoerer_modul is not None else []
        self.tilhoerer_modul = [v if isinstance(v, ModulId) else ModulId(v) for v in self.tilhoerer_modul]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Objekttype(Modellelement):
    """
    Ein objekttype — ein klasse med eigenskapar i informasjonsmodellen.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["ObjectType"]
    class_class_curie: ClassVar[str] = "modelldcatno:ObjectType"
    class_name: ClassVar[str] = "Objekttype"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Objekttype")

    id: Union[str, ObjekttypeId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, ObjekttypeId):
            self.id = ObjekttypeId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Rotobjekttype(Modellelement):
    """
    Ein rotobjekttype — toppnivå-klasse i informasjonsmodellen.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["RootObjectType"]
    class_class_curie: ClassVar[str] = "modelldcatno:RootObjectType"
    class_name: ClassVar[str] = "Rotobjekttype"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Rotobjekttype")

    id: Union[str, RotobjekttypeId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, RotobjekttypeId):
            self.id = RotobjekttypeId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Datatype(Modellelement):
    """
    Ein datatype — ein strukturert samansett type.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["DataType"]
    class_class_curie: ClassVar[str] = "modelldcatno:DataType"
    class_name: ClassVar[str] = "Datatype"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Datatype")

    id: Union[str, DatatypeId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, DatatypeId):
            self.id = DatatypeId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Enkeltype(Modellelement):
    """
    Ein enkel type med restriksjonar (xsd-fasettar).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["SimpleType"]
    class_class_curie: ClassVar[str] = "modelldcatno:SimpleType"
    class_name: ClassVar[str] = "Enkeltype"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Enkeltype")

    id: Union[str, EnkeltypeId] = None
    typedefinisjon: Optional[Union[str, URI]] = None
    antall_desimaler: Optional[int] = None
    lengde: Optional[int] = None
    maksimum_ikke_inklusivt: Optional[str] = None
    maksimum_inklusivt: Optional[str] = None
    maks_lengde: Optional[int] = None
    minimum_ikke_inklusivt: Optional[str] = None
    minimum_inklusivt: Optional[str] = None
    minimum_lengde: Optional[int] = None
    moenster: Optional[str] = None
    totalt_antall_siffer: Optional[int] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, EnkeltypeId):
            self.id = EnkeltypeId(self.id)

        if self.typedefinisjon is not None and not isinstance(self.typedefinisjon, URI):
            self.typedefinisjon = URI(self.typedefinisjon)

        if self.antall_desimaler is not None and not isinstance(self.antall_desimaler, int):
            self.antall_desimaler = int(self.antall_desimaler)

        if self.lengde is not None and not isinstance(self.lengde, int):
            self.lengde = int(self.lengde)

        if self.maksimum_ikke_inklusivt is not None and not isinstance(self.maksimum_ikke_inklusivt, str):
            self.maksimum_ikke_inklusivt = str(self.maksimum_ikke_inklusivt)

        if self.maksimum_inklusivt is not None and not isinstance(self.maksimum_inklusivt, str):
            self.maksimum_inklusivt = str(self.maksimum_inklusivt)

        if self.maks_lengde is not None and not isinstance(self.maks_lengde, int):
            self.maks_lengde = int(self.maks_lengde)

        if self.minimum_ikke_inklusivt is not None and not isinstance(self.minimum_ikke_inklusivt, str):
            self.minimum_ikke_inklusivt = str(self.minimum_ikke_inklusivt)

        if self.minimum_inklusivt is not None and not isinstance(self.minimum_inklusivt, str):
            self.minimum_inklusivt = str(self.minimum_inklusivt)

        if self.minimum_lengde is not None and not isinstance(self.minimum_lengde, int):
            self.minimum_lengde = int(self.minimum_lengde)

        if self.moenster is not None and not isinstance(self.moenster, str):
            self.moenster = str(self.moenster)

        if self.totalt_antall_siffer is not None and not isinstance(self.totalt_antall_siffer, int):
            self.totalt_antall_siffer = int(self.totalt_antall_siffer)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Kodeliste(Modellelement):
    """
    Ei kodeliste — eit kontrollert vokabular av tillate verdiar.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["CodeList"]
    class_class_curie: ClassVar[str] = "modelldcatno:CodeList"
    class_name: ClassVar[str] = "Kodeliste"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Kodeliste")

    id: Union[str, KodelisteId] = None
    har_referanse: Optional[Union[Union[str, URI], list[Union[str, URI]]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KodelisteId):
            self.id = KodelisteId(self.id)

        if not isinstance(self.har_referanse, list):
            self.har_referanse = [self.har_referanse] if self.har_referanse is not None else []
        self.har_referanse = [v if isinstance(v, URI) else URI(v) for v in self.har_referanse]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Modul(Modellelement):
    """
    Ein modul som grupperer modellelement i informasjonsmodellen.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Module"]
    class_class_curie: ClassVar[str] = "modelldcatno:Module"
    class_name: ClassVar[str] = "Modul"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Modul")

    id: Union[str, ModulId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, ModulId):
            self.id = ModulId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Egenskap(YAMLRoot):
    """
    Abstrakt basisklasse for eigenskapar knytt til eit modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Property"]
    class_class_curie: ClassVar[str] = "modelldcatno:Property"
    class_name: ClassVar[str] = "Egenskap"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Egenskap")

    id: Union[str, EgenskapId] = None
    begrep: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    identifikator_literal: Optional[str] = None
    navigerbar: Optional[Union[bool, Bool]] = None
    nedre_multiplisitet: Optional[int] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    oevre_multiplisitet: Optional[str] = None
    beskrivelse: Optional[Union[str, list[str]]] = empty_list()
    har_type: Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]] = empty_list()
    relasjonsegenskapsnavn: Optional[Union[str, list[str]]] = empty_list()
    sekvensnummer: Optional[int] = None
    tilhoerer_modul: Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]] = empty_list()
    utgjor_symmetrisk_relasjon_med: Optional[Union[str, EgenskapId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, EgenskapId):
            self.id = EgenskapId(self.id)

        if not isinstance(self.begrep, list):
            self.begrep = [self.begrep] if self.begrep is not None else []
        self.begrep = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.begrep]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if self.navigerbar is not None and not isinstance(self.navigerbar, Bool):
            self.navigerbar = Bool(self.navigerbar)

        if self.nedre_multiplisitet is not None and not isinstance(self.nedre_multiplisitet, int):
            self.nedre_multiplisitet = int(self.nedre_multiplisitet)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if self.oevre_multiplisitet is not None and not isinstance(self.oevre_multiplisitet, str):
            self.oevre_multiplisitet = str(self.oevre_multiplisitet)

        if not isinstance(self.beskrivelse, list):
            self.beskrivelse = [self.beskrivelse] if self.beskrivelse is not None else []
        self.beskrivelse = [v if isinstance(v, str) else str(v) for v in self.beskrivelse]

        if not isinstance(self.har_type, list):
            self.har_type = [self.har_type] if self.har_type is not None else []
        self.har_type = [v if isinstance(v, ModellelementId) else ModellelementId(v) for v in self.har_type]

        if not isinstance(self.relasjonsegenskapsnavn, list):
            self.relasjonsegenskapsnavn = [self.relasjonsegenskapsnavn] if self.relasjonsegenskapsnavn is not None else []
        self.relasjonsegenskapsnavn = [v if isinstance(v, str) else str(v) for v in self.relasjonsegenskapsnavn]

        if self.sekvensnummer is not None and not isinstance(self.sekvensnummer, int):
            self.sekvensnummer = int(self.sekvensnummer)

        if not isinstance(self.tilhoerer_modul, list):
            self.tilhoerer_modul = [self.tilhoerer_modul] if self.tilhoerer_modul is not None else []
        self.tilhoerer_modul = [v if isinstance(v, ModulId) else ModulId(v) for v in self.tilhoerer_modul]

        if self.utgjor_symmetrisk_relasjon_med is not None and not isinstance(self.utgjor_symmetrisk_relasjon_med, EgenskapId):
            self.utgjor_symmetrisk_relasjon_med = EgenskapId(self.utgjor_symmetrisk_relasjon_med)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Attributt(Egenskap):
    """
    Ein attributt — ein eigenskap med ein datatype eller enkel type som verdi.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Attribute"]
    class_class_curie: ClassVar[str] = "modelldcatno:Attribute"
    class_name: ClassVar[str] = "Attributt"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Attributt")

    id: Union[str, AttributtId] = None
    har_datatype: Optional[Union[Union[str, DatatypeId], list[Union[str, DatatypeId]]]] = empty_list()
    har_enkel_type: Optional[Union[Union[str, EnkeltypeId], list[Union[str, EnkeltypeId]]]] = empty_list()
    har_verdi_fra: Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]] = empty_list()
    inneholder_objekttype: Optional[Union[Union[str, ObjekttypeId], list[Union[str, ObjekttypeId]]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AttributtId):
            self.id = AttributtId(self.id)

        if not isinstance(self.har_datatype, list):
            self.har_datatype = [self.har_datatype] if self.har_datatype is not None else []
        self.har_datatype = [v if isinstance(v, DatatypeId) else DatatypeId(v) for v in self.har_datatype]

        if not isinstance(self.har_enkel_type, list):
            self.har_enkel_type = [self.har_enkel_type] if self.har_enkel_type is not None else []
        self.har_enkel_type = [v if isinstance(v, EnkeltypeId) else EnkeltypeId(v) for v in self.har_enkel_type]

        if not isinstance(self.har_verdi_fra, list):
            self.har_verdi_fra = [self.har_verdi_fra] if self.har_verdi_fra is not None else []
        self.har_verdi_fra = [v if isinstance(v, KodelisteId) else KodelisteId(v) for v in self.har_verdi_fra]

        if not isinstance(self.inneholder_objekttype, list):
            self.inneholder_objekttype = [self.inneholder_objekttype] if self.inneholder_objekttype is not None else []
        self.inneholder_objekttype = [v if isinstance(v, ObjekttypeId) else ObjekttypeId(v) for v in self.inneholder_objekttype]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Assosiasjon(Egenskap):
    """
    Ein assosiasjon — ein eigenskap som refererer til eit anna modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Association"]
    class_class_curie: ClassVar[str] = "modelldcatno:Association"
    class_name: ClassVar[str] = "Assosiasjon"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Assosiasjon")

    id: Union[str, AssosiasjonId] = None
    refererer_til: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AssosiasjonId):
            self.id = AssosiasjonId(self.id)

        if self.refererer_til is not None and not isinstance(self.refererer_til, ModellelementId):
            self.refererer_til = ModellelementId(self.refererer_til)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Rolle(Egenskap):
    """
    Ein rolle — ein eigenskap som knyter ein objekttype til ein assosiasjon.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Role"]
    class_class_curie: ClassVar[str] = "modelldcatno:Role"
    class_name: ClassVar[str] = "Rolle"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Rolle")

    id: Union[str, RolleId] = None
    har_objekttype: Optional[Union[str, ObjekttypeId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, RolleId):
            self.id = RolleId(self.id)

        if self.har_objekttype is not None and not isinstance(self.har_objekttype, ObjekttypeId):
            self.har_objekttype = ObjekttypeId(self.har_objekttype)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Spesialisering(Egenskap):
    """
    Ein spesialisering — eit arveforhold frå eit spesielt til eit generelt modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Specialization"]
    class_class_curie: ClassVar[str] = "modelldcatno:Specialization"
    class_name: ClassVar[str] = "Spesialisering"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Spesialisering")

    id: Union[str, SpesialiseringId] = None
    har_generelt_begrep: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, SpesialiseringId):
            self.id = SpesialiseringId(self.id)

        if self.har_generelt_begrep is not None and not isinstance(self.har_generelt_begrep, ModellelementId):
            self.har_generelt_begrep = ModellelementId(self.har_generelt_begrep)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Komposisjon(Egenskap):
    """
    Ein sammensetning — ein sterk eigarelskapsrelasjon mellom modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Composition"]
    class_class_curie: ClassVar[str] = "modelldcatno:Composition"
    class_name: ClassVar[str] = "Komposisjon"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Komposisjon")

    id: Union[str, KomposisjonId] = None
    inneholder: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KomposisjonId):
            self.id = KomposisjonId(self.id)

        if self.inneholder is not None and not isinstance(self.inneholder, ModellelementId):
            self.inneholder = ModellelementId(self.inneholder)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Realisering(Egenskap):
    """
    Ein realisering — ein implementasjonsrelasjon mellom modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Realization"]
    class_class_curie: ClassVar[str] = "modelldcatno:Realization"
    class_name: ClassVar[str] = "Realisering"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Realisering")

    id: Union[str, RealiseringId] = None
    har_leverandoer: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, RealiseringId):
            self.id = RealiseringId(self.id)

        if self.har_leverandoer is not None and not isinstance(self.har_leverandoer, ModellelementId):
            self.har_leverandoer = ModellelementId(self.har_leverandoer)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Abstraksjon(Egenskap):
    """
    Ein abstraksjon — ein forenkling som representerer eit modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Abstraction"]
    class_class_curie: ClassVar[str] = "modelldcatno:Abstraction"
    class_name: ClassVar[str] = "Abstraksjon"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Abstraksjon")

    id: Union[str, AbstraksjonId] = None
    er_abstraksjon_av: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AbstraksjonId):
            self.id = AbstraksjonId(self.id)

        if self.er_abstraksjon_av is not None and not isinstance(self.er_abstraksjon_av, ModellelementId):
            self.er_abstraksjon_av = ModellelementId(self.er_abstraksjon_av)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Avhengighet(Egenskap):
    """
    Ein avhengighet — ein relasjon der det eine modellelementet avheng av det andre.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Dependency"]
    class_class_curie: ClassVar[str] = "modelldcatno:Dependency"
    class_name: ClassVar[str] = "Avhengighet"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Avhengighet")

    id: Union[str, AvhengighetId] = None
    avhengig_av: Optional[Union[str, ModellelementId]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AvhengighetId):
            self.id = AvhengighetId(self.id)

        if self.avhengig_av is not None and not isinstance(self.avhengig_av, ModellelementId):
            self.avhengig_av = ModellelementId(self.avhengig_av)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Samling(Egenskap):
    """
    Ein samling — ein eigenskap som representerer ei uordna mengd av modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Collection"]
    class_class_curie: ClassVar[str] = "modelldcatno:Collection"
    class_name: ClassVar[str] = "Samling"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Samling")

    id: Union[str, SamlingId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, SamlingId):
            self.id = SamlingId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Valg(Egenskap):
    """
    Eit val — ein eigenskap som representerer eit val mellom modellelement.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Choice"]
    class_class_curie: ClassVar[str] = "modelldcatno:Choice"
    class_name: ClassVar[str] = "Valg"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Valg")

    id: Union[str, ValgId] = None
    har_noe: Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, ValgId):
            self.id = ValgId(self.id)

        if not isinstance(self.har_noe, list):
            self.har_noe = [self.har_noe] if self.har_noe is not None else []
        self.har_noe = [v if isinstance(v, ModellelementId) else ModellelementId(v) for v in self.har_noe]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Alle(Valg):
    """
    Alle av — alle modellelementa i lista må gjelde (logisk OG-mengd).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["AllOf"]
    class_class_curie: ClassVar[str] = "modelldcatno:AllOf"
    class_name: ClassVar[str] = "Alle"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Alle")

    id: Union[str, AlleId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, AlleId):
            self.id = AlleId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class NoenAv(Valg):
    """
    Nokon av — minst eitt modellelement i lista må gjelde (logisk ELLER-mengd).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["AnyOf"]
    class_class_curie: ClassVar[str] = "modelldcatno:AnyOf"
    class_name: ClassVar[str] = "NoenAv"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/NoenAv")

    id: Union[str, NoenAvId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, NoenAvId):
            self.id = NoenAvId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Note(YAMLRoot):
    """
    Ei merknad knytt til eit modellelement eller eigenskap.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Note"]
    class_class_curie: ClassVar[str] = "modelldcatno:Note"
    class_name: ClassVar[str] = "Note"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Note")

    id: Union[str, NoteId] = None
    annoterer: Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]] = empty_list()
    egenskapsmerknad: Optional[Union[str, list[str]]] = empty_list()
    identifikator_literal: Optional[str] = None
    tittel: Optional[Union[str, list[str]]] = empty_list()
    tilhoerer_modul: Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, NoteId):
            self.id = NoteId(self.id)

        if not isinstance(self.annoterer, list):
            self.annoterer = [self.annoterer] if self.annoterer is not None else []
        self.annoterer = [v if isinstance(v, ModellelementId) else ModellelementId(v) for v in self.annoterer]

        if not isinstance(self.egenskapsmerknad, list):
            self.egenskapsmerknad = [self.egenskapsmerknad] if self.egenskapsmerknad is not None else []
        self.egenskapsmerknad = [v if isinstance(v, str) else str(v) for v in self.egenskapsmerknad]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if not isinstance(self.tittel, list):
            self.tittel = [self.tittel] if self.tittel is not None else []
        self.tittel = [v if isinstance(v, str) else str(v) for v in self.tittel]

        if not isinstance(self.tilhoerer_modul, list):
            self.tilhoerer_modul = [self.tilhoerer_modul] if self.tilhoerer_modul is not None else []
        self.tilhoerer_modul = [v if isinstance(v, ModulId) else ModulId(v) for v in self.tilhoerer_modul]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Begrensningsregel(Note):
    """
    Ein betingelsesregel — ei formell avgrensing på modellelement eller eigenskapar.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["ConstraintRule"]
    class_class_curie: ClassVar[str] = "modelldcatno:ConstraintRule"
    class_name: ClassVar[str] = "Begrensningsregel"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Begrensningsregel")

    id: Union[str, BegrensningsregelId] = None
    begrenser: Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]] = None
    begrensningsuttrykk: Optional[Union[str, list[str]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, BegrensningsregelId):
            self.id = BegrensningsregelId(self.id)

        if self._is_empty(self.begrenser):
            self.MissingRequiredField("begrenser")
        if not isinstance(self.begrenser, list):
            self.begrenser = [self.begrenser] if self.begrenser is not None else []
        self.begrenser = [v if isinstance(v, ModellelementId) else ModellelementId(v) for v in self.begrenser]

        if not isinstance(self.begrensningsuttrykk, list):
            self.begrensningsuttrykk = [self.begrensningsuttrykk] if self.begrensningsuttrykk is not None else []
        self.begrensningsuttrykk = [v if isinstance(v, str) else str(v) for v in self.begrensningsuttrykk]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Og(Begrensningsregel):
    """
    Og — logisk OG-betingelse; alle deltakande modellelement må gjelde.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["And"]
    class_class_curie: ClassVar[str] = "modelldcatno:And"
    class_name: ClassVar[str] = "Og"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Og")

    id: Union[str, OgId] = None
    begrenser: Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, OgId):
            self.id = OgId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Eller(Begrensningsregel):
    """
    Eller — logisk ELLER-betingelse; minst eitt modellelement må gjelde.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Or"]
    class_class_curie: ClassVar[str] = "modelldcatno:Or"
    class_name: ClassVar[str] = "Eller"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Eller")

    id: Union[str, EllerId] = None
    begrenser: Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, EllerId):
            self.id = EllerId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class EntenEller(Begrensningsregel):
    """
    Xor — eksklusiv ELLER-betingelse; nøyaktig eitt modellelement må gjelde.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Xor"]
    class_class_curie: ClassVar[str] = "modelldcatno:Xor"
    class_name: ClassVar[str] = "EntenEller"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/EntenEller")

    id: Union[str, EntenEllerId] = None
    begrenser: Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, EntenEllerId):
            self.id = EntenEllerId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Ikke(Begrensningsregel):
    """
    Ikkje — negasjon; modellelementet det refererer til må ikkje gjelde.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["Not"]
    class_class_curie: ClassVar[str] = "modelldcatno:Not"
    class_name: ClassVar[str] = "Ikke"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Ikke")

    id: Union[str, IkkeId] = None
    begrenser: Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, IkkeId):
            self.id = IkkeId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Kodeelement(YAMLRoot):
    """
    Eit element i ei kodeliste (modelldcatno:CodeElement).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = MODELLDCATNO["CodeElement"]
    class_class_curie: ClassVar[str] = "modelldcatno:CodeElement"
    class_name: ClassVar[str] = "Kodeelement"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Kodeelement")

    id: Union[str, KodeelementId] = None
    i_kodeliste: Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]] = None
    kode: str = None
    anbefalt_kodetekst: Optional[Union[str, list[str]]] = empty_list()
    begrep: Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]] = empty_list()
    identifikator_literal: Optional[str] = None
    toppelement_til: Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]] = empty_list()
    definisjon: Optional[Union[str, list[str]]] = empty_list()
    eksempel: Optional[Union[str, list[str]]] = empty_list()
    eksklusjonsmerknad: Optional[Union[str, list[str]]] = empty_list()
    forrige_kodeelement: Optional[Union[str, KodeelementId]] = None
    fraradet_kodetekst: Optional[Union[str, list[str]]] = empty_list()
    inklusjonsmerknad: Optional[Union[str, list[str]]] = empty_list()
    merknad: Optional[Union[str, list[str]]] = empty_list()
    neste_kodeelement: Optional[Union[str, KodeelementId]] = None
    omfangsmerknad: Optional[Union[str, list[str]]] = empty_list()
    tillatt_kodetekst: Optional[Union[str, list[str]]] = empty_list()

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KodeelementId):
            self.id = KodeelementId(self.id)

        if self._is_empty(self.i_kodeliste):
            self.MissingRequiredField("i_kodeliste")
        if not isinstance(self.i_kodeliste, list):
            self.i_kodeliste = [self.i_kodeliste] if self.i_kodeliste is not None else []
        self.i_kodeliste = [v if isinstance(v, KodelisteId) else KodelisteId(v) for v in self.i_kodeliste]

        if self._is_empty(self.kode):
            self.MissingRequiredField("kode")
        if not isinstance(self.kode, str):
            self.kode = str(self.kode)

        if not isinstance(self.anbefalt_kodetekst, list):
            self.anbefalt_kodetekst = [self.anbefalt_kodetekst] if self.anbefalt_kodetekst is not None else []
        self.anbefalt_kodetekst = [v if isinstance(v, str) else str(v) for v in self.anbefalt_kodetekst]

        if not isinstance(self.begrep, list):
            self.begrep = [self.begrep] if self.begrep is not None else []
        self.begrep = [v if isinstance(v, KonseptId) else KonseptId(v) for v in self.begrep]

        if self.identifikator_literal is not None and not isinstance(self.identifikator_literal, str):
            self.identifikator_literal = str(self.identifikator_literal)

        if not isinstance(self.toppelement_til, list):
            self.toppelement_til = [self.toppelement_til] if self.toppelement_til is not None else []
        self.toppelement_til = [v if isinstance(v, KodelisteId) else KodelisteId(v) for v in self.toppelement_til]

        if not isinstance(self.definisjon, list):
            self.definisjon = [self.definisjon] if self.definisjon is not None else []
        self.definisjon = [v if isinstance(v, str) else str(v) for v in self.definisjon]

        if not isinstance(self.eksempel, list):
            self.eksempel = [self.eksempel] if self.eksempel is not None else []
        self.eksempel = [v if isinstance(v, str) else str(v) for v in self.eksempel]

        if not isinstance(self.eksklusjonsmerknad, list):
            self.eksklusjonsmerknad = [self.eksklusjonsmerknad] if self.eksklusjonsmerknad is not None else []
        self.eksklusjonsmerknad = [v if isinstance(v, str) else str(v) for v in self.eksklusjonsmerknad]

        if self.forrige_kodeelement is not None and not isinstance(self.forrige_kodeelement, KodeelementId):
            self.forrige_kodeelement = KodeelementId(self.forrige_kodeelement)

        if not isinstance(self.fraradet_kodetekst, list):
            self.fraradet_kodetekst = [self.fraradet_kodetekst] if self.fraradet_kodetekst is not None else []
        self.fraradet_kodetekst = [v if isinstance(v, str) else str(v) for v in self.fraradet_kodetekst]

        if not isinstance(self.inklusjonsmerknad, list):
            self.inklusjonsmerknad = [self.inklusjonsmerknad] if self.inklusjonsmerknad is not None else []
        self.inklusjonsmerknad = [v if isinstance(v, str) else str(v) for v in self.inklusjonsmerknad]

        if not isinstance(self.merknad, list):
            self.merknad = [self.merknad] if self.merknad is not None else []
        self.merknad = [v if isinstance(v, str) else str(v) for v in self.merknad]

        if self.neste_kodeelement is not None and not isinstance(self.neste_kodeelement, KodeelementId):
            self.neste_kodeelement = KodeelementId(self.neste_kodeelement)

        if not isinstance(self.omfangsmerknad, list):
            self.omfangsmerknad = [self.omfangsmerknad] if self.omfangsmerknad is not None else []
        self.omfangsmerknad = [v if isinstance(v, str) else str(v) for v in self.omfangsmerknad]

        if not isinstance(self.tillatt_kodetekst, list):
            self.tillatt_kodetekst = [self.tillatt_kodetekst] if self.tillatt_kodetekst is not None else []
        self.tillatt_kodetekst = [v if isinstance(v, str) else str(v) for v in self.tillatt_kodetekst]

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Mediatype(YAMLRoot):
    """
    Ein medietype eller filformat (dct:MediaTypeOrExtent).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = DCT["MediaTypeOrExtent"]
    class_class_curie: ClassVar[str] = "dct:MediaTypeOrExtent"
    class_name: ClassVar[str] = "Mediatype"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Mediatype")

    id: Union[str, MediatypeId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, MediatypeId):
            self.id = MediatypeId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Konsept(YAMLRoot):
    """
    Referanse til eit SKOS-omgrep frå eit kontrollert vokabular.
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = SKOS["Concept"]
    class_class_curie: ClassVar[str] = "skos:Concept"
    class_name: ClassVar[str] = "Konsept"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Konsept")

    id: Union[str, KonseptId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, KonseptId):
            self.id = KonseptId(self.id)

        super().__post_init__(**kwargs)


@dataclass(repr=False)
class Begrepssamling(YAMLRoot):
    """
    Ei SKOS-omgrepssamling (temavokabular).
    """
    _inherited_slots: ClassVar[list[str]] = []

    class_class_uri: ClassVar[URIRef] = SKOS["ConceptScheme"]
    class_class_curie: ClassVar[str] = "skos:ConceptScheme"
    class_name: ClassVar[str] = "Begrepssamling"
    class_model_uri: ClassVar[URIRef] = URIRef("https://data.norge.no/modellkatalog/brreg-modellkatalog/Begrepssamling")

    id: Union[str, BegrepssamlingId] = None

    def __post_init__(self, *_: str, **kwargs: Any):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, BegrepssamlingId):
            self.id = BegrepssamlingId(self.id)

        super().__post_init__(**kwargs)


# Enumerations


# Slots
class slots:
    pass

slots.navn_aktoer = Slot(uri=FOAF.name, name="navn_aktoer", curie=FOAF.curie('name'),
                   model_uri=DEFAULT_.navn_aktoer, domain=None, range=Optional[Union[str, list[str]]])

slots.startdato = Slot(uri=DCAT.startDate, name="startdato", curie=DCAT.curie('startDate'),
                   model_uri=DEFAULT_.startdato, domain=None, range=Optional[Union[str, XSDDate]])

slots.sluttdato = Slot(uri=DCAT.endDate, name="sluttdato", curie=DCAT.curie('endDate'),
                   model_uri=DEFAULT_.sluttdato, domain=None, range=Optional[Union[str, XSDDate]])

slots.utgiver = Slot(uri=DCT.publisher, name="utgiver", curie=DCT.curie('publisher'),
                   model_uri=DEFAULT_.utgiver, domain=None, range=Optional[Union[str, AktoerId]])

slots.produsent = Slot(uri=DCT.creator, name="produsent", curie=DCT.curie('creator'),
                   model_uri=DEFAULT_.produsent, domain=None, range=Optional[Union[str, AktoerId]])

slots.kontaktpunkt = Slot(uri=DCAT.contactPoint, name="kontaktpunkt", curie=DCAT.curie('contactPoint'),
                   model_uri=DEFAULT_.kontaktpunkt, domain=None, range=Optional[Union[Union[str, KontaktopplysningId], list[Union[str, KontaktopplysningId]]]])

slots.lisens = Slot(uri=DCT.license, name="lisens", curie=DCT.curie('license'),
                   model_uri=DEFAULT_.lisens, domain=None, range=Optional[Union[str, LisensdokumentId]])

slots.tema = Slot(uri=DCAT.theme, name="tema", curie=DCAT.curie('theme'),
                   model_uri=DEFAULT_.tema, domain=None, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.temaer = Slot(uri=DCAT.themeTaxonomy, name="temaer", curie=DCAT.curie('themeTaxonomy'),
                   model_uri=DEFAULT_.temaer, domain=None, range=Optional[Union[Union[str, BegrepssamlingId], list[Union[str, BegrepssamlingId]]]])

slots.begrep = Slot(uri=DCT.subject, name="begrep", curie=DCT.curie('subject'),
                   model_uri=DEFAULT_.begrep, domain=None, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.har_del = Slot(uri=DCT.hasPart, name="har_del", curie=DCT.curie('hasPart'),
                   model_uri=DEFAULT_.har_del, domain=None, range=Optional[Union[Union[str, KatalogisertRessursId], list[Union[str, KatalogisertRessursId]]]])

slots.modell = Slot(uri=MODELLDCATNO.model, name="modell", curie=MODELLDCATNO.curie('model'),
                   model_uri=DEFAULT_.modell, domain=None, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.er_del_av = Slot(uri=DCT.isPartOf, name="er_del_av", curie=DCT.curie('isPartOf'),
                   model_uri=DEFAULT_.er_del_av, domain=None, range=Optional[Union[str, KatalogisertRessursId]])

slots.er_profil_av = Slot(uri=PROF.isProfileOf, name="er_profil_av", curie=PROF.curie('isProfileOf'),
                   model_uri=DEFAULT_.er_profil_av, domain=None, range=Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]])

slots.er_erstattet_av = Slot(uri=DCT.isReplacedBy, name="er_erstattet_av", curie=DCT.curie('isReplacedBy'),
                   model_uri=DEFAULT_.er_erstattet_av, domain=None, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.erstatter = Slot(uri=DCT.replaces, name="erstatter", curie=DCT.curie('replaces'),
                   model_uri=DEFAULT_.erstatter, domain=None, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.finnes_i_format = Slot(uri=DCT.hasFormat, name="finnes_i_format", curie=DCT.curie('hasFormat'),
                   model_uri=DEFAULT_.finnes_i_format, domain=None, range=Optional[Union[Union[str, DokumentId], list[Union[str, DokumentId]]]])

slots.gyldighetsperiode = Slot(uri=DCT.temporal, name="gyldighetsperiode", curie=DCT.curie('temporal'),
                   model_uri=DEFAULT_.gyldighetsperiode, domain=None, range=Optional[Union[Union[str, TidsperiodeId], list[Union[str, TidsperiodeId]]]])

slots.er_i_samsvar_med = Slot(uri=DCT.conformsTo, name="er_i_samsvar_med", curie=DCT.curie('conformsTo'),
                   model_uri=DEFAULT_.er_i_samsvar_med, domain=None, range=Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]])

slots.informasjonsmodellidentifikator = Slot(uri=MODELLDCATNO.informationModelIdentifier, name="informasjonsmodellidentifikator", curie=MODELLDCATNO.curie('informationModelIdentifier'),
                   model_uri=DEFAULT_.informasjonsmodellidentifikator, domain=None, range=Optional[str])

slots.inneholder_modellelement = Slot(uri=MODELLDCATNO.containsModelElement, name="inneholder_modellelement", curie=MODELLDCATNO.curie('containsModelElement'),
                   model_uri=DEFAULT_.inneholder_modellelement, domain=None, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.har_egenskap = Slot(uri=MODELLDCATNO.hasProperty, name="har_egenskap", curie=MODELLDCATNO.curie('hasProperty'),
                   model_uri=DEFAULT_.har_egenskap, domain=None, range=Optional[Union[Union[str, EgenskapId], list[Union[str, EgenskapId]]]])

slots.tilhoerer_modul = Slot(uri=MODELLDCATNO.belongsToModule, name="tilhoerer_modul", curie=MODELLDCATNO.curie('belongsToModule'),
                   model_uri=DEFAULT_.tilhoerer_modul, domain=None, range=Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]])

slots.navigerbar = Slot(uri=MODELLDCATNO.navigable, name="navigerbar", curie=MODELLDCATNO.curie('navigable'),
                   model_uri=DEFAULT_.navigerbar, domain=None, range=Optional[Union[bool, Bool]])

slots.nedre_multiplisitet = Slot(uri=MODELLDCATNO.minOccurs, name="nedre_multiplisitet", curie=MODELLDCATNO.curie('minOccurs'),
                   model_uri=DEFAULT_.nedre_multiplisitet, domain=None, range=Optional[int])

slots.oevre_multiplisitet = Slot(uri=MODELLDCATNO.maxOccurs, name="oevre_multiplisitet", curie=MODELLDCATNO.curie('maxOccurs'),
                   model_uri=DEFAULT_.oevre_multiplisitet, domain=None, range=Optional[str])

slots.relasjonsegenskapsnavn = Slot(uri=MODELLDCATNO.relationPropertyLabel, name="relasjonsegenskapsnavn", curie=MODELLDCATNO.curie('relationPropertyLabel'),
                   model_uri=DEFAULT_.relasjonsegenskapsnavn, domain=None, range=Optional[Union[str, list[str]]])

slots.sekvensnummer = Slot(uri=MODELLDCATNO.sequenceNumber, name="sekvensnummer", curie=MODELLDCATNO.curie('sequenceNumber'),
                   model_uri=DEFAULT_.sekvensnummer, domain=None, range=Optional[int])

slots.utgjor_symmetrisk_relasjon_med = Slot(uri=MODELLDCATNO.formsSymmetryWith, name="utgjor_symmetrisk_relasjon_med", curie=MODELLDCATNO.curie('formsSymmetryWith'),
                   model_uri=DEFAULT_.utgjor_symmetrisk_relasjon_med, domain=None, range=Optional[Union[str, EgenskapId]])

slots.har_type = Slot(uri=MODELLDCATNO.hasType, name="har_type", curie=MODELLDCATNO.curie('hasType'),
                   model_uri=DEFAULT_.har_type, domain=None, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.har_datatype = Slot(uri=MODELLDCATNO.hasDataType, name="har_datatype", curie=MODELLDCATNO.curie('hasDataType'),
                   model_uri=DEFAULT_.har_datatype, domain=None, range=Optional[Union[Union[str, DatatypeId], list[Union[str, DatatypeId]]]])

slots.har_enkel_type = Slot(uri=MODELLDCATNO.hasSimpleType, name="har_enkel_type", curie=MODELLDCATNO.curie('hasSimpleType'),
                   model_uri=DEFAULT_.har_enkel_type, domain=None, range=Optional[Union[Union[str, EnkeltypeId], list[Union[str, EnkeltypeId]]]])

slots.har_verdi_fra = Slot(uri=MODELLDCATNO.hasValueFrom, name="har_verdi_fra", curie=MODELLDCATNO.curie('hasValueFrom'),
                   model_uri=DEFAULT_.har_verdi_fra, domain=None, range=Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]])

slots.inneholder_objekttype = Slot(uri=MODELLDCATNO.containsObjectType, name="inneholder_objekttype", curie=MODELLDCATNO.curie('containsObjectType'),
                   model_uri=DEFAULT_.inneholder_objekttype, domain=None, range=Optional[Union[Union[str, ObjekttypeId], list[Union[str, ObjekttypeId]]]])

slots.refererer_til = Slot(uri=MODELLDCATNO.refersTo, name="refererer_til", curie=MODELLDCATNO.curie('refersTo'),
                   model_uri=DEFAULT_.refererer_til, domain=None, range=Optional[Union[str, ModellelementId]])

slots.har_objekttype = Slot(uri=MODELLDCATNO.hasObjectType, name="har_objekttype", curie=MODELLDCATNO.curie('hasObjectType'),
                   model_uri=DEFAULT_.har_objekttype, domain=None, range=Optional[Union[str, ObjekttypeId]])

slots.har_generelt_begrep = Slot(uri=MODELLDCATNO.hasGeneralConcept, name="har_generelt_begrep", curie=MODELLDCATNO.curie('hasGeneralConcept'),
                   model_uri=DEFAULT_.har_generelt_begrep, domain=None, range=Optional[Union[str, ModellelementId]])

slots.inneholder = Slot(uri=MODELLDCATNO.contains, name="inneholder", curie=MODELLDCATNO.curie('contains'),
                   model_uri=DEFAULT_.inneholder, domain=None, range=Optional[Union[str, ModellelementId]])

slots.har_leverandoer = Slot(uri=MODELLDCATNO.hasSupplier, name="har_leverandoer", curie=MODELLDCATNO.curie('hasSupplier'),
                   model_uri=DEFAULT_.har_leverandoer, domain=None, range=Optional[Union[str, ModellelementId]])

slots.er_abstraksjon_av = Slot(uri=MODELLDCATNO.isAbstractionOf, name="er_abstraksjon_av", curie=MODELLDCATNO.curie('isAbstractionOf'),
                   model_uri=DEFAULT_.er_abstraksjon_av, domain=None, range=Optional[Union[str, ModellelementId]])

slots.avhengig_av = Slot(uri=MODELLDCATNO.dependentOn, name="avhengig_av", curie=MODELLDCATNO.curie('dependentOn'),
                   model_uri=DEFAULT_.avhengig_av, domain=None, range=Optional[Union[str, ModellelementId]])

slots.har_noe = Slot(uri=MODELLDCATNO.hasSome, name="har_noe", curie=MODELLDCATNO.curie('hasSome'),
                   model_uri=DEFAULT_.har_noe, domain=None, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.typedefinisjon = Slot(uri=MODELLDCATNO.typeDefinitionReference, name="typedefinisjon", curie=MODELLDCATNO.curie('typeDefinitionReference'),
                   model_uri=DEFAULT_.typedefinisjon, domain=None, range=Optional[Union[str, URI]])

slots.antall_desimaler = Slot(uri=XSD.fractionDigits, name="antall_desimaler", curie=XSD.curie('fractionDigits'),
                   model_uri=DEFAULT_.antall_desimaler, domain=None, range=Optional[int])

slots.lengde = Slot(uri=XSD.length, name="lengde", curie=XSD.curie('length'),
                   model_uri=DEFAULT_.lengde, domain=None, range=Optional[int])

slots.maksimum_ikke_inklusivt = Slot(uri=XSD.maxExclusive, name="maksimum_ikke_inklusivt", curie=XSD.curie('maxExclusive'),
                   model_uri=DEFAULT_.maksimum_ikke_inklusivt, domain=None, range=Optional[str])

slots.maksimum_inklusivt = Slot(uri=XSD.maxInclusive, name="maksimum_inklusivt", curie=XSD.curie('maxInclusive'),
                   model_uri=DEFAULT_.maksimum_inklusivt, domain=None, range=Optional[str])

slots.maks_lengde = Slot(uri=XSD.maxLength, name="maks_lengde", curie=XSD.curie('maxLength'),
                   model_uri=DEFAULT_.maks_lengde, domain=None, range=Optional[int])

slots.minimum_ikke_inklusivt = Slot(uri=XSD.minExclusive, name="minimum_ikke_inklusivt", curie=XSD.curie('minExclusive'),
                   model_uri=DEFAULT_.minimum_ikke_inklusivt, domain=None, range=Optional[str])

slots.minimum_inklusivt = Slot(uri=XSD.minInclusive, name="minimum_inklusivt", curie=XSD.curie('minInclusive'),
                   model_uri=DEFAULT_.minimum_inklusivt, domain=None, range=Optional[str])

slots.minimum_lengde = Slot(uri=XSD.minLength, name="minimum_lengde", curie=XSD.curie('minLength'),
                   model_uri=DEFAULT_.minimum_lengde, domain=None, range=Optional[int])

slots.moenster = Slot(uri=XSD.pattern, name="moenster", curie=XSD.curie('pattern'),
                   model_uri=DEFAULT_.moenster, domain=None, range=Optional[str])

slots.totalt_antall_siffer = Slot(uri=XSD.totalDigits, name="totalt_antall_siffer", curie=XSD.curie('totalDigits'),
                   model_uri=DEFAULT_.totalt_antall_siffer, domain=None, range=Optional[int])

slots.i_kodeliste = Slot(uri=SKOS.inScheme, name="i_kodeliste", curie=SKOS.curie('inScheme'),
                   model_uri=DEFAULT_.i_kodeliste, domain=None, range=Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]])

slots.kode = Slot(uri=SKOS.notation, name="kode", curie=SKOS.curie('notation'),
                   model_uri=DEFAULT_.kode, domain=None, range=Optional[str])

slots.anbefalt_kodetekst = Slot(uri=SKOS.prefLabel, name="anbefalt_kodetekst", curie=SKOS.curie('prefLabel'),
                   model_uri=DEFAULT_.anbefalt_kodetekst, domain=None, range=Optional[Union[str, list[str]]])

slots.toppelement_til = Slot(uri=SKOS.topConceptOf, name="toppelement_til", curie=SKOS.curie('topConceptOf'),
                   model_uri=DEFAULT_.toppelement_til, domain=None, range=Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]])

slots.definisjon = Slot(uri=SKOS.definition, name="definisjon", curie=SKOS.curie('definition'),
                   model_uri=DEFAULT_.definisjon, domain=None, range=Optional[Union[str, list[str]]])

slots.eksempel = Slot(uri=SKOS.example, name="eksempel", curie=SKOS.curie('example'),
                   model_uri=DEFAULT_.eksempel, domain=None, range=Optional[Union[str, list[str]]])

slots.eksklusjonsmerknad = Slot(uri=XKOS.exclusionNote, name="eksklusjonsmerknad", curie=XKOS.curie('exclusionNote'),
                   model_uri=DEFAULT_.eksklusjonsmerknad, domain=None, range=Optional[Union[str, list[str]]])

slots.forrige_kodeelement = Slot(uri=XKOS.previous, name="forrige_kodeelement", curie=XKOS.curie('previous'),
                   model_uri=DEFAULT_.forrige_kodeelement, domain=None, range=Optional[Union[str, KodeelementId]])

slots.fraradet_kodetekst = Slot(uri=SKOS.hiddenLabel, name="fraradet_kodetekst", curie=SKOS.curie('hiddenLabel'),
                   model_uri=DEFAULT_.fraradet_kodetekst, domain=None, range=Optional[Union[str, list[str]]])

slots.inklusjonsmerknad = Slot(uri=XKOS.inclusionNote, name="inklusjonsmerknad", curie=XKOS.curie('inclusionNote'),
                   model_uri=DEFAULT_.inklusjonsmerknad, domain=None, range=Optional[Union[str, list[str]]])

slots.merknad = Slot(uri=SKOS.note, name="merknad", curie=SKOS.curie('note'),
                   model_uri=DEFAULT_.merknad, domain=None, range=Optional[Union[str, list[str]]])

slots.neste_kodeelement = Slot(uri=XKOS.next, name="neste_kodeelement", curie=XKOS.curie('next'),
                   model_uri=DEFAULT_.neste_kodeelement, domain=None, range=Optional[Union[str, KodeelementId]])

slots.omfangsmerknad = Slot(uri=SKOS.scopeNote, name="omfangsmerknad", curie=SKOS.curie('scopeNote'),
                   model_uri=DEFAULT_.omfangsmerknad, domain=None, range=Optional[Union[str, list[str]]])

slots.tillatt_kodetekst = Slot(uri=SKOS.altLabel, name="tillatt_kodetekst", curie=SKOS.curie('altLabel'),
                   model_uri=DEFAULT_.tillatt_kodetekst, domain=None, range=Optional[Union[str, list[str]]])

slots.annoterer = Slot(uri=MODELLDCATNO.annotates, name="annoterer", curie=MODELLDCATNO.curie('annotates'),
                   model_uri=DEFAULT_.annoterer, domain=None, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.egenskapsmerknad = Slot(uri=MODELLDCATNO.propertyNote, name="egenskapsmerknad", curie=MODELLDCATNO.curie('propertyNote'),
                   model_uri=DEFAULT_.egenskapsmerknad, domain=None, range=Optional[Union[str, list[str]]])

slots.begrenser = Slot(uri=MODELLDCATNO.constrains, name="begrenser", curie=MODELLDCATNO.curie('constrains'),
                   model_uri=DEFAULT_.begrenser, domain=None, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.begrensningsuttrykk = Slot(uri=MODELLDCATNO.constraintExpression, name="begrensningsuttrykk", curie=MODELLDCATNO.curie('constraintExpression'),
                   model_uri=DEFAULT_.begrensningsuttrykk, domain=None, range=Optional[Union[str, list[str]]])

slots.id = Slot(uri=CAPNO.id, name="id", curie=CAPNO.curie('id'),
                   model_uri=DEFAULT_.id, domain=None, range=URIRef)

slots.tittel = Slot(uri=DCT.title, name="tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.tittel, domain=None, range=Optional[Union[str, list[str]]])

slots.beskrivelse = Slot(uri=DCT.description, name="beskrivelse", curie=DCT.curie('description'),
                   model_uri=DEFAULT_.beskrivelse, domain=None, range=Optional[Union[str, list[str]]])

slots.identifikator_literal = Slot(uri=DCT.identifier, name="identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.identifikator_literal, domain=None, range=Optional[str])

slots.type_concept = Slot(uri=DCT.type, name="type_concept", curie=DCT.curie('type'),
                   model_uri=DEFAULT_.type_concept, domain=None, range=Optional[Union[str, KonseptId]])

slots.endringsdato = Slot(uri=DCT.modified, name="endringsdato", curie=DCT.curie('modified'),
                   model_uri=DEFAULT_.endringsdato, domain=None, range=Optional[Union[str, XSDDate]])

slots.utgivelsesdato = Slot(uri=DCT.issued, name="utgivelsesdato", curie=DCT.curie('issued'),
                   model_uri=DEFAULT_.utgivelsesdato, domain=None, range=Optional[Union[str, XSDDate]])

slots.spraak = Slot(uri=DCT.language, name="spraak", curie=DCT.curie('language'),
                   model_uri=DEFAULT_.spraak, domain=None, range=Optional[Union[str, list[str]]])

slots.format = Slot(uri=DCT.format, name="format", curie=DCT.curie('format'),
                   model_uri=DEFAULT_.format, domain=None, range=Optional[str])

slots.har_referanse = Slot(uri=RDFS.seeAlso, name="har_referanse", curie=RDFS.curie('seeAlso'),
                   model_uri=DEFAULT_.har_referanse, domain=None, range=Optional[Union[Union[str, URI], list[Union[str, URI]]]])

slots.har_merknad = Slot(uri=RDFS.comment, name="har_merknad", curie=RDFS.curie('comment'),
                   model_uri=DEFAULT_.har_merknad, domain=None, range=Optional[Union[str, list[str]]])

slots.versjonsnummer = Slot(uri=OWL.versionInfo, name="versjonsnummer", curie=OWL.curie('versionInfo'),
                   model_uri=DEFAULT_.versjonsnummer, domain=None, range=Optional[str])

slots.nokkelord = Slot(uri=DCAT.keyword, name="nokkelord", curie=DCAT.curie('keyword'),
                   model_uri=DEFAULT_.nokkelord, domain=None, range=Optional[Union[str, list[str]]])

slots.dekningsomraade = Slot(uri=DCT.spatial, name="dekningsomraade", curie=DCT.curie('spatial'),
                   model_uri=DEFAULT_.dekningsomraade, domain=None, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.status = Slot(uri=ADMS.status, name="status", curie=ADMS.curie('status'),
                   model_uri=DEFAULT_.status, domain=None, range=Optional[Union[str, KonseptId]])

slots.valuta = Slot(uri=CV.currency, name="valuta", curie=CV.curie('currency'),
                   model_uri=DEFAULT_.valuta, domain=None, range=Optional[Union[str, KonseptId]])

slots.heimeside = Slot(uri=FOAF.homepage, name="heimeside", curie=FOAF.curie('homepage'),
                   model_uri=DEFAULT_.heimeside, domain=None, range=Optional[Union[Union[str, URI], list[Union[str, URI]]]])

slots.anbefalt_term = Slot(uri=SKOS.prefLabel, name="anbefalt_term", curie=SKOS.curie('prefLabel'),
                   model_uri=DEFAULT_.anbefalt_term, domain=None, range=Optional[Union[str, list[str]]])

slots.versjonsmerknad = Slot(uri=ADMS.versionNotes, name="versjonsmerknad", curie=ADMS.curie('versionNotes'),
                   model_uri=DEFAULT_.versjonsmerknad, domain=None, range=Optional[Union[str, list[str]]])

slots.modellkatalogContainer__modellkataloger = Slot(uri=DEFAULT_.modellkataloger, name="modellkatalogContainer__modellkataloger", curie=DEFAULT_.curie('modellkataloger'),
                   model_uri=DEFAULT_.modellkatalogContainer__modellkataloger, domain=None, range=Optional[Union[dict[Union[str, ModellkatalogId], Union[dict, Modellkatalog]], list[Union[dict, Modellkatalog]]]])

slots.modellkatalogContainer__informasjonsmodeller = Slot(uri=DEFAULT_.informasjonsmodeller, name="modellkatalogContainer__informasjonsmodeller", curie=DEFAULT_.curie('informasjonsmodeller'),
                   model_uri=DEFAULT_.modellkatalogContainer__informasjonsmodeller, domain=None, range=Optional[Union[dict[Union[str, InformasjonsmodellId], Union[dict, Informasjonsmodell]], list[Union[dict, Informasjonsmodell]]]])

slots.modellkatalogContainer__objekttyper = Slot(uri=DEFAULT_.objekttyper, name="modellkatalogContainer__objekttyper", curie=DEFAULT_.curie('objekttyper'),
                   model_uri=DEFAULT_.modellkatalogContainer__objekttyper, domain=None, range=Optional[Union[dict[Union[str, ObjekttypeId], Union[dict, Objekttype]], list[Union[dict, Objekttype]]]])

slots.modellkatalogContainer__kodelister = Slot(uri=DEFAULT_.kodelister, name="modellkatalogContainer__kodelister", curie=DEFAULT_.curie('kodelister'),
                   model_uri=DEFAULT_.modellkatalogContainer__kodelister, domain=None, range=Optional[Union[dict[Union[str, KodelisteId], Union[dict, Kodeliste]], list[Union[dict, Kodeliste]]]])

slots.modellkatalogContainer__egenskaper = Slot(uri=DEFAULT_.egenskaper, name="modellkatalogContainer__egenskaper", curie=DEFAULT_.curie('egenskaper'),
                   model_uri=DEFAULT_.modellkatalogContainer__egenskaper, domain=None, range=Optional[Union[dict[Union[str, EgenskapId], Union[dict, Egenskap]], list[Union[dict, Egenskap]]]])

slots.modellkatalogContainer__aktoerer = Slot(uri=DEFAULT_.aktoerer, name="modellkatalogContainer__aktoerer", curie=DEFAULT_.curie('aktoerer'),
                   model_uri=DEFAULT_.modellkatalogContainer__aktoerer, domain=None, range=Optional[Union[dict[Union[str, AktoerId], Union[dict, Aktoer]], list[Union[dict, Aktoer]]]])

slots.modellkatalogContainer__kontaktpunkt = Slot(uri=DEFAULT_.kontaktpunkt, name="modellkatalogContainer__kontaktpunkt", curie=DEFAULT_.curie('kontaktpunkt'),
                   model_uri=DEFAULT_.modellkatalogContainer__kontaktpunkt, domain=None, range=Optional[Union[list[Union[str, KontaktopplysningId]], dict[Union[str, KontaktopplysningId], Union[dict, Kontaktopplysning]]]])

slots.Aktoer_navn_aktoer = Slot(uri=FOAF.name, name="Aktoer_navn_aktoer", curie=FOAF.curie('name'),
                   model_uri=DEFAULT_.Aktoer_navn_aktoer, domain=Aktoer, range=Optional[Union[str, list[str]]])

slots.Standard_tittel = Slot(uri=DCT.title, name="Standard_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Standard_tittel, domain=Standard, range=Optional[Union[str, list[str]]])

slots.Modellkatalog_tittel = Slot(uri=DCT.title, name="Modellkatalog_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Modellkatalog_tittel, domain=Modellkatalog, range=Optional[Union[str, list[str]]])

slots.Modellkatalog_beskrivelse = Slot(uri=DCT.description, name="Modellkatalog_beskrivelse", curie=DCT.curie('description'),
                   model_uri=DEFAULT_.Modellkatalog_beskrivelse, domain=Modellkatalog, range=Optional[Union[str, list[str]]])

slots.Modellkatalog_har_del = Slot(uri=DCT.hasPart, name="Modellkatalog_har_del", curie=DCT.curie('hasPart'),
                   model_uri=DEFAULT_.Modellkatalog_har_del, domain=Modellkatalog, range=Union[Union[str, KatalogisertRessursId], list[Union[str, KatalogisertRessursId]]])

slots.Modellkatalog_identifikator_literal = Slot(uri=DCT.identifier, name="Modellkatalog_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Modellkatalog_identifikator_literal, domain=Modellkatalog, range=str)

slots.Modellkatalog_kontaktpunkt = Slot(uri=DCAT.contactPoint, name="Modellkatalog_kontaktpunkt", curie=DCAT.curie('contactPoint'),
                   model_uri=DEFAULT_.Modellkatalog_kontaktpunkt, domain=Modellkatalog, range=Union[Union[str, KontaktopplysningId], list[Union[str, KontaktopplysningId]]])

slots.Modellkatalog_utgiver = Slot(uri=DCT.publisher, name="Modellkatalog_utgiver", curie=DCT.curie('publisher'),
                   model_uri=DEFAULT_.Modellkatalog_utgiver, domain=Modellkatalog, range=Union[str, AktoerId])

slots.Modellkatalog_endringsdato = Slot(uri=DCT.modified, name="Modellkatalog_endringsdato", curie=DCT.curie('modified'),
                   model_uri=DEFAULT_.Modellkatalog_endringsdato, domain=Modellkatalog, range=Optional[Union[str, XSDDate]])

slots.Modellkatalog_heimeside = Slot(uri=FOAF.homepage, name="Modellkatalog_heimeside", curie=FOAF.curie('homepage'),
                   model_uri=DEFAULT_.Modellkatalog_heimeside, domain=Modellkatalog, range=Optional[Union[Union[str, URI], list[Union[str, URI]]]])

slots.Modellkatalog_lisens = Slot(uri=DCT.license, name="Modellkatalog_lisens", curie=DCT.curie('license'),
                   model_uri=DEFAULT_.Modellkatalog_lisens, domain=Modellkatalog, range=Optional[Union[str, LisensdokumentId]])

slots.Modellkatalog_modell = Slot(uri=MODELLDCATNO.model, name="Modellkatalog_modell", curie=MODELLDCATNO.curie('model'),
                   model_uri=DEFAULT_.Modellkatalog_modell, domain=Modellkatalog, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.Modellkatalog_spraak = Slot(uri=DCT.language, name="Modellkatalog_spraak", curie=DCT.curie('language'),
                   model_uri=DEFAULT_.Modellkatalog_spraak, domain=Modellkatalog, range=Optional[Union[str, list[str]]])

slots.Modellkatalog_tema = Slot(uri=DCAT.theme, name="Modellkatalog_tema", curie=DCAT.curie('theme'),
                   model_uri=DEFAULT_.Modellkatalog_tema, domain=Modellkatalog, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Modellkatalog_utgivelsesdato = Slot(uri=DCT.issued, name="Modellkatalog_utgivelsesdato", curie=DCT.curie('issued'),
                   model_uri=DEFAULT_.Modellkatalog_utgivelsesdato, domain=Modellkatalog, range=Optional[Union[str, XSDDate]])

slots.Modellkatalog_temaer = Slot(uri=DCAT.themeTaxonomy, name="Modellkatalog_temaer", curie=DCAT.curie('themeTaxonomy'),
                   model_uri=DEFAULT_.Modellkatalog_temaer, domain=Modellkatalog, range=Optional[Union[Union[str, BegrepssamlingId], list[Union[str, BegrepssamlingId]]]])

slots.Modellkatalog_er_del_av = Slot(uri=DCT.isPartOf, name="Modellkatalog_er_del_av", curie=DCT.curie('isPartOf'),
                   model_uri=DEFAULT_.Modellkatalog_er_del_av, domain=Modellkatalog, range=Optional[Union[str, ModellkatalogId]])

slots.Informasjonsmodell_tittel = Slot(uri=DCT.title, name="Informasjonsmodell_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Informasjonsmodell_tittel, domain=Informasjonsmodell, range=Optional[Union[str, list[str]]])

slots.Informasjonsmodell_utgiver = Slot(uri=DCT.publisher, name="Informasjonsmodell_utgiver", curie=DCT.curie('publisher'),
                   model_uri=DEFAULT_.Informasjonsmodell_utgiver, domain=Informasjonsmodell, range=Union[str, AktoerId])

slots.Informasjonsmodell_begrep = Slot(uri=DCT.subject, name="Informasjonsmodell_begrep", curie=DCT.curie('subject'),
                   model_uri=DEFAULT_.Informasjonsmodell_begrep, domain=Informasjonsmodell, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Informasjonsmodell_beskrivelse = Slot(uri=DCT.description, name="Informasjonsmodell_beskrivelse", curie=DCT.curie('description'),
                   model_uri=DEFAULT_.Informasjonsmodell_beskrivelse, domain=Informasjonsmodell, range=Optional[Union[str, list[str]]])

slots.Informasjonsmodell_identifikator_literal = Slot(uri=DCT.identifier, name="Informasjonsmodell_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Informasjonsmodell_identifikator_literal, domain=Informasjonsmodell, range=Optional[str])

slots.Informasjonsmodell_informasjonsmodellidentifikator = Slot(uri=MODELLDCATNO.informationModelIdentifier, name="Informasjonsmodell_informasjonsmodellidentifikator", curie=MODELLDCATNO.curie('informationModelIdentifier'),
                   model_uri=DEFAULT_.Informasjonsmodell_informasjonsmodellidentifikator, domain=Informasjonsmodell, range=Optional[str])

slots.Informasjonsmodell_inneholder_modellelement = Slot(uri=MODELLDCATNO.containsModelElement, name="Informasjonsmodell_inneholder_modellelement", curie=MODELLDCATNO.curie('containsModelElement'),
                   model_uri=DEFAULT_.Informasjonsmodell_inneholder_modellelement, domain=Informasjonsmodell, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.Informasjonsmodell_kontaktpunkt = Slot(uri=DCAT.contactPoint, name="Informasjonsmodell_kontaktpunkt", curie=DCAT.curie('contactPoint'),
                   model_uri=DEFAULT_.Informasjonsmodell_kontaktpunkt, domain=Informasjonsmodell, range=Optional[Union[Union[str, KontaktopplysningId], list[Union[str, KontaktopplysningId]]]])

slots.Informasjonsmodell_lisens = Slot(uri=DCT.license, name="Informasjonsmodell_lisens", curie=DCT.curie('license'),
                   model_uri=DEFAULT_.Informasjonsmodell_lisens, domain=Informasjonsmodell, range=Optional[Union[str, LisensdokumentId]])

slots.Informasjonsmodell_tema = Slot(uri=DCAT.theme, name="Informasjonsmodell_tema", curie=DCAT.curie('theme'),
                   model_uri=DEFAULT_.Informasjonsmodell_tema, domain=Informasjonsmodell, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Informasjonsmodell_dekningsomraade = Slot(uri=DCT.spatial, name="Informasjonsmodell_dekningsomraade", curie=DCT.curie('spatial'),
                   model_uri=DEFAULT_.Informasjonsmodell_dekningsomraade, domain=Informasjonsmodell, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Informasjonsmodell_endringsdato = Slot(uri=DCT.modified, name="Informasjonsmodell_endringsdato", curie=DCT.curie('modified'),
                   model_uri=DEFAULT_.Informasjonsmodell_endringsdato, domain=Informasjonsmodell, range=Optional[Union[str, XSDDate]])

slots.Informasjonsmodell_er_del_av = Slot(uri=DCT.isPartOf, name="Informasjonsmodell_er_del_av", curie=DCT.curie('isPartOf'),
                   model_uri=DEFAULT_.Informasjonsmodell_er_del_av, domain=Informasjonsmodell, range=Optional[Union[str, InformasjonsmodellId]])

slots.Informasjonsmodell_er_profil_av = Slot(uri=PROF.isProfileOf, name="Informasjonsmodell_er_profil_av", curie=PROF.curie('isProfileOf'),
                   model_uri=DEFAULT_.Informasjonsmodell_er_profil_av, domain=Informasjonsmodell, range=Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]])

slots.Informasjonsmodell_er_erstattet_av = Slot(uri=DCT.isReplacedBy, name="Informasjonsmodell_er_erstattet_av", curie=DCT.curie('isReplacedBy'),
                   model_uri=DEFAULT_.Informasjonsmodell_er_erstattet_av, domain=Informasjonsmodell, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.Informasjonsmodell_erstatter = Slot(uri=DCT.replaces, name="Informasjonsmodell_erstatter", curie=DCT.curie('replaces'),
                   model_uri=DEFAULT_.Informasjonsmodell_erstatter, domain=Informasjonsmodell, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.Informasjonsmodell_har_del = Slot(uri=DCT.hasPart, name="Informasjonsmodell_har_del", curie=DCT.curie('hasPart'),
                   model_uri=DEFAULT_.Informasjonsmodell_har_del, domain=Informasjonsmodell, range=Optional[Union[Union[str, InformasjonsmodellId], list[Union[str, InformasjonsmodellId]]]])

slots.Informasjonsmodell_finnes_i_format = Slot(uri=DCT.hasFormat, name="Informasjonsmodell_finnes_i_format", curie=DCT.curie('hasFormat'),
                   model_uri=DEFAULT_.Informasjonsmodell_finnes_i_format, domain=Informasjonsmodell, range=Optional[Union[Union[str, DokumentId], list[Union[str, DokumentId]]]])

slots.Informasjonsmodell_gyldighetsperiode = Slot(uri=DCT.temporal, name="Informasjonsmodell_gyldighetsperiode", curie=DCT.curie('temporal'),
                   model_uri=DEFAULT_.Informasjonsmodell_gyldighetsperiode, domain=Informasjonsmodell, range=Optional[Union[Union[str, TidsperiodeId], list[Union[str, TidsperiodeId]]]])

slots.Informasjonsmodell_heimeside = Slot(uri=FOAF.homepage, name="Informasjonsmodell_heimeside", curie=FOAF.curie('homepage'),
                   model_uri=DEFAULT_.Informasjonsmodell_heimeside, domain=Informasjonsmodell, range=Optional[Union[Union[str, URI], list[Union[str, URI]]]])

slots.Informasjonsmodell_er_i_samsvar_med = Slot(uri=DCT.conformsTo, name="Informasjonsmodell_er_i_samsvar_med", curie=DCT.curie('conformsTo'),
                   model_uri=DEFAULT_.Informasjonsmodell_er_i_samsvar_med, domain=Informasjonsmodell, range=Optional[Union[Union[str, StandardId], list[Union[str, StandardId]]]])

slots.Informasjonsmodell_status = Slot(uri=ADMS.status, name="Informasjonsmodell_status", curie=ADMS.curie('status'),
                   model_uri=DEFAULT_.Informasjonsmodell_status, domain=Informasjonsmodell, range=Optional[Union[str, KonseptId]])

slots.Informasjonsmodell_nokkelord = Slot(uri=DCAT.keyword, name="Informasjonsmodell_nokkelord", curie=DCAT.curie('keyword'),
                   model_uri=DEFAULT_.Informasjonsmodell_nokkelord, domain=Informasjonsmodell, range=Optional[Union[str, list[str]]])

slots.Informasjonsmodell_produsent = Slot(uri=DCT.creator, name="Informasjonsmodell_produsent", curie=DCT.curie('creator'),
                   model_uri=DEFAULT_.Informasjonsmodell_produsent, domain=Informasjonsmodell, range=Optional[Union[str, AktoerId]])

slots.Informasjonsmodell_spraak = Slot(uri=DCT.language, name="Informasjonsmodell_spraak", curie=DCT.curie('language'),
                   model_uri=DEFAULT_.Informasjonsmodell_spraak, domain=Informasjonsmodell, range=Optional[Union[str, list[str]]])

slots.Informasjonsmodell_type_concept = Slot(uri=DCT.type, name="Informasjonsmodell_type_concept", curie=DCT.curie('type'),
                   model_uri=DEFAULT_.Informasjonsmodell_type_concept, domain=Informasjonsmodell, range=Optional[Union[str, KonseptId]])

slots.Informasjonsmodell_utgivelsesdato = Slot(uri=DCT.issued, name="Informasjonsmodell_utgivelsesdato", curie=DCT.curie('issued'),
                   model_uri=DEFAULT_.Informasjonsmodell_utgivelsesdato, domain=Informasjonsmodell, range=Optional[Union[str, XSDDate]])

slots.Informasjonsmodell_versjonsnummer = Slot(uri=OWL.versionInfo, name="Informasjonsmodell_versjonsnummer", curie=OWL.curie('versionInfo'),
                   model_uri=DEFAULT_.Informasjonsmodell_versjonsnummer, domain=Informasjonsmodell, range=Optional[str])

slots.Informasjonsmodell_versjonsmerknad = Slot(uri=ADMS.versionNotes, name="Informasjonsmodell_versjonsmerknad", curie=ADMS.curie('versionNotes'),
                   model_uri=DEFAULT_.Informasjonsmodell_versjonsmerknad, domain=Informasjonsmodell, range=Optional[Union[str, list[str]]])

slots.Modellelement_tittel = Slot(uri=DCT.title, name="Modellelement_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Modellelement_tittel, domain=Modellelement, range=Optional[Union[str, list[str]]])

slots.Modellelement_begrep = Slot(uri=DCT.subject, name="Modellelement_begrep", curie=DCT.curie('subject'),
                   model_uri=DEFAULT_.Modellelement_begrep, domain=Modellelement, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Modellelement_identifikator_literal = Slot(uri=DCT.identifier, name="Modellelement_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Modellelement_identifikator_literal, domain=Modellelement, range=Optional[str])

slots.Modellelement_har_egenskap = Slot(uri=MODELLDCATNO.hasProperty, name="Modellelement_har_egenskap", curie=MODELLDCATNO.curie('hasProperty'),
                   model_uri=DEFAULT_.Modellelement_har_egenskap, domain=Modellelement, range=Optional[Union[Union[str, EgenskapId], list[Union[str, EgenskapId]]]])

slots.Modellelement_beskrivelse = Slot(uri=DCT.description, name="Modellelement_beskrivelse", curie=DCT.curie('description'),
                   model_uri=DEFAULT_.Modellelement_beskrivelse, domain=Modellelement, range=Optional[Union[str, list[str]]])

slots.Modellelement_tilhoerer_modul = Slot(uri=MODELLDCATNO.belongsToModule, name="Modellelement_tilhoerer_modul", curie=MODELLDCATNO.curie('belongsToModule'),
                   model_uri=DEFAULT_.Modellelement_tilhoerer_modul, domain=Modellelement, range=Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]])

slots.Enkeltype_typedefinisjon = Slot(uri=MODELLDCATNO.typeDefinitionReference, name="Enkeltype_typedefinisjon", curie=MODELLDCATNO.curie('typeDefinitionReference'),
                   model_uri=DEFAULT_.Enkeltype_typedefinisjon, domain=Enkeltype, range=Optional[Union[str, URI]])

slots.Egenskap_begrep = Slot(uri=DCT.subject, name="Egenskap_begrep", curie=DCT.curie('subject'),
                   model_uri=DEFAULT_.Egenskap_begrep, domain=Egenskap, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Egenskap_identifikator_literal = Slot(uri=DCT.identifier, name="Egenskap_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Egenskap_identifikator_literal, domain=Egenskap, range=Optional[str])

slots.Egenskap_navigerbar = Slot(uri=MODELLDCATNO.navigable, name="Egenskap_navigerbar", curie=MODELLDCATNO.curie('navigable'),
                   model_uri=DEFAULT_.Egenskap_navigerbar, domain=Egenskap, range=Optional[Union[bool, Bool]])

slots.Egenskap_nedre_multiplisitet = Slot(uri=MODELLDCATNO.minOccurs, name="Egenskap_nedre_multiplisitet", curie=MODELLDCATNO.curie('minOccurs'),
                   model_uri=DEFAULT_.Egenskap_nedre_multiplisitet, domain=Egenskap, range=Optional[int])

slots.Egenskap_tittel = Slot(uri=DCT.title, name="Egenskap_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Egenskap_tittel, domain=Egenskap, range=Optional[Union[str, list[str]]])

slots.Egenskap_oevre_multiplisitet = Slot(uri=MODELLDCATNO.maxOccurs, name="Egenskap_oevre_multiplisitet", curie=MODELLDCATNO.curie('maxOccurs'),
                   model_uri=DEFAULT_.Egenskap_oevre_multiplisitet, domain=Egenskap, range=Optional[str])

slots.Egenskap_beskrivelse = Slot(uri=DCT.description, name="Egenskap_beskrivelse", curie=DCT.curie('description'),
                   model_uri=DEFAULT_.Egenskap_beskrivelse, domain=Egenskap, range=Optional[Union[str, list[str]]])

slots.Egenskap_har_type = Slot(uri=MODELLDCATNO.hasType, name="Egenskap_har_type", curie=MODELLDCATNO.curie('hasType'),
                   model_uri=DEFAULT_.Egenskap_har_type, domain=Egenskap, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.Egenskap_relasjonsegenskapsnavn = Slot(uri=MODELLDCATNO.relationPropertyLabel, name="Egenskap_relasjonsegenskapsnavn", curie=MODELLDCATNO.curie('relationPropertyLabel'),
                   model_uri=DEFAULT_.Egenskap_relasjonsegenskapsnavn, domain=Egenskap, range=Optional[Union[str, list[str]]])

slots.Egenskap_sekvensnummer = Slot(uri=MODELLDCATNO.sequenceNumber, name="Egenskap_sekvensnummer", curie=MODELLDCATNO.curie('sequenceNumber'),
                   model_uri=DEFAULT_.Egenskap_sekvensnummer, domain=Egenskap, range=Optional[int])

slots.Egenskap_tilhoerer_modul = Slot(uri=MODELLDCATNO.belongsToModule, name="Egenskap_tilhoerer_modul", curie=MODELLDCATNO.curie('belongsToModule'),
                   model_uri=DEFAULT_.Egenskap_tilhoerer_modul, domain=Egenskap, range=Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]])

slots.Egenskap_utgjor_symmetrisk_relasjon_med = Slot(uri=MODELLDCATNO.formsSymmetryWith, name="Egenskap_utgjor_symmetrisk_relasjon_med", curie=MODELLDCATNO.curie('formsSymmetryWith'),
                   model_uri=DEFAULT_.Egenskap_utgjor_symmetrisk_relasjon_med, domain=Egenskap, range=Optional[Union[str, EgenskapId]])

slots.Attributt_har_datatype = Slot(uri=MODELLDCATNO.hasDataType, name="Attributt_har_datatype", curie=MODELLDCATNO.curie('hasDataType'),
                   model_uri=DEFAULT_.Attributt_har_datatype, domain=Attributt, range=Optional[Union[Union[str, DatatypeId], list[Union[str, DatatypeId]]]])

slots.Attributt_har_enkel_type = Slot(uri=MODELLDCATNO.hasSimpleType, name="Attributt_har_enkel_type", curie=MODELLDCATNO.curie('hasSimpleType'),
                   model_uri=DEFAULT_.Attributt_har_enkel_type, domain=Attributt, range=Optional[Union[Union[str, EnkeltypeId], list[Union[str, EnkeltypeId]]]])

slots.Attributt_har_verdi_fra = Slot(uri=MODELLDCATNO.hasValueFrom, name="Attributt_har_verdi_fra", curie=MODELLDCATNO.curie('hasValueFrom'),
                   model_uri=DEFAULT_.Attributt_har_verdi_fra, domain=Attributt, range=Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]])

slots.Attributt_inneholder_objekttype = Slot(uri=MODELLDCATNO.containsObjectType, name="Attributt_inneholder_objekttype", curie=MODELLDCATNO.curie('containsObjectType'),
                   model_uri=DEFAULT_.Attributt_inneholder_objekttype, domain=Attributt, range=Optional[Union[Union[str, ObjekttypeId], list[Union[str, ObjekttypeId]]]])

slots.Assosiasjon_refererer_til = Slot(uri=MODELLDCATNO.refersTo, name="Assosiasjon_refererer_til", curie=MODELLDCATNO.curie('refersTo'),
                   model_uri=DEFAULT_.Assosiasjon_refererer_til, domain=Assosiasjon, range=Optional[Union[str, ModellelementId]])

slots.Rolle_har_objekttype = Slot(uri=MODELLDCATNO.hasObjectType, name="Rolle_har_objekttype", curie=MODELLDCATNO.curie('hasObjectType'),
                   model_uri=DEFAULT_.Rolle_har_objekttype, domain=Rolle, range=Optional[Union[str, ObjekttypeId]])

slots.Spesialisering_har_generelt_begrep = Slot(uri=MODELLDCATNO.hasGeneralConcept, name="Spesialisering_har_generelt_begrep", curie=MODELLDCATNO.curie('hasGeneralConcept'),
                   model_uri=DEFAULT_.Spesialisering_har_generelt_begrep, domain=Spesialisering, range=Optional[Union[str, ModellelementId]])

slots.Komposisjon_inneholder = Slot(uri=MODELLDCATNO.contains, name="Komposisjon_inneholder", curie=MODELLDCATNO.curie('contains'),
                   model_uri=DEFAULT_.Komposisjon_inneholder, domain=Komposisjon, range=Optional[Union[str, ModellelementId]])

slots.Realisering_har_leverandoer = Slot(uri=MODELLDCATNO.hasSupplier, name="Realisering_har_leverandoer", curie=MODELLDCATNO.curie('hasSupplier'),
                   model_uri=DEFAULT_.Realisering_har_leverandoer, domain=Realisering, range=Optional[Union[str, ModellelementId]])

slots.Abstraksjon_er_abstraksjon_av = Slot(uri=MODELLDCATNO.isAbstractionOf, name="Abstraksjon_er_abstraksjon_av", curie=MODELLDCATNO.curie('isAbstractionOf'),
                   model_uri=DEFAULT_.Abstraksjon_er_abstraksjon_av, domain=Abstraksjon, range=Optional[Union[str, ModellelementId]])

slots.Avhengighet_avhengig_av = Slot(uri=MODELLDCATNO.dependentOn, name="Avhengighet_avhengig_av", curie=MODELLDCATNO.curie('dependentOn'),
                   model_uri=DEFAULT_.Avhengighet_avhengig_av, domain=Avhengighet, range=Optional[Union[str, ModellelementId]])

slots.Valg_har_noe = Slot(uri=MODELLDCATNO.hasSome, name="Valg_har_noe", curie=MODELLDCATNO.curie('hasSome'),
                   model_uri=DEFAULT_.Valg_har_noe, domain=Valg, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.Note_annoterer = Slot(uri=MODELLDCATNO.annotates, name="Note_annoterer", curie=MODELLDCATNO.curie('annotates'),
                   model_uri=DEFAULT_.Note_annoterer, domain=Note, range=Optional[Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]]])

slots.Note_egenskapsmerknad = Slot(uri=MODELLDCATNO.propertyNote, name="Note_egenskapsmerknad", curie=MODELLDCATNO.curie('propertyNote'),
                   model_uri=DEFAULT_.Note_egenskapsmerknad, domain=Note, range=Optional[Union[str, list[str]]])

slots.Note_identifikator_literal = Slot(uri=DCT.identifier, name="Note_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Note_identifikator_literal, domain=Note, range=Optional[str])

slots.Note_tittel = Slot(uri=DCT.title, name="Note_tittel", curie=DCT.curie('title'),
                   model_uri=DEFAULT_.Note_tittel, domain=Note, range=Optional[Union[str, list[str]]])

slots.Note_tilhoerer_modul = Slot(uri=MODELLDCATNO.belongsToModule, name="Note_tilhoerer_modul", curie=MODELLDCATNO.curie('belongsToModule'),
                   model_uri=DEFAULT_.Note_tilhoerer_modul, domain=Note, range=Optional[Union[Union[str, ModulId], list[Union[str, ModulId]]]])

slots.Begrensningsregel_begrenser = Slot(uri=MODELLDCATNO.constrains, name="Begrensningsregel_begrenser", curie=MODELLDCATNO.curie('constrains'),
                   model_uri=DEFAULT_.Begrensningsregel_begrenser, domain=Begrensningsregel, range=Union[Union[str, ModellelementId], list[Union[str, ModellelementId]]])

slots.Begrensningsregel_begrensningsuttrykk = Slot(uri=MODELLDCATNO.constraintExpression, name="Begrensningsregel_begrensningsuttrykk", curie=MODELLDCATNO.curie('constraintExpression'),
                   model_uri=DEFAULT_.Begrensningsregel_begrensningsuttrykk, domain=Begrensningsregel, range=Optional[Union[str, list[str]]])

slots.Kodeelement_i_kodeliste = Slot(uri=SKOS.inScheme, name="Kodeelement_i_kodeliste", curie=SKOS.curie('inScheme'),
                   model_uri=DEFAULT_.Kodeelement_i_kodeliste, domain=Kodeelement, range=Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]])

slots.Kodeelement_kode = Slot(uri=SKOS.notation, name="Kodeelement_kode", curie=SKOS.curie('notation'),
                   model_uri=DEFAULT_.Kodeelement_kode, domain=Kodeelement, range=str)

slots.Kodeelement_anbefalt_kodetekst = Slot(uri=SKOS.prefLabel, name="Kodeelement_anbefalt_kodetekst", curie=SKOS.curie('prefLabel'),
                   model_uri=DEFAULT_.Kodeelement_anbefalt_kodetekst, domain=Kodeelement, range=Optional[Union[str, list[str]]])

slots.Kodeelement_begrep = Slot(uri=DCT.subject, name="Kodeelement_begrep", curie=DCT.curie('subject'),
                   model_uri=DEFAULT_.Kodeelement_begrep, domain=Kodeelement, range=Optional[Union[Union[str, KonseptId], list[Union[str, KonseptId]]]])

slots.Kodeelement_identifikator_literal = Slot(uri=DCT.identifier, name="Kodeelement_identifikator_literal", curie=DCT.curie('identifier'),
                   model_uri=DEFAULT_.Kodeelement_identifikator_literal, domain=Kodeelement, range=Optional[str])

slots.Kodeelement_toppelement_til = Slot(uri=SKOS.topConceptOf, name="Kodeelement_toppelement_til", curie=SKOS.curie('topConceptOf'),
                   model_uri=DEFAULT_.Kodeelement_toppelement_til, domain=Kodeelement, range=Optional[Union[Union[str, KodelisteId], list[Union[str, KodelisteId]]]])

