1111
1212from jinja2 import Environment , select_autoescape , FileSystemLoader
1313
14+ OPENMINDS_VERSION = "latest"
1415
1516name_map = {
1617 "scope" : "model_scope" , # this is because 'scope' is already a keyword
@@ -275,7 +276,7 @@ def invert_dict(D):
275276
276277
277278DEFAULT_SPACES = {
278- "chemicals" : {"default" : "dataset " },
279+ "chemicals" : {"default" : "in-depth " },
279280 "core" : invert_dict (
280281 {
281282 "common" : [
@@ -387,7 +388,6 @@ def invert_dict(D):
387388 ),
388389 "publications" : {"default" : "livepapers" },
389390 "ephys" : {"default" : "in-depth" },
390- "chemicals" : {"default" : "in-depth" },
391391 "specimen_prep" : {"default" : "in-depth" },
392392 "stimulation" : {"default" : "in-depth" },
393393}
@@ -489,7 +489,7 @@ def generate_class_name(iri, module_map=None):
489489 assert isinstance (iri , str )
490490 class_name = iri .split ("/" )[- 1 ]
491491 module_name = generate_python_name (module_map [iri ])
492- return f"openminds.{ module_name } .{ class_name } "
492+ return f"openminds.{ OPENMINDS_VERSION } . { module_name } .{ class_name } "
493493
494494
495495def get_controlled_terms_table (type_ ):
@@ -586,17 +586,6 @@ def get_controlled_terms_table(type_):
586586}
587587
588588
589- def get_type_from_schema (schema_payload , override = True ):
590- if override : # temporarily use the old namespaces, until the KG is updated
591- cls_name = schema_payload ["_type" ].split ("/" )[- 1 ]
592- module_name = schema_payload ['_module' ]
593- if module_name == "SANDS" :
594- module_name = "sands"
595- return f"https://openminds.ebrains.eu/{ module_name } /{ cls_name } "
596- else :
597- return schema_payload ["_type" ]
598-
599-
600589class FairgraphClassBuilder :
601590 """docstring"""
602591
@@ -631,7 +620,6 @@ def get_type(prop):
631620 "email" : "str" , # todo: add an Email class for validation?
632621 "ECMA262" : "str" , # ...
633622 }
634- #breakpoint()
635623 if "_linkedTypes" in prop :
636624 types = []
637625 for item in prop ["_linkedTypes" ]:
@@ -697,7 +685,7 @@ def get_type(prop):
697685 {
698686 "name" : python_name ,
699687 "type_str" : get_type (prop ), # compress using JSON-LD context
700- "iri" : f"vocab: { prop ['name' ]} " ,
688+ "iri" : f"{ prop ['name' ]} " ,
701689 "allow_multiple" : allow_multiple ,
702690 "required" : iri in self ._schema_payload .get ("required" , []),
703691 "doc" : generate_doc (prop , class_name ),
@@ -732,7 +720,7 @@ def get_type(prop):
732720 # todo: we should fix this at some point, using just the first forward_link_name causes things to break
733721 # making this a dictionary keyed by class names should work?
734722 _forward_link_name_python = generate_python_name (forward_link_name )
735- iri = f"^vocab: { forward_iri } "
723+ iri = forward_iri
736724 doc = f"reverse of '{ _forward_link_name_python } '"
737725 types_str = sorted (types_str )
738726 if len (types_str ) == 1 :
@@ -749,7 +737,7 @@ def get_type(prop):
749737 forward_iri = linked_from [reverse_link_name ][0 ]
750738 forward_link_name = linked_from [reverse_link_name ][1 ]
751739 _forward_link_name_python = [generate_python_name (name ) for name in forward_link_name ]
752- iri = [f"^vocab: { part } " for part in forward_iri ]
740+ iri = [part for part in forward_iri ]
753741 doc = "reverse of " + ", " .join (name for name in _forward_link_name_python )
754742 reverse_name_python = generate_python_name (reverse_link_name )
755743 if reverse_name_python in forward_property_names :
@@ -777,12 +765,14 @@ def get_type(prop):
777765 with open (f"additional_methods/{ class_name } .py.txt" ) as fp :
778766 additional_methods = fp .read ()
779767 self .context = {
768+ "openminds_version" : OPENMINDS_VERSION ,
780769 "docstring" : self ._schema_payload .get ("description" , "<description not available>" ),
781770 "base_class" : base_class ,
782771 "preamble" : preamble .get (class_name , "" ), # default value, may be updated below
772+ "module_name" : module_name ,
783773 "class_name" : class_name ,
784774 "default_space" : default_space ,
785- "openminds_type" : get_type_from_schema ( self ._schema_payload , override = True ) ,
775+ "openminds_type" : self ._schema_payload [ "_type" ] ,
786776 "properties" : sorted (properties , key = lambda p : p ["name" ]),
787777 "reverse_properties" : sorted (reverse_properties , key = lambda p : p ["name" ]),
788778 "additional_methods" : "" ,
@@ -799,7 +789,7 @@ def get_type(prop):
799789 "date" : "from datetime import date" ,
800790 "datetime" : "from datetime import datetime" ,
801791 "time" : "from datetime import time" ,
802- "IRI" : "from fairgraph.base import IRI" ,
792+ "IRI" : "from openminds import IRI" ,
803793 "[datetime, time]" : "from datetime import datetime, time" ,
804794 "Real" : "from numbers import Real"
805795 }
@@ -849,7 +839,6 @@ def get_edges(self):
849839 reverse_link_name ,
850840 ) # linked from (cls, prop name, prop name plural, reverse name)
851841 # if self._schema_payload["_type"].endswith("File"):
852- # breakpoint()
853842 return embedded , linked
854843
855844 def get_module_map (self ):
0 commit comments