# Auto generated from None by pythongen.py version: 0.1.0
# Generation date: 2019-01-27 20:21
# Schema: issue
#
# id: http://shex.io/shex-primer/issueshape
# description:
# license:
from typing import Optional, List, Union, Dict
from dataclasses import dataclass
from biolinkml.utils.metamodelcore import empty_list, empty_dict
from biolinkml.utils.yamlutils import YAMLRoot
metamodel_version = "0.1.0"
inherited_slots: List[str] = []
# Type names
# Class references
class PersonName(str):
pass
class EnroleeName(PersonName):
pass
@dataclass
class Person(YAMLRoot):
# === person ===
name: Union[str, PersonName]
def _fix_elements(self):
super()._fix_elements()
if not isinstance(self.name, PersonName):
self.name = PersonName(self.name)
@dataclass
class Enrolee(Person):
# === person ===
name: Union[str, EnroleeName]
# === enrolee ===
hasGuardian: List[Union[str, PersonName]] = empty_list()
age: Optional[int] = None
def _fix_elements(self):
super()._fix_elements()
if self.name and not isinstance(self.name, EnroleeName):
self.name = EnroleeName(self.name)
self.hasGuardian = [v if isinstance(v, PersonName)
else PersonName(v) for v in self.hasGuardian]
<http://shex.io/shex-primer/issueshape/Str> <http://www.w3.org/2001/XMLSchema#string>
<http://shex.io/shex-primer/issueshape/Int> <http://www.w3.org/2001/XMLSchema#integer>
<http://shex.io/shex-primer/issueshape/Enrolee> (
@<http://shex.io/shex-primer/issueshape/Person> AND CLOSED {
( <http://xmlns.com/foaf/0.1/age> @<http://shex.io/shex-primer/issueshape/Int> ? ;
<http://shex.io/shex-primer/issue/hasGuardian> @<http://shex.io/shex-primer/issueshape/Person> +
)
}
)
<http://shex.io/shex-primer/issueshape/Person> CLOSED {
<http://shex.io/shex-primer/issue/name> @<http://shex.io/shex-primer/issueshape/Str>
}