Repository: ES-DOC/pyesdoc (language: python)

Issue:
Migrate to Python 3
Much overdue, especially as we are now sitting on some high-severity security vulnerabilities (in `urllib3` and `lxml`) which can't be resolved automatically by Dependabot, which requires Python 3, so would need manual compatibility verification (which seems risky and time-consuming!).

I would like to tackle this migration straight after the machine and performance work is released, before starting the conformance work in earnest, because use of Python 2 slowed me down greatly with the former in terms of difficulty of setting up a compatible environment across essential libraries and changing code I write naturally in 3 to work with Python 2.


Discussion / hints:
This didn't happen a few years ago for various reasons (mostly lack of dedicated time) but I am tackling this now in a separate branch for server-side use (and will commit the code once I get things working in Python 3).

Fix patch:
diff --git a/Pipfile b/Pipfile
index 8cc212e1..95361f35 100644
--- a/Pipfile
+++ b/Pipfile
@@ -11,6 +11,6 @@ requests = "*"
 tornado = "*"
 
 [requires]
-python_version = "2.7.18"
+python_version = "3.9"
 
 [dev-packages]
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 10a11926..5ded0d47 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -45,8 +45,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'pyesdoc'
-copyright = u'2015, ???'
+project = 'pyesdoc'
+copyright = '2015, ???'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -198,8 +198,8 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-  ('index', 'pyesdoc.tex', u'pyesdoc Documentation',
-   u'Mark A. Greenslade', 'manual'),
+  ('index', 'pyesdoc.tex', 'pyesdoc Documentation',
+   'Mark A. Greenslade', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -228,8 +228,8 @@
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('index', 'pyesdoc', u'pyesdoc Documentation',
-     [u'Mark A. Greenslade'], 1)
+    ('index', 'pyesdoc', 'pyesdoc Documentation',
+     ['Mark A. Greenslade'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -242,8 +242,8 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'pyesdoc', u'pyesdoc Documentation',
-   u'Mark A. Greenslade', 'pyesdoc', 'One line description of project.',
+  ('index', 'pyesdoc', 'pyesdoc Documentation',
+   'Mark A. Greenslade', 'pyesdoc', 'One line description of project.',
    'Miscellaneous'),
 ]
 
diff --git a/pyesdoc/_api_proxy.py b/pyesdoc/_api_proxy.py
index 4018dd89..de1ef1b7 100644
--- a/pyesdoc/_api_proxy.py
+++ b/pyesdoc/_api_proxy.py
@@ -9,7 +9,7 @@
 
 """
 import os
-import urllib
+import urllib.request, urllib.parse, urllib.error
 
 import requests
 
@@ -34,7 +34,7 @@ def invoke(verb, endpoint, params=None, data=None):
     # Set endpoint url.
     url = "{}{}".format(_BASE_URL, endpoint)
     if params is not None:
-    	url += "?{}".format(urllib.urlencode(params))
+    	url += "?{}".format(urllib.parse.urlencode(params))
 
     # Set request headers.
     headers = None if not data else {'content-type': 'application/json'}
diff --git a/pyesdoc/_codecs/dictionary/encoder.py b/pyesdoc/_codecs/dictionary/encoder.py
index d6953827..19cd1360 100644
--- a/pyesdoc/_codecs/dictionary/encoder.py
+++ b/pyesdoc/_codecs/dictionary/encoder.py
@@ -3,7 +3,7 @@
 
    :license: GPL / CeCILL
    :platform: Unix, Windows
-   :synopsis: Enocdes a document as a python dictionary.
+   :synopsis: Encodes a document as a Python dictionary.
 
 .. moduleauthor:: Earth System Documentation (ES-DOC) <dev@es-doc.org>
 
@@ -62,7 +62,7 @@ def encode(doc):
         else:
             if len(val) > 0:
                 # ... string types;
-                if isinstance(val, (str, unicode)):
+                if isinstance(val, str):
                     obj[key] = val
                 # ... collections;
                 else:
diff --git a/pyesdoc/_codecs/html/encoder.py b/pyesdoc/_codecs/html/encoder.py
index 842080ba..ddf990ab 100644
--- a/pyesdoc/_codecs/html/encoder.py
+++ b/pyesdoc/_codecs/html/encoder.py
@@ -111,7 +111,7 @@ def _log(msg):
     """Emits a template logging message - used for debugging.
 
     """
-    print "TEMPLATE:", msg
+    print("TEMPLATE:", msg)
 
 
 class TemplateInfo(object):
@@ -180,7 +180,7 @@ def get_group_key(doc):
         group_set[group_key].append(document)
 
     # Sort group sets.
-    for group_key, document_set in group_set.iteritems():
+    for group_key, document_set in group_set.items():
         group_set[group_key] = sorted(document_set, key=get_sort_key)
 
     return group_set
diff --git a/pyesdoc/_codecs/html/fieldsets/cim_1.py b/pyesdoc/_codecs/html/fieldsets/cim_1.py
index 17e8fccf..b9feec49 100644
--- a/pyesdoc/_codecs/html/fieldsets/cim_1.py
+++ b/pyesdoc/_codecs/html/fieldsets/cim_1.py
@@ -117,7 +117,7 @@ def _get_software_modelcomponent_properties(properties):
         Field('Institute', path='meta.institute'),
         Field('Acronym', path='acronym'),
         Field('Format', path='distribution.format'),
-        Field('State', path='data_status', output_formatter=unicode.upper),
+        Field('State', path='data_status', output_formatter=str.upper),
         Field('Description', path='description')
     ],
 
diff --git a/pyesdoc/_codecs/html/fieldsets/factory.py b/pyesdoc/_codecs/html/fieldsets/factory.py
index cb006f83..5c1bb47e 100644
--- a/pyesdoc/_codecs/html/fieldsets/factory.py
+++ b/pyesdoc/_codecs/html/fieldsets/factory.py
@@ -14,7 +14,7 @@
 
 
 # Fieldsets by ontology type.
-_FIELDSETS = dict(cim_1.FIELDSETS.items() + cim_2.FIELDSETS.items())
+_FIELDSETS = dict(list(cim_1.FIELDSETS.items()) + list(cim_2.FIELDSETS.items()))
 
 
 def create(fieldset):
diff --git a/pyesdoc/_codecs/html/fieldsets/field.py b/pyesdoc/_codecs/html/fieldsets/field.py
index 082055eb..1a155cc3 100644
--- a/pyesdoc/_codecs/html/fieldsets/field.py
+++ b/pyesdoc/_codecs/html/fieldsets/field.py
@@ -178,7 +178,7 @@ def is_collection_reference(attr):
         # ... collection filter by attribute
         elif "=" in attr:
             left, right = attr.split("=")
-            value = runtime.first(value, left, right.lower(), lambda v: unicode(v).lower())
+            value = runtime.first(value, left, right.lower(), lambda v: str(v).lower())
         # ... item attribute filter
         elif hasattr(value, attr):
             value = getattr(value, attr)
@@ -190,7 +190,7 @@ def is_collection_reference(attr):
             break
 
     # Tornado templating requires 'strings'.
-    if isinstance(value, unicode):
+    if isinstance(value, str):
         value = convert.unicode_to_str(value)
 
     return None if value == data else value
diff --git a/pyesdoc/_codecs/xml/decoder.py b/pyesdoc/_codecs/xml/decoder.py
index 6b1c1527..14b3890f 100644
--- a/pyesdoc/_codecs/xml/decoder.py
+++ b/pyesdoc/_codecs/xml/decoder.py
@@ -82,7 +82,7 @@ def decode(as_xml):
 
     """
     # Convert to etree.
-    if isinstance(as_xml, unicode):
+    if isinstance(as_xml, str):
         as_xml = ET.fromstring(convert.unicode_to_str(as_xml))
     elif isinstance(as_xml, str):
         as_xml = ET.fromstring(as_xml)
diff --git a/pyesdoc/_codecs/xml/encoder.py b/pyesdoc/_codecs/xml/encoder.py
index 1a563f1b..7270bec0 100644
--- a/pyesdoc/_codecs/xml/encoder.py
+++ b/pyesdoc/_codecs/xml/encoder.py
@@ -52,7 +52,7 @@ def _encode_simple(xml, val):
     """
     # Format according to type.
     if val in (None, 'None'):
-        return u''
+        return ''
     elif isinstance(val, datetime.datetime):
         val = val.isoformat().replace('T', ' ')
     elif isinstance(val, datetime.date):
@@ -62,7 +62,7 @@ def _encode_simple(xml, val):
     else:
         val = convert.str_to_unicode(val)
     if val is None or len(val) == 0:
-        val = u''
+        val = ''
 
     # Assign to xml.
     xml.text = val.strip()
@@ -85,7 +85,7 @@ def _encode_complex(xml, d):
 
     """
     # Iterate dictionary keys sorted in alphabetical order.
-    for k in sorted(d.iterkeys()):
+    for k in sorted(d.keys()):
         # Get attribute value.
         v = d[k]
 
diff --git a/pyesdoc/_codecs/xml_metafor_cim_v1/decoder_utils.py b/pyesdoc/_codecs/xml_metafor_cim_v1/decoder_utils.py
index 9e9a450e..943a514d 100644
--- a/pyesdoc/_codecs/xml_metafor_cim_v1/decoder_utils.py
+++ b/pyesdoc/_codecs/xml_metafor_cim_v1/decoder_utils.py
@@ -21,26 +21,26 @@
 
 
 # Null uuid for checking whether one has to be generated.
-NULL_UUID = u'00000000-0000-0000-0000-000000000000'
+NULL_UUID = '00000000-0000-0000-0000-000000000000'
 
 
 
-def _get_value(xml, rtype=unicode):
+def _get_value(xml, rtype=str):
     """Returns xml node value."""
     # Get xml value.
-    if isinstance(xml, types.ListType):
+    if isinstance(xml, list):
         xml = None if len(xml) == 0 else xml[0]
     if xml is None:
         return None
 
     # Get unicode.
-    if rtype is unicode:
-        if isinstance(xml, types.StringTypes):
+    if rtype is str:
+        if isinstance(xml, str):
             result = convert.str_to_unicode(xml)
         else:
             result = convert.str_to_unicode(et.tostring(xml))
     else:
-        if isinstance(xml, types.StringTypes):
+        if isinstance(xml, str):
             result = convert.unicode_to_str(xml)
         else:
             result = et.tostring(xml)
@@ -61,14 +61,14 @@ def _convert_to_bool(xml, nsmap=None):
     """Converts an etree element xml representation into a boolean type."""
     value = _get_value(xml)
 
-    return True if value is not None and value.lower() in [u'true'] else bool()
+    return True if value is not None and value.lower() in ['true'] else bool()
 
 
 def _convert_to_integer(xml, nsmap=None):
     """Converts an etree element xml representation into an integer type."""
     value = _get_value(xml)
 
-    return int(value) if value is not None and value.upper() != u'NONE' else int()
+    return int(value) if value is not None and value.upper() != 'NONE' else int()
 
 
 def _convert_to_float(xml, nsmap=None):
@@ -95,7 +95,7 @@ def _convert_to_datetime(xml, nsmap=None):
     if value is None:
         return None
     if len(value) == 4:
-        return arrow.get(value, u"YYYY").datetime
+        return arrow.get(value, "YYYY").datetime
     else:
         return arrow.get(value).datetime
 
@@ -162,7 +162,7 @@ def set_attributes(target, xml, nsmap, decodings):
             msg += "\tAttribute is simple ? = {0};\n".format(is_simple_type)
             msg += "\tAttribute xpath = {0};\n".format(xpath)
             msg += "\tError = {0};\n".format(e)
-            print msg
+            print(msg)
 
     # Support operation chaining.
     return target
@@ -256,11 +256,11 @@ def decode_xml(decoder, xml, nsmap, is_iterable):
         return decoder(xml, nsmap)
 
     # Instance if passed etree element collection and caller wants first only.
-    if isinstance(xml, types.ListType) and is_iterable == False:
+    if isinstance(xml, list) and is_iterable == False:
         return None if len(xml) == 0 else decode_xml(decoder, xml[0], nsmap, None)
 
     # Collection if passed etree element collection.
-    if isinstance(xml, types.ListType):
+    if isinstance(xml, list):
         collection = []
         for elem in xml:
             instance = decode_xml(decoder, elem, nsmap, None)
@@ -304,7 +304,7 @@ def load_xml(xml, return_nsmap=False, default_ns='cim'):
             nsmap = xml.nsmap
         except Exception as e:
             # ... unicode
-            if isinstance(xml, unicode):
+            if isinstance(xml, str):
                 xml = convert.unicode_to_str(xml)
 
             # ... strings
diff --git a/pyesdoc/_extensions/cim/v1/software_model_component.py b/pyesdoc/_extensions/cim/v1/software_model_component.py
index 63faf7a7..13d35956 100644
--- a/pyesdoc/_extensions/cim/v1/software_model_component.py
+++ b/pyesdoc/_extensions/cim/v1/software_model_component.py
@@ -30,7 +30,7 @@ def get_extenders():
 
 # Mappings between component type & component type display name.
 _COMPONENT_TYPE_DISPLAY_NAMES = \
-    {k: v.split(">")[-1].strip() for k, v in iter(METAFOR_ESDOC_MODEL_COMPONENT_MAP.items())}
+    {k: v.split(">")[-1].strip() for k, v in METAFOR_ESDOC_MODEL_COMPONENT_MAP.items()}
 
 
 # Component extension context information.
@@ -79,13 +79,13 @@ def _extend_component_01(ctx):
     if not hasattr(ctx.c, "ext"):
         ctx.c.ext = _ComponentExtensionInfo()
     if not hasattr(ctx.c.ext, "full_display_name"):
-        ctx.c.ext.full_display_name = unicode()
+        ctx.c.ext.full_display_name = str()
     if not hasattr(ctx.c.ext, "long_display_name"):
-        ctx.c.ext.long_display_name = unicode()
+        ctx.c.ext.long_display_name = str()
     if not hasattr(ctx.c.ext, "short_display_name"):
-        ctx.c.ext.short_display_name = unicode()
+        ctx.c.ext.short_display_name = str()
     if not hasattr(ctx.c.ext, "type_display_name"):
-        ctx.c.ext.type_display_name = unicode()
+        ctx.c.ext.type_display_name = str()
 
     ctx.c.ext.ancestors = ctx.ancestors
     ctx.c.ext.component_tree = []
@@ -130,16 +130,16 @@ def _extend_component_03(ctx):
         ctx.c.ext.short_display_name = ctx.c.type
 
     # Long name.
-    ctx.c.ext.long_display_name = unicode()
+    ctx.c.ext.long_display_name = str()
     if ctx.c.ext.depth > 1:
         ctx.c.ext.long_display_name += ctx.c.ext.parent.ext.long_display_name
-        ctx.c.ext.long_display_name += u" > "
+        ctx.c.ext.long_display_name += " > "
     ctx.c.ext.long_display_name += ctx.c.ext.short_display_name
 
     # Full name.
     if ctx.c.ext.depth > 0:
         ctx.c.ext.full_display_name += ctx.c.ext.parent.ext.full_display_name
-        ctx.c.ext.full_display_name += u" > "
+        ctx.c.ext.full_display_name += " > "
         ctx.c.ext.full_display_name += ctx.c.ext.short_display_name
 
 
diff --git a/pyesdoc/_extensions/cim/v1/software_model_component_property_1.py b/pyesdoc/_extensions/cim/v1/software_model_component_property_1.py
index 57b8a230..4f2545ea 100644
--- a/pyesdoc/_extensions/cim/v1/software_model_component_property_1.py
+++ b/pyesdoc/_extensions/cim/v1/software_model_component_property_1.py
@@ -10,6 +10,7 @@
 from pyesdoc.utils.convert import capitalize
 from pyesdoc.utils.convert import str_to_spaced_case
 from pyesdoc.utils.convert import str_to_unicode
+from functools import reduce
 
 
 
@@ -24,10 +25,10 @@ class _PropertyExtensionInfo(object):
 
     """
     def __init__(self):
-        self.display_name = unicode()
-        self.full_display_name = unicode()
-        self.long_display_name = unicode()
-        self.short_display_name = unicode()
+        self.display_name = str()
+        self.full_display_name = str()
+        self.long_display_name = str()
+        self.short_display_name = str()
 
 
 def _extend_property_01(ctx):
@@ -44,10 +45,10 @@ def _extend_property_02(ctx):
     """Formats property values.
 
     """
-    ctx.p.values = filter(None, ctx.p.values)
-    ctx.p.values = map(str_to_unicode, ctx.p.values)
-    ctx.p.values = filter(len, ctx.p.values)
-    ctx.p.values = map(lambda v: v[0].upper() + v[1:], ctx.p.values)
+    ctx.p.values = [_f for _f in ctx.p.values if _f]
+    ctx.p.values = list(map(str_to_unicode, ctx.p.values))
+    ctx.p.values = list(filter(len, ctx.p.values))
+    ctx.p.values = [v[0].upper() + v[1:] for v in ctx.p.values]
 
 
 def _extend_property_03(ctx):
@@ -58,32 +59,32 @@ def _extend_property_03(ctx):
     name = ctx.p.short_name
     if len(name) and not name[0].isdigit():
         name = str_to_spaced_case(name)
-        name = map(capitalize, name.split(" "))
+        name = list(map(capitalize, name.split(" ")))
         name = reduce(lambda x, s: s if x is None else x + " " + s, name, None)
     ctx.p.ext.short_display_name = name
 
     # Display name.
     if ctx.p.ext.depth:
         ctx.p.ext.display_name += ctx.p.ext.parent.ext.display_name
-        ctx.p.ext.display_name += u" > "
+        ctx.p.ext.display_name += " > "
     ctx.p.ext.display_name += ctx.p.ext.short_display_name
 
     # Long name.
     if not ctx.p.ext.depth:
         ctx.p.ext.long_display_name = ctx.c.ext.long_display_name
-        ctx.p.ext.long_display_name += u" >> "
+        ctx.p.ext.long_display_name += " >> "
     else:
         ctx.p.ext.long_display_name = ctx.p.ext.parent.ext.long_display_name
-        ctx.p.ext.long_display_name += u" > "
+        ctx.p.ext.long_display_name += " > "
     ctx.p.ext.long_display_name += ctx.p.ext.short_display_name
 
     # Full name.
     if not ctx.p.ext.depth:
         ctx.p.ext.full_display_name = ctx.c.ext.full_display_name
-        ctx.p.ext.full_display_name += u" >> "
+        ctx.p.ext.full_display_name += " >> "
     else:
         ctx.p.ext.full_display_name = ctx.p.ext.parent.ext.full_display_name
-        ctx.p.ext.full_display_name += u" > "
+        ctx.p.ext.full_display_name += " > "
     ctx.p.ext.full_display_name += ctx.p.ext.short_display_name
 
 
@@ -120,5 +121,5 @@ def extend(c, p, parent=None, ancestors=[]):
         try:
             func(ctx)
         except Exception as err:
-            print func, err
+            print(func, err)
             raise err
diff --git a/pyesdoc/_extensions/default.py b/pyesdoc/_extensions/default.py
index bc695ed2..a4ba9364 100644
--- a/pyesdoc/_extensions/default.py
+++ b/pyesdoc/_extensions/default.py
@@ -27,7 +27,7 @@ def _set_type_info(ctx):
     ctx.meta.type = ctx.ext.type = ctx.doc.__class__.type_key
     ctx.ext.css_class = ctx.ext.type.lower().replace(".", "-")
     ctx.meta.type_display_name = cim.constants.DISPLAY_NAMES.get(type(ctx.doc), ctx.meta.type.split(".")[-1])
-    ctx.meta.type_sort_key = cim.constants.SORT_KEYS.get(type(ctx.doc), u"ZZ")
+    ctx.meta.type_sort_key = cim.constants.SORT_KEYS.get(type(ctx.doc), "ZZ")
 
 
 def _set_institute(ctx):
@@ -104,18 +104,18 @@ def _set_full_display_name(ctx):
     if ctx.ext.full_display_name:
         return
 
-    name = u""
+    name = ""
     if ctx.meta.project:
         name += ctx.meta.project.upper()
-        name += u" "
+        name += " "
     name += ctx.meta.type_display_name
-    name += u" : "
-    if ctx.meta.institute and ctx.meta.institute != u"--":
+    name += " : "
+    if ctx.meta.institute and ctx.meta.institute != "--":
         name += ctx.meta.institute.upper()
-        name += u" - "
+        name += " - "
     if ctx.ext.display_name:
         name += ctx.ext.display_name
-        name += u" "
+        name += " "
 
     ctx.ext.full_display_name = name.strip()
 
@@ -124,8 +124,8 @@ def _set_sort_key(ctx):
     """Sets document full display name.
 
     """
-    ctx.meta.sort_key = u"{0}{1}".format(
-        ctx.meta.type_sort_key, ctx.ext.display_name or unicode())
+    ctx.meta.sort_key = "{0}{1}".format(
+        ctx.meta.type_sort_key, ctx.ext.display_name or str())
     ctx.meta.sort_key = ctx.meta.sort_key.upper()
 
 
diff --git a/pyesdoc/_extensions/extender.py b/pyesdoc/_extensions/extender.py
index 219ce61d..3b167912 100644
--- a/pyesdoc/_extensions/extender.py
+++ b/pyesdoc/_extensions/extender.py
@@ -19,7 +19,7 @@
 # Supported extenders keyed by document type.
 SUPPORTED = {}
 for o in {cim.v1, cim.v2}:
-    for doc_type, doc_extender in o.SUPPORTED.iteritems():
+    for doc_type, doc_extender in o.SUPPORTED.items():
         SUPPORTED[doc_type] = doc_extender
 
 
@@ -45,13 +45,13 @@ def __init__(self):
 
         """
         self.children = []
-        self.css_class = unicode()
-        self.description = unicode()
-        self.display_name = unicode()
-        self.full_display_name = unicode()
+        self.css_class = str()
+        self.description = str()
+        self.display_name = str()
+        self.full_display_name = str()
         self.summary_fields = []
-        self.type = unicode()
-        self.viewer_url = unicode()
+        self.type = str()
+        self.viewer_url = str()
 
 
 def extend(doc):
diff --git a/pyesdoc/_factory.py b/pyesdoc/_factory.py
index 9db0941e..9ea8db76 100644
--- a/pyesdoc/_factory.py
+++ b/pyesdoc/_factory.py
@@ -50,20 +50,20 @@ def create(
 
     # Reformat.
     if institute:
-        institute = unicode(institute).lower()
+        institute = str(institute).lower()
     if project:
-        project = unicode(project).lower()
+        project = str(project).lower()
     if source:
-        source = unicode(source).lower()
+        source = str(source).lower()
     elif institute:
         source = institute
     elif project:
         source = project
-    uid = unicode(uid)
+    uid = str(uid)
     if sub_projects:
-        if isinstance(sub_projects, (str, unicode)):
+        if isinstance(sub_projects, str):
             sub_projects = [sub_projects]
-        sub_projects = [unicode(i).lower() for i in sub_projects]
+        sub_projects = [str(i).lower() for i in sub_projects]
 
     # Verify uid.
     try:
diff --git a/pyesdoc/_io.py b/pyesdoc/_io.py
index 06a9a08e..e447c95f 100644
--- a/pyesdoc/_io.py
+++ b/pyesdoc/_io.py
@@ -115,7 +115,7 @@ def seek(io_dir, filter=None, latest=False):
 
     # Document collection - all.
     if filter is None and not latest:
-        docs = sum([i.values() for i in targets.values()], [])
+        docs = sum([list(i.values()) for i in targets.values()], [])
         return [read(i) for i in docs]
 
     # Document collection - latest.
@@ -125,7 +125,7 @@ def seek(io_dir, filter=None, latest=False):
 
     # Document collection (typed) - all.
     elif filter in ontologies.type_info.TYPES and not latest:
-        docs = sum([i.values() for i in targets.values()], [])
+        docs = sum([list(i.values()) for i in targets.values()], [])
         docs = [i for i in docs if i.find(filter.type_key) > -1]
         return [read(i) for i in docs]
 
diff --git a/pyesdoc/_publishing.py b/pyesdoc/_publishing.py
index d315b380..0e2ece9f 100644
--- a/pyesdoc/_publishing.py
+++ b/pyesdoc/_publishing.py
@@ -9,7 +9,7 @@
 
 """
 import datetime
-import urllib
+import urllib.request, urllib.parse, urllib.error
 import uuid
 
 import requests
@@ -140,4 +140,4 @@ def _get_doc_endpoint(endpoint, uid, version, encoding=None):
     if encoding:
         params["encoding"] = encoding
 
-    return "{}?{}".format(endpoint, urllib.urlencode(params))
+    return "{}?{}".format(endpoint, urllib.parse.urlencode(params))
diff --git a/pyesdoc/_search.py b/pyesdoc/_search.py
index f4271994..0013a295 100644
--- a/pyesdoc/_search.py
+++ b/pyesdoc/_search.py
@@ -113,7 +113,7 @@ def get_url_params(self):
 
         """
         params = {
-            k: unicode(v).strip().lower() for k, v in (
+            k: str(v).strip().lower() for k, v in (
                 ("document_type", self.document_type),
                 ("document_version", self.document_version),
                 ("experiment", self.experiment),
@@ -177,7 +177,7 @@ def load_document(self, identifier):
             assert identifier >= 0, 'Item identifier out of bounds'
             assert identifier <= len(self.items), 'Item identifier out of bounds'
             item = self.items[identifer]
-        elif isinstance(identifier, basestring):
+        elif isinstance(identifier, str):
             identifier = identifier.lower()
             for i in self.items:
                 if identifier in (n.lower() for n in i.names):
diff --git a/pyesdoc/_serialization.py b/pyesdoc/_serialization.py
index 378cdb85..04ba0cf5 100644
--- a/pyesdoc/_serialization.py
+++ b/pyesdoc/_serialization.py
@@ -30,9 +30,9 @@
 # Map of formats to allowed input types when decoding.
 _DECODE_TYPE_WHITELIST = {
     constants.ENCODING_DICT : (dict, ),
-    constants.ENCODING_JSON : (str, unicode),
-    constants.ENCODING_XML : (str, unicode, ET.Element),
-    constants.METAFOR_CIM_XML_ENCODING : (str, unicode, ET.Element, et, ete),
+    constants.ENCODING_JSON : (str, str),
+    constants.ENCODING_XML : (str, str, ET.Element),
+    constants.METAFOR_CIM_XML_ENCODING : (str, str, ET.Element, et, ete),
 }
 
 
diff --git a/pyesdoc/_validation.py b/pyesdoc/_validation.py
index a3f39f13..147ba409 100644
--- a/pyesdoc/_validation.py
+++ b/pyesdoc/_validation.py
@@ -33,7 +33,7 @@
 _DOCUMENT_REFERENCE_TYPE = "DocReference"
 
 # Set of text types.
-_TEXT_TYPES = (str, unicode)
+_TEXT_TYPES = (str,)
 
 
 def _validate_cardinality(value, expected_cardinality):
diff --git a/pyesdoc/archive/parsing/doc_parser.py b/pyesdoc/archive/parsing/doc_parser.py
index 7eb7612e..56dc4f46 100644
--- a/pyesdoc/archive/parsing/doc_parser.py
+++ b/pyesdoc/archive/parsing/doc_parser.py
@@ -78,9 +78,9 @@ def _set_meta_attributes(project, source, document):
     """Sets document meta attributes.
 
     """
-    document.meta.project = unicode(project)
+    document.meta.project = str(project)
     document.meta.source = _get_source_description(source)
-    document.meta.source_key = unicode(source)
+    document.meta.source_key = str(source)
 
 
 def _set_defaults(doc):
@@ -88,7 +88,7 @@ def _set_defaults(doc):
 
     """
     if doc.meta.institute is None:
-        doc.meta.institute = u"--"
+        doc.meta.institute = "--"
 
 
 def _get_parsers(project, source):
diff --git a/pyesdoc/archive/parsing/doc_parser_esdoc_q.py b/pyesdoc/archive/parsing/doc_parser_esdoc_q.py
index fbe4eabe..6a3d26d1 100644
--- a/pyesdoc/archive/parsing/doc_parser_esdoc_q.py
+++ b/pyesdoc/archive/parsing/doc_parser_esdoc_q.py
@@ -34,7 +34,7 @@ def _set_institute(doc):
 
     """
     if doc.meta.institute is None or not doc.meta.institute.strip():
-        doc.meta.institute = u"--"
+        doc.meta.institute = "--"
     elif doc.meta.institute.upper() in _INSTITUTE_OVERRIDES:
         doc.meta.institute = _INSTITUTE_OVERRIDES[doc.meta.institute.upper()]
 
diff --git a/pyesdoc/constants.py b/pyesdoc/constants.py
index f6a92b35..12eda1cb 100644
--- a/pyesdoc/constants.py
+++ b/pyesdoc/constants.py
@@ -67,16 +67,16 @@
 DEFAULT_ENCODING = 'json'
 
 # Default document project.
-DEFAULT_PROJECT = u'--'
+DEFAULT_PROJECT = '--'
 
 # Default document institute.
-DEFAULT_INSTITUTE = u'--'
+DEFAULT_INSTITUTE = '--'
 
 # Default document source.
-DEFAULT_SOURCE = u'scripts'
+DEFAULT_SOURCE = 'scripts'
 
 # Document viewer url.
-VIEWER_URL_BY_ID = u"index.html?renderMethod=id&project={0}&id={1}&version={2}"
+VIEWER_URL_BY_ID = "index.html?renderMethod=id&project={0}&id={1}&version={2}"
 
 # Cardinality constraint.
 CONSTRAINT_TYPE_CARDINALITY = 'cardinality'
diff --git a/pyesdoc/drq/content/initializer.py b/pyesdoc/drq/content/initializer.py
index 58eb0fe4..bf37fb55 100644
--- a/pyesdoc/drq/content/initializer.py
+++ b/pyesdoc/drq/content/initializer.py
@@ -88,4 +88,4 @@ def execute():
 
     """
     parser = _Parser()
-    parser.execute()
\ No newline at end of file
+    parser.execute()
diff --git a/pyesdoc/drq/content/section.py b/pyesdoc/drq/content/section.py
index b2a5bf7c..02f17014 100644
--- a/pyesdoc/drq/content/section.py
+++ b/pyesdoc/drq/content/section.py
@@ -64,7 +64,7 @@ def _get_item(self, key):
         """
         if isinstance(key, (slice, int)):
             return self._items[key]
-        key = unicode(key).strip().lower()
+        key = str(key).strip().lower()
         for item in self._items:
             if item.label.lower() == key:
                 return item
diff --git a/pyesdoc/drq/content/wrapper.py b/pyesdoc/drq/content/wrapper.py
index dfdc8e96..a1090ff1 100644
--- a/pyesdoc/drq/content/wrapper.py
+++ b/pyesdoc/drq/content/wrapper.py
@@ -28,7 +28,7 @@ def __repr__(self):
         """Instance representation.
 
         """
-        return unicode(self._sections)
+        return str(self._sections)
 
 
     def __len__(self):
@@ -74,7 +74,7 @@ def _get_section(self, key):
         """
         if isinstance(key, (slice, int)):
             return self._sections[key]
-        key = unicode(key).strip().lower()
+        key = str(key).strip().lower()
         for section in self._sections:
             if section._TABLE.label.lower() == key or \
                section._TABLE.label_drq.lower() == key:
diff --git a/pyesdoc/drq/definition/initializer.py b/pyesdoc/drq/definition/initializer.py
index 9f526cb2..690d7297 100644
--- a/pyesdoc/drq/definition/initializer.py
+++ b/pyesdoc/drq/definition/initializer.py
@@ -52,7 +52,7 @@ def on_parse_complete(self):
 
         """
         # Instantiate wrapper.
-        wrapper = Wrapper(self.tables.values())
+        wrapper = Wrapper(list(self.tables.values()))
 
         # Mutate drq.definition from package to wrapper.
         setattr(pyesdoc.drq, "definition", wrapper)
diff --git a/pyesdoc/drq/definition/table.py b/pyesdoc/drq/definition/table.py
index 7e682f76..b1957fcd 100644
--- a/pyesdoc/drq/definition/table.py
+++ b/pyesdoc/drq/definition/table.py
@@ -33,7 +33,7 @@ def __init__(self, elem):
         :param xml.etree.Element elem: XML element declared within data request definition.
 
         """
-        utils.init_from_xml(self, elem, elem.keys(), _CONVERTORS)
+        utils.init_from_xml(self, elem, list(elem.keys()), _CONVERTORS)
         self.attributes = []
         self.label_drq = self.label
         self.label = utils.get_label(self.label)
diff --git a/pyesdoc/drq/definition/table_attribute.py b/pyesdoc/drq/definition/table_attribute.py
index 9984d467..a057be71 100644
--- a/pyesdoc/drq/definition/table_attribute.py
+++ b/pyesdoc/drq/definition/table_attribute.py
@@ -55,7 +55,7 @@ def __init__(self, table, elem):
 
         """
         # Initialize from XML.
-        utils.init_from_xml(self, elem, elem.keys(), _CONVERTORS)
+        utils.init_from_xml(self, elem, list(elem.keys()), _CONVERTORS)
 
         # Switch to pythonic labels.
         self.label_drq = self.label
diff --git a/pyesdoc/drq/definition/wrapper.py b/pyesdoc/drq/definition/wrapper.py
index 4435dbea..58a864c4 100644
--- a/pyesdoc/drq/definition/wrapper.py
+++ b/pyesdoc/drq/definition/wrapper.py
@@ -28,7 +28,7 @@ def __repr__(self):
         """Instance representation.
 
         """
-        return unicode(self._tables)
+        return str(self._tables)
 
 
     def __len__(self):
diff --git a/pyesdoc/drq/utils.py b/pyesdoc/drq/utils.py
index 40bd0e46..7274cc9b 100644
--- a/pyesdoc/drq/utils.py
+++ b/pyesdoc/drq/utils.py
@@ -69,7 +69,7 @@ def init_from_xml(
             val = elem.get(name_xml)
 
         # Set value to None.
-        if val and unicode(val).strip().lower() in {u'', u'none'}:
+        if val and str(val).strip().lower() in {'', 'none'}:
             val = None
 
         # Convert value.
diff --git a/pyesdoc/exceptions.py b/pyesdoc/exceptions.py
index 7ce0e475..4e9d3cd9 100644
--- a/pyesdoc/exceptions.py
+++ b/pyesdoc/exceptions.py
@@ -24,14 +24,14 @@ def __init__(self, msg):
         :type msg: str
 
         """
-        self.message = msg() if inspect.isfunction(msg) else unicode(msg)
+        self.message = msg() if inspect.isfunction(msg) else str(msg)
 
 
     def __str__(self):
         """Returns a string representation.
 
         """
-        return u"ES-DOC PY-CLIENT EXCEPTION : {0}".format(repr(self.message))
+        return "ES-DOC PY-CLIENT EXCEPTION : {0}".format(repr(self.message))
 
 
 class ObsoleteException(LibraryBaseException):
diff --git a/pyesdoc/mp/ontologies/core/class_.py b/pyesdoc/mp/ontologies/core/class_.py
index a7cd5961..b01ba73f 100644
--- a/pyesdoc/mp/ontologies/core/class_.py
+++ b/pyesdoc/mp/ontologies/core/class_.py
@@ -10,7 +10,7 @@
 import itertools
 from collections import defaultdict
 
-import constants
+from . import constants
 
 
 class Class(object):
@@ -146,7 +146,7 @@ def all_constraints(self):
             if p.name not in result['type']:
                 result['type'][p.name] = (p.name, "type", p.type)
 
-        return list(itertools.chain.from_iterable([v.values() for v in result.values()]))
+        return list(itertools.chain.from_iterable([list(v.values()) for v in result.values()]))
 
 
     @property
diff --git a/pyesdoc/mp/ontologies/core/ontology.py b/pyesdoc/mp/ontologies/core/ontology.py
index 46fc79cc..f407e87e 100644
--- a/pyesdoc/mp/ontologies/core/ontology.py
+++ b/pyesdoc/mp/ontologies/core/ontology.py
@@ -126,7 +126,7 @@ def _set_sub_classes(ontology):
     sub_classed = {k: v for k, v in sub_classed.items() if v}
 
     # Set ontology & package sub-class sets.
-    ontology.sub_classed = sorted(sub_classed.keys(), key=lambda i: str(i))
+    ontology.sub_classed = sorted(list(sub_classed.keys()), key=lambda i: str(i))
     for pkg in ontology.packages:
         pkg.sub_classed = [c for c in ontology.sub_classed if c.package == pkg]
 
diff --git a/pyesdoc/mp/ontologies/core/package.py b/pyesdoc/mp/ontologies/core/package.py
index 59260382..fe9c309e 100644
--- a/pyesdoc/mp/ontologies/core/package.py
+++ b/pyesdoc/mp/ontologies/core/package.py
@@ -8,6 +8,7 @@
 
 """
 from operator import add
+from functools import reduce
 
 
 
diff --git a/pyesdoc/mp/ontologies/core/property.py b/pyesdoc/mp/ontologies/core/property.py
index 09effabc..95968482 100644
--- a/pyesdoc/mp/ontologies/core/property.py
+++ b/pyesdoc/mp/ontologies/core/property.py
@@ -29,7 +29,7 @@ def __init__(self, name, type_name, cardinality, doc_string):
 
         self.cls = None
         self.decodings = []
-        self.doc_string = doc_string if doc_string is not None else u""
+        self.doc_string = doc_string if doc_string is not None else ""
         self.cardinality = cardinality
         self.is_collection = cardinality.split('.')[1] == 'N'
         self.is_linked_document = (name == 'meta')
diff --git a/pyesdoc/mp/ontologies/core/schema_validation/type_validator.py b/pyesdoc/mp/ontologies/core/schema_validation/type_validator.py
index 639264fd..9ed005d5 100644
--- a/pyesdoc/mp/ontologies/core/schema_validation/type_validator.py
+++ b/pyesdoc/mp/ontologies/core/schema_validation/type_validator.py
@@ -35,7 +35,7 @@ def _validate_base_class_references(ctx):
 
 
 def _validate_class_property_type_references(ctx):
-    """Validates base class references.
+    """Validates class property type references.
 
     """
     valid_types = ctx.get_valid_types()
@@ -50,7 +50,7 @@ def _validate_class_property_type_references(ctx):
                 err = err.format(ctx.get_name(factory, module), name, typeof)
                 ctx.set_error(err)
             if qualifier and qualifier not in valid_types:
-                print name, typeof, qualifier
+                print(name, typeof, qualifier)
                 # for t in valid_types:
                 #     print t
                 err = 'Invalid linked_to qualifier: {0}.[{1}] --> '
diff --git a/pyesdoc/mp/ontologies/generators/__init__.py b/pyesdoc/mp/ontologies/generators/__init__.py
index ec0d5757..501f7c8a 100644
--- a/pyesdoc/mp/ontologies/generators/__init__.py
+++ b/pyesdoc/mp/ontologies/generators/__init__.py
@@ -55,7 +55,7 @@ def _can_generate(schema, language, output_dir):
     """
     if not language in _HANDLERS:
         err = "Programming language is unsupported [{}].  Supported languages are {}."
-        err = err.format(language, _HANDLERS.keys())
+        err = err.format(language, list(_HANDLERS.keys()))
         raise ValueError(err)
     if not os.path.exists(output_dir):
         raise IOError("Output directory does not exist [{0}].".format(output_dir))
diff --git a/pyesdoc/mp/ontologies/generators/generator.py b/pyesdoc/mp/ontologies/generators/generator.py
index eddc30fc..1b55e58b 100644
--- a/pyesdoc/mp/ontologies/generators/generator.py
+++ b/pyesdoc/mp/ontologies/generators/generator.py
@@ -13,12 +13,10 @@
 
 
 
-class Generator(object):
+class Generator(object, metaclass=ABCMeta):
     """Base class encapsulating functionality common to all code generators.
 
     """
-    # Abstract Base Class module - see http://docs.python.org/library/abc.html
-    __metaclass__ = ABCMeta
 
     def execute(self, ctx):
         """Executes the code generator.
diff --git a/pyesdoc/mp/ontologies/generators/generator_utils.py b/pyesdoc/mp/ontologies/generators/generator_utils.py
index 48f99cd4..a05c019a 100644
--- a/pyesdoc/mp/ontologies/generators/generator_utils.py
+++ b/pyesdoc/mp/ontologies/generators/generator_utils.py
@@ -12,6 +12,7 @@
 import pwd
 
 import tornado
+from functools import reduce
 
 
 
@@ -155,7 +156,7 @@ def emit_indent(count=1):
     :param int count: Number of indentations to emit.
 
     """
-    return reduce(lambda x, y: x + _INDENT, range(count), '')
+    return reduce(lambda x, y: x + _INDENT, list(range(count)), '')
 
 
 def emit_tab():
@@ -171,7 +172,7 @@ def emit_line_return(count=1):
     :param int count: Number of line returns to emit.
 
     """
-    return reduce(lambda x, y: x + _LINE_RETURN, range(count), '')
+    return reduce(lambda x, y: x + _LINE_RETURN, list(range(count)), '')
 
 
 def create_directory(dir):
diff --git a/pyesdoc/mp/ontologies/generators/python/decoder_generator.py b/pyesdoc/mp/ontologies/generators/python/decoder_generator.py
index 4f83af7a..ca39b3f1 100644
--- a/pyesdoc/mp/ontologies/generators/python/decoder_generator.py
+++ b/pyesdoc/mp/ontologies/generators/python/decoder_generator.py
@@ -12,6 +12,7 @@
 from pyesdoc.mp.ontologies.generators import generator_utils as gu
 from pyesdoc.mp.ontologies.generators.generator import Generator
 from pyesdoc.mp.ontologies.generators.python import utils as pgu
+from functools import reduce
 
 
 
@@ -114,7 +115,7 @@ def append_import(imp):
         append_import(imp)
 
     if len(imports) > 0:
-        return reduce(add, map(lambda i : i + gu.emit_line_return(), sorted(imports)))
+        return reduce(add, [i + gu.emit_line_return() for i in sorted(imports)])
     else:
         return ''
 
diff --git a/pyesdoc/mp/specializations/utils_cache.py b/pyesdoc/mp/specializations/utils_cache.py
index ed68dce4..9d4946f6 100644
--- a/pyesdoc/mp/specializations/utils_cache.py
+++ b/pyesdoc/mp/specializations/utils_cache.py
@@ -10,7 +10,7 @@
 """
 import os
 
-from utils_loader import get_modules
+from .utils_loader import get_modules
 
 
 
@@ -68,7 +68,7 @@ def _set_topic_specialization(mip_era, topic):
         return
 
     # JIT to avoid circular dependencies.
-    from utils_factory import create_specializations
+    from .utils_factory import create_specializations
 
     mip_era = mip_era.strip().lower()
     topic = topic.strip().lower()
diff --git a/pyesdoc/mp/specializations/utils_factory.py b/pyesdoc/mp/specializations/utils_factory.py
index c73a5283..c445097f 100644
--- a/pyesdoc/mp/specializations/utils_factory.py
+++ b/pyesdoc/mp/specializations/utils_factory.py
@@ -8,16 +8,16 @@
 
 
 """
-from utils import log
-from utils_cache import set_specialization as cache_specialization
-from utils_constants import *
-from utils_model import EnumSpecialization
-from utils_model import EnumChoiceSpecialization
-from utils_model import PropertySetSpecialization
-from utils_model import PropertySpecialization
-from utils_model import ShortTable
-from utils_model import ShortTableProperty
-from utils_model import TopicSpecialization
+from .utils import log
+from .utils_cache import set_specialization as cache_specialization
+from .utils_constants import *
+from .utils_model import EnumSpecialization
+from .utils_model import EnumChoiceSpecialization
+from .utils_model import PropertySetSpecialization
+from .utils_model import PropertySpecialization
+from .utils_model import ShortTable
+from .utils_model import ShortTableProperty
+from .utils_model import TopicSpecialization
 
 
 
diff --git a/pyesdoc/mp/specializations/utils_model.py b/pyesdoc/mp/specializations/utils_model.py
index 05e2d089..4d0bb6fc 100644
--- a/pyesdoc/mp/specializations/utils_model.py
+++ b/pyesdoc/mp/specializations/utils_model.py
@@ -12,7 +12,7 @@
 import inspect
 from itertools import chain
 
-from utils_constants import *
+from .utils_constants import *
 
 
 
@@ -382,7 +382,7 @@ def validate_value(self, val):
             self.enum.validate_value(val)
 
         if self.typeof in {'str', 'cs-str', 'l-str'}:
-            if not isinstance(val, basestring) or not len(val.strip()):
+            if not isinstance(val, str) or not len(val.strip()):
                 raise ValueError("Invalid value: must be a non zero length string")
 
         if self.typeof == 'bool':
@@ -444,7 +444,7 @@ def validate_value(self, val):
         :param object val: Value to be validated.
 
         """
-        if not isinstance(val, basestring) or not len(val.strip()):
+        if not isinstance(val, str) or not len(val.strip()):
             raise ValueError("Invalid value: must be a non zero length string")
         if self.is_a_member(val):
             return
diff --git a/pyesdoc/mp/specializations/utils_parser.py b/pyesdoc/mp/specializations/utils_parser.py
index a9bfb873..bb90a030 100644
--- a/pyesdoc/mp/specializations/utils_parser.py
+++ b/pyesdoc/mp/specializations/utils_parser.py
@@ -9,7 +9,7 @@
 
 
 """
-from utils_constants import *
+from .utils_constants import *
 
 
 
diff --git a/pyesdoc/mp/utils.py b/pyesdoc/mp/utils.py
index 441c59bd..577a7494 100644
--- a/pyesdoc/mp/utils.py
+++ b/pyesdoc/mp/utils.py
@@ -19,7 +19,7 @@ def __init__(self, message):
         :param str message: Exception message.
 
         """
-        self.message = unicode(message)
+        self.message = str(message)
 
 
     def __str__(self):
@@ -83,4 +83,4 @@ def str_to_camel_case(target, separator='_'):
             r += s[0].lower()
             r += s[1:]
 
-    return r
\ No newline at end of file
+    return r
diff --git a/pyesdoc/ontologies/__init__.py b/pyesdoc/ontologies/__init__.py
index fc3cee3c..30678b85 100644
--- a/pyesdoc/ontologies/__init__.py
+++ b/pyesdoc/ontologies/__init__.py
@@ -10,5 +10,5 @@
 
 
 """
-import type_info
-from utils import *
+from . import type_info
+from .utils import *
diff --git a/pyesdoc/ontologies/cim/__init__.py b/pyesdoc/ontologies/cim/__init__.py
index 4c69878d..2eb36762 100644
--- a/pyesdoc/ontologies/cim/__init__.py
+++ b/pyesdoc/ontologies/cim/__init__.py
@@ -10,9 +10,9 @@
 .. note:: Code generated using pyesdoc @ 2013-04-17 13:14:13.903808.
 
 """
-import v1
-import v2
-import constants
+from . import v1
+from . import v2
+from . import constants
 
 
 # Supported version of this ontology.
diff --git a/pyesdoc/ontologies/cim/constants.py b/pyesdoc/ontologies/cim/constants.py
index c6c5e2e2..56620aaa 100644
--- a/pyesdoc/ontologies/cim/constants.py
+++ b/pyesdoc/ontologies/cim/constants.py
@@ -10,35 +10,35 @@
 .. note:: Code generated using pyesdoc @ 2013-04-17 13:14:13.903808.
 
 """
-import v1
-import v2
+from . import v1
+from . import v2
 
 
 
 # Map of document types to display names.
 DISPLAY_NAMES = {
-    v1.activity.NumericalExperiment: u"Experiment",
-    v1.activity.SimulationRun: u"Simulation",
-    v1.data.DataObject: u"Data Object",
-    v1.grids.GridSpec: u"Grid Spec",
-    v1.misc.DocumentSet: u"Simulation",
-    v1.quality.CimQuality: u"Dataset QC",
-    v1.software.ModelComponent: u"Model",
-    v2.designing.NumericalExperiment: u"Experiment",
-    v2.designing.Project: u"Sub MIP"
+    v1.activity.NumericalExperiment: "Experiment",
+    v1.activity.SimulationRun: "Simulation",
+    v1.data.DataObject: "Data Object",
+    v1.grids.GridSpec: "Grid Spec",
+    v1.misc.DocumentSet: "Simulation",
+    v1.quality.CimQuality: "Dataset QC",
+    v1.software.ModelComponent: "Model",
+    v2.designing.NumericalExperiment: "Experiment",
+    v2.designing.Project: "Sub MIP"
 }
 
 # Map of document types to sort keys.
 SORT_KEYS = {
-    v1.activity.Ensemble: u"BC",
-    v1.activity.NumericalExperiment: u"AB",
-    v1.activity.SimulationRun: u"AC",
-    v1.data.DataObject: u"CA",
-    v1.grids.GridSpec: u"BB",
-    v1.misc.DocumentSet: u"AC",
-    v1.quality.CimQuality: u"CB",
-    v1.shared.Platform: u"BA",
-    v1.software.ModelComponent: u"AA",
-    v2.designing.NumericalExperiment: u"AB",
-    v2.designing.Project: u"AA"
+    v1.activity.Ensemble: "BC",
+    v1.activity.NumericalExperiment: "AB",
+    v1.activity.SimulationRun: "AC",
+    v1.data.DataObject: "CA",
+    v1.grids.GridSpec: "BB",
+    v1.misc.DocumentSet: "AC",
+    v1.quality.CimQuality: "CB",
+    v1.shared.Platform: "BA",
+    v1.software.ModelComponent: "AA",
+    v2.designing.NumericalExperiment: "AB",
+    v2.designing.Project: "AA"
 }
diff --git a/pyesdoc/ontologies/cim/v1/__init__.py b/pyesdoc/ontologies/cim/v1/__init__.py
index 8da940de..b9609886 100644
--- a/pyesdoc/ontologies/cim/v1/__init__.py
+++ b/pyesdoc/ontologies/cim/v1/__init__.py
@@ -20,165 +20,165 @@
 FULL_NAME = '{}.{}'.format(NAME, VERSION)
 
 # Ontology packag set.
-import typeset_for_activity_package as activity
-import typeset_for_data_package as data
-import typeset_for_grids_package as grids
-import typeset_for_misc_package as misc
-import typeset_for_quality_package as quality
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
+from . import typeset_for_activity_package as activity
+from . import typeset_for_data_package as data
+from . import typeset_for_grids_package as grids
+from . import typeset_for_misc_package as misc
+from . import typeset_for_quality_package as quality
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
 
 # Ontology class set.
-from typeset_for_activity_package import Activity
-from typeset_for_activity_package import BoundaryCondition
-from typeset_for_activity_package import Conformance
-from typeset_for_activity_package import DownscalingSimulation
-from typeset_for_activity_package import Ensemble
-from typeset_for_activity_package import EnsembleMember
-from typeset_for_activity_package import Experiment
-from typeset_for_activity_package import ExperimentRelationship
-from typeset_for_activity_package import ExperimentRelationshipTarget
-from typeset_for_activity_package import InitialCondition
-from typeset_for_activity_package import LateralBoundaryCondition
-from typeset_for_activity_package import MeasurementCampaign
-from typeset_for_activity_package import NumericalActivity
-from typeset_for_activity_package import NumericalExperiment
-from typeset_for_activity_package import NumericalRequirement
-from typeset_for_activity_package import NumericalRequirementOption
-from typeset_for_activity_package import OutputRequirement
-from typeset_for_activity_package import PhysicalModification
-from typeset_for_activity_package import Simulation
-from typeset_for_activity_package import SimulationComposite
-from typeset_for_activity_package import SimulationRelationship
-from typeset_for_activity_package import SimulationRelationshipTarget
-from typeset_for_activity_package import SimulationRun
-from typeset_for_activity_package import SpatioTemporalConstraint
-from typeset_for_data_package import DataContent
-from typeset_for_data_package import DataDistribution
-from typeset_for_data_package import DataExtent
-from typeset_for_data_package import DataExtentGeographical
-from typeset_for_data_package import DataExtentTemporal
-from typeset_for_data_package import DataExtentTimeInterval
-from typeset_for_data_package import DataHierarchyLevel
-from typeset_for_data_package import DataObject
-from typeset_for_data_package import DataProperty
-from typeset_for_data_package import DataRestriction
-from typeset_for_data_package import DataStorage
-from typeset_for_data_package import DataStorageDb
-from typeset_for_data_package import DataStorageFile
-from typeset_for_data_package import DataStorageIp
-from typeset_for_data_package import DataTopic
-from typeset_for_grids_package import CoordinateList
-from typeset_for_grids_package import GridExtent
-from typeset_for_grids_package import GridMosaic
-from typeset_for_grids_package import GridProperty
-from typeset_for_grids_package import GridSpec
-from typeset_for_grids_package import GridTile
-from typeset_for_grids_package import GridTileResolutionType
-from typeset_for_grids_package import SimpleGridGeometry
-from typeset_for_grids_package import VerticalCoordinateList
-from typeset_for_misc_package import DocumentSet
-from typeset_for_quality_package import CimQuality
-from typeset_for_quality_package import Evaluation
-from typeset_for_quality_package import Measure
-from typeset_for_quality_package import Report
-from typeset_for_shared_package import Calendar
-from typeset_for_shared_package import Change
-from typeset_for_shared_package import ChangeProperty
-from typeset_for_shared_package import Citation
-from typeset_for_shared_package import ClosedDateRange
-from typeset_for_shared_package import Compiler
-from typeset_for_shared_package import Daily360
-from typeset_for_shared_package import DataSource
-from typeset_for_shared_package import DateRange
-from typeset_for_shared_package import DocMetaInfo
-from typeset_for_shared_package import DocReference
-from typeset_for_shared_package import License
-from typeset_for_shared_package import Machine
-from typeset_for_shared_package import MachineCompilerUnit
-from typeset_for_shared_package import OpenDateRange
-from typeset_for_shared_package import PerpetualPeriod
-from typeset_for_shared_package import Platform
-from typeset_for_shared_package import Property
-from typeset_for_shared_package import RealCalendar
-from typeset_for_shared_package import Relationship
-from typeset_for_shared_package import ResponsibleParty
-from typeset_for_shared_package import Standard
-from typeset_for_shared_package import StandardName
-from typeset_for_software_package import Component
-from typeset_for_software_package import ComponentLanguage
-from typeset_for_software_package import ComponentLanguageProperty
-from typeset_for_software_package import ComponentProperty
-from typeset_for_software_package import Composition
-from typeset_for_software_package import Connection
-from typeset_for_software_package import ConnectionEndpoint
-from typeset_for_software_package import ConnectionProperty
-from typeset_for_software_package import Coupling
-from typeset_for_software_package import CouplingEndpoint
-from typeset_for_software_package import CouplingProperty
-from typeset_for_software_package import Deployment
-from typeset_for_software_package import EntryPoint
-from typeset_for_software_package import ModelComponent
-from typeset_for_software_package import Parallelisation
-from typeset_for_software_package import ProcessorComponent
-from typeset_for_software_package import Rank
-from typeset_for_software_package import SpatialRegridding
-from typeset_for_software_package import SpatialRegriddingProperty
-from typeset_for_software_package import SpatialRegriddingUserMethod
-from typeset_for_software_package import StatisticalModelComponent
-from typeset_for_software_package import TimeLag
-from typeset_for_software_package import TimeTransformation
-from typeset_for_software_package import Timing
+from .typeset_for_activity_package import Activity
+from .typeset_for_activity_package import BoundaryCondition
+from .typeset_for_activity_package import Conformance
+from .typeset_for_activity_package import DownscalingSimulation
+from .typeset_for_activity_package import Ensemble
+from .typeset_for_activity_package import EnsembleMember
+from .typeset_for_activity_package import Experiment
+from .typeset_for_activity_package import ExperimentRelationship
+from .typeset_for_activity_package import ExperimentRelationshipTarget
+from .typeset_for_activity_package import InitialCondition
+from .typeset_for_activity_package import LateralBoundaryCondition
+from .typeset_for_activity_package import MeasurementCampaign
+from .typeset_for_activity_package import NumericalActivity
+from .typeset_for_activity_package import NumericalExperiment
+from .typeset_for_activity_package import NumericalRequirement
+from .typeset_for_activity_package import NumericalRequirementOption
+from .typeset_for_activity_package import OutputRequirement
+from .typeset_for_activity_package import PhysicalModification
+from .typeset_for_activity_package import Simulation
+from .typeset_for_activity_package import SimulationComposite
+from .typeset_for_activity_package import SimulationRelationship
+from .typeset_for_activity_package import SimulationRelationshipTarget
+from .typeset_for_activity_package import SimulationRun
+from .typeset_for_activity_package import SpatioTemporalConstraint
+from .typeset_for_data_package import DataContent
+from .typeset_for_data_package import DataDistribution
+from .typeset_for_data_package import DataExtent
+from .typeset_for_data_package import DataExtentGeographical
+from .typeset_for_data_package import DataExtentTemporal
+from .typeset_for_data_package import DataExtentTimeInterval
+from .typeset_for_data_package import DataHierarchyLevel
+from .typeset_for_data_package import DataObject
+from .typeset_for_data_package import DataProperty
+from .typeset_for_data_package import DataRestriction
+from .typeset_for_data_package import DataStorage
+from .typeset_for_data_package import DataStorageDb
+from .typeset_for_data_package import DataStorageFile
+from .typeset_for_data_package import DataStorageIp
+from .typeset_for_data_package import DataTopic
+from .typeset_for_grids_package import CoordinateList
+from .typeset_for_grids_package import GridExtent
+from .typeset_for_grids_package import GridMosaic
+from .typeset_for_grids_package import GridProperty
+from .typeset_for_grids_package import GridSpec
+from .typeset_for_grids_package import GridTile
+from .typeset_for_grids_package import GridTileResolutionType
+from .typeset_for_grids_package import SimpleGridGeometry
+from .typeset_for_grids_package import VerticalCoordinateList
+from .typeset_for_misc_package import DocumentSet
+from .typeset_for_quality_package import CimQuality
+from .typeset_for_quality_package import Evaluation
+from .typeset_for_quality_package import Measure
+from .typeset_for_quality_package import Report
+from .typeset_for_shared_package import Calendar
+from .typeset_for_shared_package import Change
+from .typeset_for_shared_package import ChangeProperty
+from .typeset_for_shared_package import Citation
+from .typeset_for_shared_package import ClosedDateRange
+from .typeset_for_shared_package import Compiler
+from .typeset_for_shared_package import Daily360
+from .typeset_for_shared_package import DataSource
+from .typeset_for_shared_package import DateRange
+from .typeset_for_shared_package import DocMetaInfo
+from .typeset_for_shared_package import DocReference
+from .typeset_for_shared_package import License
+from .typeset_for_shared_package import Machine
+from .typeset_for_shared_package import MachineCompilerUnit
+from .typeset_for_shared_package import OpenDateRange
+from .typeset_for_shared_package import PerpetualPeriod
+from .typeset_for_shared_package import Platform
+from .typeset_for_shared_package import Property
+from .typeset_for_shared_package import RealCalendar
+from .typeset_for_shared_package import Relationship
+from .typeset_for_shared_package import ResponsibleParty
+from .typeset_for_shared_package import Standard
+from .typeset_for_shared_package import StandardName
+from .typeset_for_software_package import Component
+from .typeset_for_software_package import ComponentLanguage
+from .typeset_for_software_package import ComponentLanguageProperty
+from .typeset_for_software_package import ComponentProperty
+from .typeset_for_software_package import Composition
+from .typeset_for_software_package import Connection
+from .typeset_for_software_package import ConnectionEndpoint
+from .typeset_for_software_package import ConnectionProperty
+from .typeset_for_software_package import Coupling
+from .typeset_for_software_package import CouplingEndpoint
+from .typeset_for_software_package import CouplingProperty
+from .typeset_for_software_package import Deployment
+from .typeset_for_software_package import EntryPoint
+from .typeset_for_software_package import ModelComponent
+from .typeset_for_software_package import Parallelisation
+from .typeset_for_software_package import ProcessorComponent
+from .typeset_for_software_package import Rank
+from .typeset_for_software_package import SpatialRegridding
+from .typeset_for_software_package import SpatialRegriddingProperty
+from .typeset_for_software_package import SpatialRegriddingUserMethod
+from .typeset_for_software_package import StatisticalModelComponent
+from .typeset_for_software_package import TimeLag
+from .typeset_for_software_package import TimeTransformation
+from .typeset_for_software_package import Timing
 
 # Ontology enum set.
-from typeset_for_activity_package import ConformanceType
-from typeset_for_activity_package import DownscalingType
-from typeset_for_activity_package import EnsembleType
-from typeset_for_activity_package import ExperimentRelationshipType
-from typeset_for_activity_package import FrequencyType
-from typeset_for_activity_package import ProjectType
-from typeset_for_activity_package import ResolutionType
-from typeset_for_activity_package import SimulationRelationshipType
-from typeset_for_activity_package import SimulationType
-from typeset_for_data_package import DataHierarchyType
-from typeset_for_data_package import DataStatusType
-from typeset_for_grids_package import ArcTypeEnum
-from typeset_for_grids_package import DiscretizationEnum
-from typeset_for_grids_package import FeatureTypeEnum
-from typeset_for_grids_package import GeometryTypeEnum
-from typeset_for_grids_package import GridNodePositionEnum
-from typeset_for_grids_package import GridTypeEnum
-from typeset_for_grids_package import HorizontalCsEnum
-from typeset_for_grids_package import RefinementTypeEnum
-from typeset_for_grids_package import VerticalCsEnum
-from typeset_for_quality_package import CimFeatureType
-from typeset_for_quality_package import CimResultType
-from typeset_for_quality_package import CimScopeCodeType
-from typeset_for_quality_package import QualityIssueType
-from typeset_for_quality_package import QualitySeverityType
-from typeset_for_quality_package import QualityStatusType
-from typeset_for_shared_package import ChangePropertyType
-from typeset_for_shared_package import CompilerType
-from typeset_for_shared_package import DataPurpose
-from typeset_for_shared_package import InterconnectType
-from typeset_for_shared_package import MachineType
-from typeset_for_shared_package import MachineVendorType
-from typeset_for_shared_package import OperatingSystemType
-from typeset_for_shared_package import ProcessorType
-from typeset_for_shared_package import UnitType
-from typeset_for_software_package import ComponentPropertyIntentType
-from typeset_for_software_package import ConnectionType
-from typeset_for_software_package import CouplingFrameworkType
-from typeset_for_software_package import ModelComponentType
-from typeset_for_software_package import SpatialRegriddingDimensionType
-from typeset_for_software_package import SpatialRegriddingStandardMethodType
-from typeset_for_software_package import StatisticalModelComponentType
-from typeset_for_software_package import TimeMappingType
-from typeset_for_software_package import TimingUnits
+from .typeset_for_activity_package import ConformanceType
+from .typeset_for_activity_package import DownscalingType
+from .typeset_for_activity_package import EnsembleType
+from .typeset_for_activity_package import ExperimentRelationshipType
+from .typeset_for_activity_package import FrequencyType
+from .typeset_for_activity_package import ProjectType
+from .typeset_for_activity_package import ResolutionType
+from .typeset_for_activity_package import SimulationRelationshipType
+from .typeset_for_activity_package import SimulationType
+from .typeset_for_data_package import DataHierarchyType
+from .typeset_for_data_package import DataStatusType
+from .typeset_for_grids_package import ArcTypeEnum
+from .typeset_for_grids_package import DiscretizationEnum
+from .typeset_for_grids_package import FeatureTypeEnum
+from .typeset_for_grids_package import GeometryTypeEnum
+from .typeset_for_grids_package import GridNodePositionEnum
+from .typeset_for_grids_package import GridTypeEnum
+from .typeset_for_grids_package import HorizontalCsEnum
+from .typeset_for_grids_package import RefinementTypeEnum
+from .typeset_for_grids_package import VerticalCsEnum
+from .typeset_for_quality_package import CimFeatureType
+from .typeset_for_quality_package import CimResultType
+from .typeset_for_quality_package import CimScopeCodeType
+from .typeset_for_quality_package import QualityIssueType
+from .typeset_for_quality_package import QualitySeverityType
+from .typeset_for_quality_package import QualityStatusType
+from .typeset_for_shared_package import ChangePropertyType
+from .typeset_for_shared_package import CompilerType
+from .typeset_for_shared_package import DataPurpose
+from .typeset_for_shared_package import InterconnectType
+from .typeset_for_shared_package import MachineType
+from .typeset_for_shared_package import MachineVendorType
+from .typeset_for_shared_package import OperatingSystemType
+from .typeset_for_shared_package import ProcessorType
+from .typeset_for_shared_package import UnitType
+from .typeset_for_software_package import ComponentPropertyIntentType
+from .typeset_for_software_package import ConnectionType
+from .typeset_for_software_package import CouplingFrameworkType
+from .typeset_for_software_package import ModelComponentType
+from .typeset_for_software_package import SpatialRegriddingDimensionType
+from .typeset_for_software_package import SpatialRegriddingStandardMethodType
+from .typeset_for_software_package import StatisticalModelComponentType
+from .typeset_for_software_package import TimeMappingType
+from .typeset_for_software_package import TimingUnits
 
-import type_info
-import typeset
+from . import type_info
+from . import typeset
 try:
-	import decoder
+	from . import decoder
 except ImportError:
 	pass
diff --git a/pyesdoc/ontologies/cim/v1/decoder.py b/pyesdoc/ontologies/cim/v1/decoder.py
index 1eaa932a..6570bc7e 100644
--- a/pyesdoc/ontologies/cim/v1/decoder.py
+++ b/pyesdoc/ontologies/cim/v1/decoder.py
@@ -9,19 +9,19 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_for_activity_package import decode_downscaling_simulation
-from decoder_for_activity_package import decode_ensemble
-from decoder_for_activity_package import decode_numerical_experiment
-from decoder_for_activity_package import decode_simulation_composite
-from decoder_for_activity_package import decode_simulation_run
-from decoder_for_data_package import decode_data_object
-from decoder_for_grids_package import decode_grid_spec
-from decoder_for_misc_package import decode_document_set
-from decoder_for_quality_package import decode_cim_quality
-from decoder_for_shared_package import decode_platform
-from decoder_for_software_package import decode_model_component
-from decoder_for_software_package import decode_processor_component
-from decoder_for_software_package import decode_statistical_model_component
+from .decoder_for_activity_package import decode_downscaling_simulation
+from .decoder_for_activity_package import decode_ensemble
+from .decoder_for_activity_package import decode_numerical_experiment
+from .decoder_for_activity_package import decode_simulation_composite
+from .decoder_for_activity_package import decode_simulation_run
+from .decoder_for_data_package import decode_data_object
+from .decoder_for_grids_package import decode_grid_spec
+from .decoder_for_misc_package import decode_document_set
+from .decoder_for_quality_package import decode_cim_quality
+from .decoder_for_shared_package import decode_platform
+from .decoder_for_software_package import decode_model_component
+from .decoder_for_software_package import decode_processor_component
+from .decoder_for_software_package import decode_statistical_model_component
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_activity_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_activity_package.py
index 7d7cd895..d66b2813 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_activity_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_activity_package.py
@@ -9,11 +9,11 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_data_package import *
-from decoder_for_shared_package import *
-from decoder_for_software_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_data_package import *
+from .decoder_for_shared_package import *
+from .decoder_for_software_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_data_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_data_package.py
index 5a1e2718..cf778c73 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_data_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_data_package.py
@@ -9,9 +9,9 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_shared_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_shared_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_grids_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_grids_package.py
index 57f53954..0e79408c 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_grids_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_grids_package.py
@@ -9,9 +9,9 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_shared_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_shared_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_misc_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_misc_package.py
index 81e5368e..389086f1 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_misc_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_misc_package.py
@@ -9,13 +9,13 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_activity_package import *
-from decoder_for_data_package import *
-from decoder_for_grids_package import *
-from decoder_for_shared_package import *
-from decoder_for_software_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_activity_package import *
+from .decoder_for_data_package import *
+from .decoder_for_grids_package import *
+from .decoder_for_shared_package import *
+from .decoder_for_software_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_quality_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_quality_package.py
index 08eb4766..57a3db87 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_quality_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_quality_package.py
@@ -9,9 +9,9 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_shared_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_shared_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_shared_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_shared_package.py
index a1c8bd61..6dbfb6ca 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_shared_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_shared_package.py
@@ -9,8 +9,8 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-import typeset
+from .decoder_xml_utils import set_attributes
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_for_software_package.py b/pyesdoc/ontologies/cim/v1/decoder_for_software_package.py
index b250f804..87163dc2 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_for_software_package.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_for_software_package.py
@@ -9,12 +9,12 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from decoder_xml_utils import set_attributes
-from decoder_for_activity_package import *
-from decoder_for_data_package import *
-from decoder_for_grids_package import *
-from decoder_for_shared_package import *
-import typeset
+from .decoder_xml_utils import set_attributes
+from .decoder_for_activity_package import *
+from .decoder_for_data_package import *
+from .decoder_for_grids_package import *
+from .decoder_for_shared_package import *
+from . import typeset
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/decoder_xml_utils.py b/pyesdoc/ontologies/cim/v1/decoder_xml_utils.py
index a16b867e..e5b7eae1 100644
--- a/pyesdoc/ontologies/cim/v1/decoder_xml_utils.py
+++ b/pyesdoc/ontologies/cim/v1/decoder_xml_utils.py
@@ -21,26 +21,26 @@
 
 
 # Null uuid for checking whether one has to be generated.
-NULL_UUID = u'00000000-0000-0000-0000-000000000000'
+NULL_UUID = '00000000-0000-0000-0000-000000000000'
 
 
 
-def _get_value(xml, rtype=unicode):
+def _get_value(xml, rtype=str):
     """Returns xml node value."""
     # Get xml value.
-    if isinstance(xml, types.ListType):
+    if isinstance(xml, list):
         xml = None if len(xml) == 0 else xml[0]
     if xml is None:
         return None
 
     # Get unicode.
-    if rtype is unicode:
-        if isinstance(xml, types.StringTypes):
+    if rtype is str:
+        if isinstance(xml, str):
             result = convert.str_to_unicode(xml)
         else:
             result = convert.str_to_unicode(et.tostring(xml))
     else:
-        if isinstance(xml, types.StringTypes):
+        if isinstance(xml, str):
             result = convert.unicode_to_str(xml)
         else:
             result = et.tostring(xml)
@@ -61,14 +61,14 @@ def _convert_to_bool(xml, nsmap=None):
     """Converts an etree element xml representation into a boolean type."""
     value = _get_value(xml)
 
-    return True if value is not None and value.lower() in [u'true'] else bool()
+    return True if value is not None and value.lower() in ['true'] else bool()
 
 
 def _convert_to_integer(xml, nsmap=None):
     """Converts an etree element xml representation into an integer type."""
     value = _get_value(xml)
 
-    return int(value) if value is not None and value.upper() != u'NONE' else int()
+    return int(value) if value is not None and value.upper() != 'NONE' else int()
 
 
 def _convert_to_float(xml, nsmap=None):
@@ -95,7 +95,7 @@ def _convert_to_datetime(xml, nsmap=None):
     if value is None:
         return None
     if len(value) == 4:
-        return arrow.get(value, u"YYYY").datetime
+        return arrow.get(value, "YYYY").datetime
     else:
         return arrow.get(value).datetime
 
@@ -162,7 +162,7 @@ def set_attributes(target, xml, nsmap, decodings):
             msg += "\tAttribute is simple ? = {0};\n".format(is_simple_type)
             msg += "\tAttribute xpath = {0};\n".format(xpath)
             msg += "\tError = {0};\n".format(e)
-            print msg
+            print(msg)
 
     # Support operation chaining.
     return target
@@ -256,11 +256,11 @@ def decode_xml(decoder, xml, nsmap, is_iterable):
         return decoder(xml, nsmap)
 
     # Instance if passed etree element collection and caller wants first only.
-    if isinstance(xml, types.ListType) and is_iterable == False:
+    if isinstance(xml, list) and is_iterable == False:
         return None if len(xml) == 0 else decode_xml(decoder, xml[0], nsmap, None)
 
     # Collection if passed etree element collection.
-    if isinstance(xml, types.ListType):
+    if isinstance(xml, list):
         collection = []
         for elem in xml:
             instance = decode_xml(decoder, elem, nsmap, None)
@@ -304,7 +304,7 @@ def load_xml(xml, return_nsmap=False, default_ns='cim'):
             nsmap = xml.nsmap
         except Exception as e:
             # ... unicode
-            if isinstance(xml, unicode):
+            if isinstance(xml, str):
                 xml = convert.unicode_to_str(xml)
 
             # ... strings
diff --git a/pyesdoc/ontologies/cim/v1/type_info.py b/pyesdoc/ontologies/cim/v1/type_info.py
index d21db0c5..0b9360fa 100644
--- a/pyesdoc/ontologies/cim/v1/type_info.py
+++ b/pyesdoc/ontologies/cim/v1/type_info.py
@@ -15,13 +15,13 @@
 import uuid
 
 
-import typeset_for_activity_package as activity
-import typeset_for_data_package as data
-import typeset_for_grids_package as grids
-import typeset_for_misc_package as misc
-import typeset_for_quality_package as quality
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
+from . import typeset_for_activity_package as activity
+from . import typeset_for_data_package as data
+from . import typeset_for_grids_package as grids
+from . import typeset_for_misc_package as misc
+from . import typeset_for_quality_package as quality
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
 
 
 
@@ -1919,10 +1919,10 @@
 
     activity.Activity: (
 
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('rationales', 'cardinality', "0.N"),
@@ -1932,12 +1932,12 @@
     ),
     activity.BoundaryCondition: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('source', 'type', shared.DataSource),
-        ('requirement_type', 'type', unicode),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -1951,11 +1951,11 @@
     activity.Conformance: (
 
         ('requirements', 'type', activity.NumericalRequirement),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('sources', 'type', shared.DataSource),
-        ('frequency', 'type', unicode),
+        ('frequency', 'type', str),
         ('is_conformant', 'type', bool),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
 
         ('requirements', 'cardinality', "1.N"),
         ('description', 'cardinality', "0.1"),
@@ -1968,20 +1968,20 @@
     activity.DownscalingSimulation: (
 
         ('inputs', 'type', software.Coupling),
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('outputs', 'type', data.DataObject),
         ('responsible_parties', 'type', shared.ResponsibleParty),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('downscaled_from', 'type', shared.DataSource),
-        ('downscaling_id', 'type', unicode),
+        ('downscaling_id', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
-        ('downscaling_type', 'type', unicode),
+        ('downscaling_type', 'type', str),
         ('calendar', 'type', shared.Calendar),
         ('supports', 'type', activity.Experiment),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('inputs', 'cardinality', "0.N"),
         ('funding_sources', 'cardinality', "0.N"),
@@ -2002,18 +2002,18 @@
     ),
     activity.Ensemble: (
 
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('outputs', 'type', shared.DataSource),
         ('responsible_parties', 'type', shared.ResponsibleParty),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
-        ('types', 'type', unicode),
+        ('types', 'type', str),
         ('members', 'type', activity.EnsembleMember),
         ('supports', 'type', activity.Experiment),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('rationales', 'cardinality', "0.N"),
@@ -2032,16 +2032,16 @@
     activity.EnsembleMember: (
 
         ('ensemble_ids', 'type', shared.StandardName),
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('simulation', 'type', activity.Simulation),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('supports', 'type', activity.Experiment),
         ('ensemble', 'type', activity.Ensemble),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('ensemble_ids', 'cardinality', "0.N"),
         ('funding_sources', 'cardinality', "0.N"),
@@ -2058,14 +2058,14 @@
     ),
     activity.Experiment: (
 
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('generates', 'type', unicode),
-        ('supports', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('generates', 'type', str),
+        ('supports', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('measurement_campaigns', 'type', activity.MeasurementCampaign),
         ('requires', 'type', activity.NumericalActivity),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('rationales', 'cardinality', "0.N"),
@@ -2079,8 +2079,8 @@
     ),
     activity.ExperimentRelationship: (
 
-        ('type', 'type', unicode),
-        ('description', 'type', unicode),
+        ('type', 'type', str),
+        ('description', 'type', str),
         ('target', 'type', activity.ExperimentRelationshipTarget),
 
         ('type', 'cardinality', "1.1"),
@@ -2097,12 +2097,12 @@
     ),
     activity.InitialCondition: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('source', 'type', shared.DataSource),
-        ('requirement_type', 'type', unicode),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -2115,12 +2115,12 @@
     ),
     activity.LateralBoundaryCondition: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('source', 'type', shared.DataSource),
-        ('requirement_type', 'type', unicode),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -2134,9 +2134,9 @@
     activity.MeasurementCampaign: (
 
         ('duration', 'type', int),
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('projects', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('projects', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
 
         ('duration', 'cardinality', "1.1"),
@@ -2148,14 +2148,14 @@
     ),
     activity.NumericalActivity: (
 
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('supports', 'type', activity.Experiment),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('rationales', 'cardinality', "0.N"),
@@ -2169,20 +2169,20 @@
     ),
     activity.NumericalExperiment: (
 
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('generates', 'type', unicode),
-        ('short_name', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('generates', 'type', str),
+        ('short_name', 'type', str),
+        ('long_name', 'type', str),
         ('requires', 'type', activity.NumericalActivity),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('measurement_campaigns', 'type', activity.MeasurementCampaign),
         ('meta', 'type', shared.DocMetaInfo),
-        ('experiment_id', 'type', unicode),
+        ('experiment_id', 'type', str),
         ('requirements', 'type', activity.NumericalRequirement),
-        ('supports', 'type', unicode),
-        ('projects', 'type', unicode),
-        ('description', 'type', unicode),
+        ('supports', 'type', str),
+        ('projects', 'type', str),
+        ('description', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('rationales', 'cardinality', "0.N"),
@@ -2202,12 +2202,12 @@
     ),
     activity.NumericalRequirement: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('source', 'type', shared.DataSource),
-        ('requirement_type', 'type', unicode),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -2220,10 +2220,10 @@
     activity.NumericalRequirementOption: (
 
         ('sub_options', 'type', activity.NumericalRequirementOption),
-        ('relationship', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
-        ('id', 'type', unicode),
+        ('relationship', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
+        ('id', 'type', str),
 
         ('sub_options', 'cardinality', "0.N"),
         ('relationship', 'cardinality', "0.1"),
@@ -2234,12 +2234,12 @@
     ),
     activity.OutputRequirement: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('source', 'type', shared.DataSource),
-        ('requirement_type', 'type', unicode),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -2253,11 +2253,11 @@
     activity.PhysicalModification: (
 
         ('requirements', 'type', activity.NumericalRequirement),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('sources', 'type', shared.DataSource),
-        ('frequency', 'type', unicode),
+        ('frequency', 'type', str),
         ('is_conformant', 'type', bool),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
 
         ('requirements', 'cardinality', "1.N"),
         ('description', 'cardinality', "0.1"),
@@ -2270,24 +2270,24 @@
     activity.Simulation: (
 
         ('inputs', 'type', software.Coupling),
-        ('simulation_id', 'type', unicode),
-        ('funding_sources', 'type', unicode),
-        ('rationales', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('simulation_id', 'type', str),
+        ('funding_sources', 'type', str),
+        ('rationales', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('control_simulation', 'type', activity.Simulation),
         ('spinup_simulation', 'type', activity.Simulation),
         ('spinup_date_range', 'type', shared.ClosedDateRange),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('restarts', 'type', data.DataObject),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('outputs', 'type', data.DataObject),
-        ('authors', 'type', unicode),
+        ('authors', 'type', str),
         ('calendar', 'type', shared.Calendar),
         ('supports', 'type', activity.Experiment),
         ('conformances', 'type', activity.Conformance),
-        ('projects', 'type', unicode),
+        ('projects', 'type', str),
 
         ('inputs', 'cardinality', "0.N"),
         ('simulation_id', 'cardinality', "0.1"),
@@ -2312,28 +2312,28 @@
     ),
     activity.SimulationComposite: (
 
-        ('funding_sources', 'type', unicode),
+        ('funding_sources', 'type', str),
         ('child', 'type', activity.Simulation),
         ('rank', 'type', int),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('calendar', 'type', shared.Calendar),
         ('conformances', 'type', activity.Conformance),
-        ('rationales', 'type', unicode),
+        ('rationales', 'type', str),
         ('control_simulation', 'type', activity.Simulation),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('restarts', 'type', data.DataObject),
         ('supports', 'type', activity.Experiment),
         ('inputs', 'type', software.Coupling),
-        ('simulation_id', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('simulation_id', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('outputs', 'type', data.DataObject),
         ('spinup_date_range', 'type', shared.ClosedDateRange),
         ('date_range', 'type', shared.DateRange),
-        ('authors', 'type', unicode),
-        ('projects', 'type', unicode),
+        ('authors', 'type', str),
+        ('projects', 'type', str),
         ('spinup_simulation', 'type', activity.Simulation),
 
         ('funding_sources', 'cardinality', "0.N"),
@@ -2363,8 +2363,8 @@
     ),
     activity.SimulationRelationship: (
 
-        ('type', 'type', unicode),
-        ('description', 'type', unicode),
+        ('type', 'type', str),
+        ('description', 'type', str),
         ('target', 'type', activity.SimulationRelationshipTarget),
 
         ('type', 'cardinality', "1.1"),
@@ -2374,7 +2374,7 @@
     ),
     activity.SimulationRelationshipTarget: (
 
-        ('target', 'type', unicode),
+        ('target', 'type', str),
         ('simulation', 'type', shared.DocReference),
 
         ('target', 'cardinality', "0.1"),
@@ -2383,26 +2383,26 @@
     ),
     activity.SimulationRun: (
 
-        ('funding_sources', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('calendar', 'type', shared.Calendar),
         ('conformances', 'type', activity.Conformance),
-        ('rationales', 'type', unicode),
+        ('rationales', 'type', str),
         ('control_simulation', 'type', activity.Simulation),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('restarts', 'type', data.DataObject),
         ('supports', 'type', activity.Experiment),
         ('inputs', 'type', software.Coupling),
-        ('simulation_id', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('simulation_id', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('outputs', 'type', data.DataObject),
         ('spinup_date_range', 'type', shared.ClosedDateRange),
         ('date_range', 'type', shared.DateRange),
-        ('authors', 'type', unicode),
-        ('projects', 'type', unicode),
+        ('authors', 'type', str),
+        ('projects', 'type', str),
         ('spinup_simulation', 'type', activity.Simulation),
         ('model', 'type', software.ModelComponent),
 
@@ -2432,14 +2432,14 @@
     ),
     activity.SpatioTemporalConstraint: (
 
-        ('description', 'type', unicode),
-        ('id', 'type', unicode),
+        ('description', 'type', str),
+        ('id', 'type', str),
         ('date_range', 'type', shared.DateRange),
         ('source', 'type', shared.DataSource),
-        ('spatial_resolution', 'type', unicode),
-        ('requirement_type', 'type', unicode),
+        ('spatial_resolution', 'type', str),
+        ('requirement_type', 'type', str),
         ('options', 'type', activity.NumericalRequirementOption),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('id', 'cardinality', "0.1"),
@@ -2455,9 +2455,9 @@
     data.DataContent: (
 
         ('topic', 'type', data.DataTopic),
-        ('frequency', 'type', unicode),
-        ('purpose', 'type', unicode),
-        ('aggregation', 'type', unicode),
+        ('frequency', 'type', str),
+        ('purpose', 'type', str),
+        ('aggregation', 'type', str),
 
         ('topic', 'cardinality', "1.1"),
         ('frequency', 'cardinality', "0.1"),
@@ -2467,10 +2467,10 @@
     ),
     data.DataDistribution: (
 
-        ('access', 'type', unicode),
-        ('fee', 'type', unicode),
+        ('access', 'type', str),
+        ('fee', 'type', str),
         ('responsible_party', 'type', shared.ResponsibleParty),
-        ('format', 'type', unicode),
+        ('format', 'type', str),
 
         ('access', 'cardinality', "0.1"),
         ('fee', 'cardinality', "0.1"),
@@ -2514,7 +2514,7 @@
     data.DataExtentTimeInterval: (
 
         ('radix', 'type', int),
-        ('unit', 'type', unicode),
+        ('unit', 'type', str),
         ('factor', 'type', int),
 
         ('radix', 'cardinality', "0.1"),
@@ -2525,8 +2525,8 @@
     data.DataHierarchyLevel: (
 
         ('is_open', 'type', bool),
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('is_open', 'cardinality', "0.1"),
         ('name', 'cardinality', "0.1"),
@@ -2536,23 +2536,23 @@
     data.DataObject: (
 
         ('hierarchy_level', 'type', data.DataHierarchyLevel),
-        ('source_simulation', 'type', unicode),
-        ('description', 'type', unicode),
-        ('keyword', 'type', unicode),
+        ('source_simulation', 'type', str),
+        ('description', 'type', str),
+        ('keyword', 'type', str),
         ('restriction', 'type', data.DataRestriction),
-        ('acronym', 'type', unicode),
+        ('acronym', 'type', str),
         ('storage', 'type', data.DataStorage),
         ('child_object', 'type', data.DataObject),
         ('content', 'type', data.DataContent),
-        ('geometry_model', 'type', unicode),
+        ('geometry_model', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('purpose', 'type', unicode),
+        ('purpose', 'type', str),
         ('extent', 'type', data.DataExtent),
         ('distribution', 'type', data.DataDistribution),
         ('parent_object', 'type', data.DataObject),
         ('properties', 'type', data.DataProperty),
-        ('data_status', 'type', unicode),
+        ('data_status', 'type', str),
 
         ('hierarchy_level', 'cardinality', "0.1"),
         ('source_simulation', 'cardinality', "0.1"),
@@ -2576,9 +2576,9 @@
     ),
     data.DataProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
-        ('description', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
+        ('description', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -2587,9 +2587,9 @@
     ),
     data.DataRestriction: (
 
-        ('restriction', 'type', unicode),
+        ('restriction', 'type', str),
         ('license', 'type', shared.License),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
 
         ('restriction', 'cardinality', "0.1"),
         ('license', 'cardinality', "0.1"),
@@ -2599,9 +2599,9 @@
     data.DataStorage: (
 
         ('size', 'type', int),
-        ('location', 'type', unicode),
+        ('location', 'type', str),
         ('modification_date', 'type', datetime.datetime),
-        ('format', 'type', unicode),
+        ('format', 'type', str),
 
         ('size', 'cardinality', "0.1"),
         ('location', 'cardinality', "0.1"),
@@ -2611,13 +2611,13 @@
     ),
     data.DataStorageDb: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('modification_date', 'type', datetime.datetime),
-        ('format', 'type', unicode),
-        ('location', 'type', unicode),
-        ('owner', 'type', unicode),
-        ('table', 'type', unicode),
-        ('access_string', 'type', unicode),
+        ('format', 'type', str),
+        ('location', 'type', str),
+        ('owner', 'type', str),
+        ('table', 'type', str),
+        ('access_string', 'type', str),
         ('size', 'type', int),
 
         ('name', 'cardinality', "0.1"),
@@ -2633,11 +2633,11 @@
     data.DataStorageFile: (
 
         ('modification_date', 'type', datetime.datetime),
-        ('format', 'type', unicode),
-        ('file_name', 'type', unicode),
-        ('location', 'type', unicode),
-        ('path', 'type', unicode),
-        ('file_system', 'type', unicode),
+        ('format', 'type', str),
+        ('file_name', 'type', str),
+        ('location', 'type', str),
+        ('path', 'type', str),
+        ('file_system', 'type', str),
         ('size', 'type', int),
 
         ('modification_date', 'cardinality', "0.1"),
@@ -2651,13 +2651,13 @@
     ),
     data.DataStorageIp: (
 
-        ('protocol', 'type', unicode),
+        ('protocol', 'type', str),
         ('modification_date', 'type', datetime.datetime),
-        ('format', 'type', unicode),
-        ('file_name', 'type', unicode),
-        ('host', 'type', unicode),
-        ('location', 'type', unicode),
-        ('path', 'type', unicode),
+        ('format', 'type', str),
+        ('file_name', 'type', str),
+        ('host', 'type', str),
+        ('location', 'type', str),
+        ('path', 'type', str),
         ('size', 'type', int),
 
         ('protocol', 'cardinality', "0.1"),
@@ -2672,9 +2672,9 @@
     ),
     data.DataTopic: (
 
-        ('description', 'type', unicode),
-        ('unit', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('unit', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('unit', 'cardinality', "0.1"),
@@ -2685,7 +2685,7 @@
 
         ('has_constant_offset', 'type', bool),
         ('length', 'type', int),
-        ('uom', 'type', unicode),
+        ('uom', 'type', str),
 
         ('has_constant_offset', 'cardinality', "0.1"),
         ('length', 'cardinality', "0.1"),
@@ -2694,11 +2694,11 @@
     ),
     grids.GridExtent: (
 
-        ('units', 'type', unicode),
-        ('maximum_latitude', 'type', unicode),
-        ('minimum_latitude', 'type', unicode),
-        ('maximum_longitude', 'type', unicode),
-        ('minimum_longitude', 'type', unicode),
+        ('units', 'type', str),
+        ('maximum_latitude', 'type', str),
+        ('minimum_latitude', 'type', str),
+        ('maximum_longitude', 'type', str),
+        ('minimum_longitude', 'type', str),
 
         ('units', 'cardinality', "0.1"),
         ('maximum_latitude', 'cardinality', "1.1"),
@@ -2710,19 +2710,19 @@
     grids.GridMosaic: (
 
         ('is_leaf', 'type', bool),
-        ('mnemonic', 'type', unicode),
+        ('mnemonic', 'type', str),
         ('tiles', 'type', grids.GridTile),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('mosaic_count', 'type', int),
-        ('type', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('type', 'type', str),
+        ('long_name', 'type', str),
         ('tile_count', 'type', int),
         ('citations', 'type', shared.Citation),
         ('extent', 'type', grids.GridExtent),
         ('has_congruent_tiles', 'type', bool),
         ('mosaics', 'type', grids.GridMosaic),
-        ('id', 'type', unicode),
+        ('id', 'type', str),
 
         ('is_leaf', 'cardinality', "1.1"),
         ('mnemonic', 'cardinality', "0.1"),
@@ -2742,8 +2742,8 @@
     ),
     grids.GridProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -2762,32 +2762,32 @@
     ),
     grids.GridTile: (
 
-        ('mnemonic', 'type', unicode),
-        ('refinement_scheme', 'type', unicode),
+        ('mnemonic', 'type', str),
+        ('refinement_scheme', 'type', str),
         ('is_regular', 'type', bool),
-        ('vertical_crs', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('horizontal_crs', 'type', unicode),
-        ('cell_array', 'type', unicode),
-        ('id', 'type', unicode),
-        ('cell_ref_array', 'type', unicode),
-        ('area', 'type', unicode),
+        ('vertical_crs', 'type', str),
+        ('long_name', 'type', str),
+        ('horizontal_crs', 'type', str),
+        ('cell_array', 'type', str),
+        ('id', 'type', str),
+        ('cell_ref_array', 'type', str),
+        ('area', 'type', str),
         ('simple_grid_geom', 'type', grids.SimpleGridGeometry),
-        ('grid_north_pole', 'type', unicode),
+        ('grid_north_pole', 'type', str),
         ('nx', 'type', int),
         ('ny', 'type', int),
         ('nz', 'type', int),
         ('vertical_resolution', 'type', grids.GridTileResolutionType),
-        ('discretization_type', 'type', unicode),
-        ('coordinate_pole', 'type', unicode),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('discretization_type', 'type', str),
+        ('coordinate_pole', 'type', str),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('extent', 'type', grids.GridExtent),
         ('zcoords', 'type', grids.VerticalCoordinateList),
         ('is_conformal', 'type', bool),
         ('is_uniform', 'type', bool),
-        ('coord_file', 'type', unicode),
-        ('geometry_type', 'type', unicode),
+        ('coord_file', 'type', str),
+        ('geometry_type', 'type', str),
         ('horizontal_resolution', 'type', grids.GridTileResolutionType),
         ('is_terrain_following', 'type', bool),
 
@@ -2823,7 +2823,7 @@
     ),
     grids.GridTileResolutionType: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('properties', 'type', grids.GridProperty),
 
         ('description', 'cardinality', "0.1"),
@@ -2832,7 +2832,7 @@
     ),
     grids.SimpleGridGeometry: (
 
-        ('dim_order', 'type', unicode),
+        ('dim_order', 'type', str),
         ('num_dims', 'type', int),
         ('xcoords', 'type', grids.CoordinateList),
         ('is_mesh', 'type', bool),
@@ -2850,11 +2850,11 @@
     grids.VerticalCoordinateList: (
 
         ('has_constant_offset', 'type', bool),
-        ('form', 'type', unicode),
+        ('form', 'type', str),
         ('length', 'type', int),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
         ('properties', 'type', grids.GridProperty),
-        ('uom', 'type', unicode),
+        ('uom', 'type', str),
 
         ('has_constant_offset', 'cardinality', "0.1"),
         ('form', 'cardinality', "0.1"),
@@ -2896,15 +2896,15 @@
     ),
     quality.Evaluation: (
 
-        ('description', 'type', unicode),
-        ('specification_hyperlink', 'type', unicode),
-        ('explanation', 'type', unicode),
-        ('title', 'type', unicode),
+        ('description', 'type', str),
+        ('specification_hyperlink', 'type', str),
+        ('explanation', 'type', str),
+        ('title', 'type', str),
         ('did_pass', 'type', bool),
-        ('type_hyperlink', 'type', unicode),
+        ('type_hyperlink', 'type', str),
         ('date', 'type', datetime.datetime),
-        ('type', 'type', unicode),
-        ('specification', 'type', unicode),
+        ('type', 'type', str),
+        ('specification', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('specification_hyperlink', 'cardinality', "0.1"),
@@ -2919,9 +2919,9 @@
     ),
     quality.Measure: (
 
-        ('identification', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('identification', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('identification', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -2945,7 +2945,7 @@
 
         ('range', 'type', shared.DateRange),
         ('length', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('range', 'cardinality', "0.1"),
         ('length', 'cardinality', "0.1"),
@@ -2954,12 +2954,12 @@
     ),
     shared.Change: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('author', 'type', shared.ResponsibleParty),
         ('details', 'type', shared.ChangeProperty),
         ('date', 'type', datetime.datetime),
-        ('type', 'type', unicode),
-        ('name', 'type', unicode),
+        ('type', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('author', 'cardinality', "0.1"),
@@ -2971,10 +2971,10 @@
     ),
     shared.ChangeProperty: (
 
-        ('id', 'type', unicode),
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
-        ('description', 'type', unicode),
+        ('id', 'type', str),
+        ('name', 'type', str),
+        ('value', 'type', str),
+        ('description', 'type', str),
 
         ('id', 'cardinality', "0.1"),
         ('name', 'cardinality', "0.1"),
@@ -2984,15 +2984,15 @@
     ),
     shared.Citation: (
 
-        ('alternative_title', 'type', unicode),
-        ('date_type', 'type', unicode),
-        ('collective_title', 'type', unicode),
-        ('role', 'type', unicode),
-        ('location', 'type', unicode),
+        ('alternative_title', 'type', str),
+        ('date_type', 'type', str),
+        ('collective_title', 'type', str),
+        ('role', 'type', str),
+        ('location', 'type', str),
         ('date', 'type', datetime.datetime),
-        ('title', 'type', unicode),
-        ('type', 'type', unicode),
-        ('organisation', 'type', unicode),
+        ('title', 'type', str),
+        ('type', 'type', str),
+        ('organisation', 'type', str),
 
         ('alternative_title', 'cardinality', "0.1"),
         ('date_type', 'cardinality', "0.1"),
@@ -3007,7 +3007,7 @@
     ),
     shared.ClosedDateRange: (
 
-        ('duration', 'type', unicode),
+        ('duration', 'type', str),
         ('start', 'type', datetime.datetime),
         ('end', 'type', datetime.datetime),
 
@@ -3018,12 +3018,12 @@
     ),
     shared.Compiler: (
 
-        ('name', 'type', unicode),
-        ('language', 'type', unicode),
-        ('version', 'type', unicode),
-        ('environment_variables', 'type', unicode),
-        ('type', 'type', unicode),
-        ('options', 'type', unicode),
+        ('name', 'type', str),
+        ('language', 'type', str),
+        ('version', 'type', str),
+        ('environment_variables', 'type', str),
+        ('type', 'type', str),
+        ('options', 'type', str),
 
         ('name', 'cardinality', "1.1"),
         ('language', 'cardinality', "0.1"),
@@ -3037,7 +3037,7 @@
 
         ('range', 'type', shared.DateRange),
         ('length', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('range', 'cardinality', "0.1"),
         ('length', 'cardinality', "0.1"),
@@ -3046,37 +3046,37 @@
     ),
     shared.DataSource: (
 
-        ('purpose', 'type', unicode),
+        ('purpose', 'type', str),
 
         ('purpose', 'cardinality', "0.1"),
 
     ),
     shared.DateRange: (
 
-        ('duration', 'type', unicode),
+        ('duration', 'type', str),
 
         ('duration', 'cardinality', "0.1"),
 
     ),
     shared.DocMetaInfo: (
 
-        ('drs_keys', 'type', unicode),
-        ('drs_path', 'type', unicode),
+        ('drs_keys', 'type', str),
+        ('drs_path', 'type', str),
         ('create_date', 'type', datetime.datetime),
         ('author', 'type', shared.ResponsibleParty),
-        ('institute', 'type', unicode),
-        ('source_key', 'type', unicode),
-        ('project', 'type', unicode),
-        ('sort_key', 'type', unicode),
+        ('institute', 'type', str),
+        ('source_key', 'type', str),
+        ('project', 'type', str),
+        ('sort_key', 'type', str),
         ('version', 'type', int),
-        ('source', 'type', unicode),
-        ('type_sort_key', 'type', unicode),
+        ('source', 'type', str),
+        ('type_sort_key', 'type', str),
         ('update_date', 'type', datetime.datetime),
-        ('external_ids', 'type', unicode),
-        ('sub_projects', 'type', unicode),
-        ('type', 'type', unicode),
-        ('id', 'type', unicode),
-        ('type_display_name', 'type', unicode),
+        ('external_ids', 'type', str),
+        ('sub_projects', 'type', str),
+        ('type', 'type', str),
+        ('id', 'type', str),
+        ('type_display_name', 'type', str),
 
         ('drs_keys', 'cardinality', "0.N"),
         ('drs_path', 'cardinality', "0.1"),
@@ -3099,21 +3099,21 @@
     ),
     shared.DocReference: (
 
-        ('constraint_vocabulary', 'type', unicode),
-        ('protocol', 'type', unicode),
-        ('description', 'type', unicode),
-        ('relationship', 'type', unicode),
-        ('institute', 'type', unicode),
-        ('external_id', 'type', unicode),
-        ('url', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('constraint_vocabulary', 'type', str),
+        ('protocol', 'type', str),
+        ('description', 'type', str),
+        ('relationship', 'type', str),
+        ('institute', 'type', str),
+        ('external_id', 'type', str),
+        ('url', 'type', str),
+        ('canonical_name', 'type', str),
         ('version', 'type', int),
-        ('context', 'type', unicode),
-        ('type', 'type', unicode),
+        ('context', 'type', str),
+        ('type', 'type', str),
         ('changes', 'type', shared.Change),
-        ('id', 'type', unicode),
-        ('linkage', 'type', unicode),
-        ('name', 'type', unicode),
+        ('id', 'type', str),
+        ('linkage', 'type', str),
+        ('name', 'type', str),
 
         ('constraint_vocabulary', 'cardinality', "0.1"),
         ('protocol', 'cardinality', "0.1"),
@@ -3134,10 +3134,10 @@
     ),
     shared.License: (
 
-        ('contact', 'type', unicode),
-        ('description', 'type', unicode),
+        ('contact', 'type', str),
+        ('description', 'type', str),
         ('is_unrestricted', 'type', bool),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('contact', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -3147,18 +3147,18 @@
     ),
     shared.Machine: (
 
-        ('operating_system', 'type', unicode),
+        ('operating_system', 'type', str),
         ('maximum_processors', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('cores_per_processor', 'type', int),
-        ('processor_type', 'type', unicode),
-        ('system', 'type', unicode),
-        ('vendor', 'type', unicode),
-        ('libraries', 'type', unicode),
-        ('location', 'type', unicode),
-        ('interconnect', 'type', unicode),
-        ('type', 'type', unicode),
-        ('name', 'type', unicode),
+        ('processor_type', 'type', str),
+        ('system', 'type', str),
+        ('vendor', 'type', str),
+        ('libraries', 'type', str),
+        ('location', 'type', str),
+        ('interconnect', 'type', str),
+        ('type', 'type', str),
+        ('name', 'type', str),
 
         ('operating_system', 'cardinality', "0.1"),
         ('maximum_processors', 'cardinality', "0.1"),
@@ -3185,7 +3185,7 @@
     ),
     shared.OpenDateRange: (
 
-        ('duration', 'type', unicode),
+        ('duration', 'type', str),
         ('start', 'type', datetime.datetime),
         ('end', 'type', datetime.datetime),
 
@@ -3198,7 +3198,7 @@
 
         ('range', 'type', shared.DateRange),
         ('length', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('range', 'cardinality', "0.1"),
         ('length', 'cardinality', "0.1"),
@@ -3207,10 +3207,10 @@
     ),
     shared.Platform: (
 
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
         ('contacts', 'type', shared.ResponsibleParty),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('units', 'type', shared.MachineCompilerUnit),
 
@@ -3224,8 +3224,8 @@
     ),
     shared.Property: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -3235,7 +3235,7 @@
 
         ('range', 'type', shared.DateRange),
         ('length', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('range', 'cardinality', "0.1"),
         ('length', 'cardinality', "0.1"),
@@ -3244,20 +3244,20 @@
     ),
     shared.Relationship: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('description', 'cardinality', "0.1"),
 
     ),
     shared.ResponsibleParty: (
 
-        ('url', 'type', unicode),
-        ('email', 'type', unicode),
-        ('abbreviation', 'type', unicode),
-        ('individual_name', 'type', unicode),
-        ('role', 'type', unicode),
-        ('address', 'type', unicode),
-        ('organisation_name', 'type', unicode),
+        ('url', 'type', str),
+        ('email', 'type', str),
+        ('abbreviation', 'type', str),
+        ('individual_name', 'type', str),
+        ('role', 'type', str),
+        ('address', 'type', str),
+        ('organisation_name', 'type', str),
 
         ('url', 'cardinality', "0.1"),
         ('email', 'cardinality', "0.1"),
@@ -3270,9 +3270,9 @@
     ),
     shared.Standard: (
 
-        ('version', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('version', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('version', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -3282,7 +3282,7 @@
     shared.StandardName: (
 
         ('is_open', 'type', bool),
-        ('value', 'type', unicode),
+        ('value', 'type', str),
         ('standards', 'type', shared.Standard),
 
         ('is_open', 'cardinality', "1.1"),
@@ -3292,29 +3292,29 @@
     ),
     software.Component: (
 
-        ('funding_sources', 'type', unicode),
-        ('version', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('version', 'type', str),
+        ('long_name', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
-        ('short_name', 'type', unicode),
-        ('previous_version', 'type', unicode),
+        ('short_name', 'type', str),
+        ('previous_version', 'type', str),
         ('is_embedded', 'type', bool),
         ('deployments', 'type', software.Deployment),
         ('citations', 'type', shared.Citation),
         ('composition', 'type', software.Composition),
-        ('coupling_framework', 'type', unicode),
-        ('description', 'type', unicode),
+        ('coupling_framework', 'type', str),
+        ('description', 'type', str),
         ('parent', 'type', software.Component),
         ('sub_components', 'type', software.Component),
         ('dependencies', 'type', software.EntryPoint),
         ('grid', 'type', grids.GridSpec),
-        ('purpose', 'type', unicode),
-        ('online_resource', 'type', unicode),
+        ('purpose', 'type', str),
+        ('online_resource', 'type', str),
         ('properties', 'type', software.ComponentProperty),
         ('language', 'type', software.ComponentLanguage),
         ('license', 'type', shared.License),
         ('release_date', 'type', datetime.datetime),
-        ('code_access', 'type', unicode),
+        ('code_access', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('version', 'cardinality', "0.1"),
@@ -3343,7 +3343,7 @@
     ),
     software.ComponentLanguage: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('properties', 'type', software.ComponentLanguageProperty),
 
         ('name', 'cardinality', "1.1"),
@@ -3352,8 +3352,8 @@
     ),
     software.ComponentLanguageProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -3361,18 +3361,18 @@
     ),
     software.ComponentProperty: (
 
-        ('standard_names', 'type', unicode),
+        ('standard_names', 'type', str),
         ('sub_properties', 'type', software.ComponentProperty),
-        ('description', 'type', unicode),
-        ('short_name', 'type', unicode),
-        ('values', 'type', unicode),
+        ('description', 'type', str),
+        ('short_name', 'type', str),
+        ('values', 'type', str),
         ('is_represented', 'type', bool),
-        ('long_name', 'type', unicode),
+        ('long_name', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('intent', 'type', unicode),
-        ('purpose', 'type', unicode),
-        ('units', 'type', unicode),
-        ('grid', 'type', unicode),
+        ('intent', 'type', str),
+        ('purpose', 'type', str),
+        ('units', 'type', str),
+        ('grid', 'type', str),
 
         ('standard_names', 'cardinality', "0.N"),
         ('sub_properties', 'cardinality', "0.N"),
@@ -3390,8 +3390,8 @@
     ),
     software.Composition: (
 
-        ('couplings', 'type', unicode),
-        ('description', 'type', unicode),
+        ('couplings', 'type', str),
+        ('description', 'type', str),
 
         ('couplings', 'cardinality', "0.N"),
         ('description', 'cardinality', "0.1"),
@@ -3406,10 +3406,10 @@
         ('sources', 'type', software.ConnectionEndpoint),
         ('time_profile', 'type', software.Timing),
         ('priming', 'type', shared.DataSource),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
         ('properties', 'type', software.ConnectionProperty),
-        ('time_lag', 'type', unicode),
-        ('description', 'type', unicode),
+        ('time_lag', 'type', str),
+        ('description', 'type', str),
 
         ('transformers', 'cardinality', "0.N"),
         ('target', 'cardinality', "0.1"),
@@ -3426,7 +3426,7 @@
     ),
     software.ConnectionEndpoint: (
 
-        ('instance_id', 'type', unicode),
+        ('instance_id', 'type', str),
         ('data_source', 'type', shared.DataSource),
         ('properties', 'type', software.ConnectionProperty),
 
@@ -3437,8 +3437,8 @@
     ),
     software.ConnectionProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -3447,13 +3447,13 @@
     software.Coupling: (
 
         ('transformers', 'type', software.ProcessorComponent),
-        ('description', 'type', unicode),
-        ('type', 'type', unicode),
+        ('description', 'type', str),
+        ('type', 'type', str),
         ('time_transformation', 'type', software.TimeTransformation),
         ('connections', 'type', software.Connection),
         ('sources', 'type', software.CouplingEndpoint),
         ('spatial_regriddings', 'type', software.SpatialRegridding),
-        ('purpose', 'type', unicode),
+        ('purpose', 'type', str),
         ('target', 'type', software.CouplingEndpoint),
         ('time_profile', 'type', software.Timing),
         ('is_fully_specified', 'type', bool),
@@ -3479,7 +3479,7 @@
     ),
     software.CouplingEndpoint: (
 
-        ('instance_id', 'type', unicode),
+        ('instance_id', 'type', str),
         ('data_source', 'type', shared.DataSource),
         ('properties', 'type', software.CouplingProperty),
 
@@ -3490,8 +3490,8 @@
     ),
     software.CouplingProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -3499,12 +3499,12 @@
     ),
     software.Deployment: (
 
-        ('executable_arguments', 'type', unicode),
-        ('description', 'type', unicode),
+        ('executable_arguments', 'type', str),
+        ('description', 'type', str),
         ('parallelisation', 'type', software.Parallelisation),
         ('deployment_date', 'type', datetime.datetime),
         ('platform', 'type', shared.Platform),
-        ('executable_name', 'type', unicode),
+        ('executable_name', 'type', str),
 
         ('executable_arguments', 'cardinality', "0.N"),
         ('description', 'cardinality', "0.1"),
@@ -3516,40 +3516,40 @@
     ),
     software.EntryPoint: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('name', 'cardinality', "0.1"),
 
     ),
     software.ModelComponent: (
 
-        ('funding_sources', 'type', unicode),
-        ('version', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('version', 'type', str),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('is_embedded', 'type', bool),
-        ('short_name', 'type', unicode),
-        ('previous_version', 'type', unicode),
+        ('short_name', 'type', str),
+        ('previous_version', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('citations', 'type', shared.Citation),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
         ('composition', 'type', software.Composition),
-        ('coupling_framework', 'type', unicode),
-        ('description', 'type', unicode),
+        ('coupling_framework', 'type', str),
+        ('description', 'type', str),
         ('parent', 'type', software.Component),
         ('sub_components', 'type', software.Component),
         ('dependencies', 'type', software.EntryPoint),
         ('grid', 'type', grids.GridSpec),
-        ('purpose', 'type', unicode),
-        ('online_resource', 'type', unicode),
+        ('purpose', 'type', str),
+        ('online_resource', 'type', str),
         ('timing', 'type', software.Timing),
         ('properties', 'type', software.ComponentProperty),
-        ('types', 'type', unicode),
+        ('types', 'type', str),
         ('language', 'type', software.ComponentLanguage),
         ('license', 'type', shared.License),
         ('release_date', 'type', datetime.datetime),
-        ('code_access', 'type', unicode),
+        ('code_access', 'type', str),
         ('activity', 'type', activity.Activity),
 
         ('funding_sources', 'cardinality', "0.N"),
@@ -3593,30 +3593,30 @@
     ),
     software.ProcessorComponent: (
 
-        ('funding_sources', 'type', unicode),
-        ('version', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('version', 'type', str),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('is_embedded', 'type', bool),
-        ('short_name', 'type', unicode),
-        ('previous_version', 'type', unicode),
+        ('short_name', 'type', str),
+        ('previous_version', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('citations', 'type', shared.Citation),
         ('composition', 'type', software.Composition),
-        ('coupling_framework', 'type', unicode),
-        ('description', 'type', unicode),
+        ('coupling_framework', 'type', str),
+        ('description', 'type', str),
         ('parent', 'type', software.Component),
         ('sub_components', 'type', software.Component),
         ('dependencies', 'type', software.EntryPoint),
         ('grid', 'type', grids.GridSpec),
-        ('purpose', 'type', unicode),
-        ('online_resource', 'type', unicode),
+        ('purpose', 'type', str),
+        ('online_resource', 'type', str),
         ('properties', 'type', software.ComponentProperty),
         ('language', 'type', software.ComponentLanguage),
         ('license', 'type', shared.License),
         ('release_date', 'type', datetime.datetime),
-        ('code_access', 'type', unicode),
+        ('code_access', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('version', 'cardinality', "0.1"),
@@ -3660,8 +3660,8 @@
     software.SpatialRegridding: (
 
         ('user_method', 'type', software.SpatialRegriddingUserMethod),
-        ('dimension', 'type', unicode),
-        ('standard_method', 'type', unicode),
+        ('dimension', 'type', str),
+        ('standard_method', 'type', str),
         ('properties', 'type', software.SpatialRegriddingProperty),
 
         ('user_method', 'cardinality', "0.1"),
@@ -3672,8 +3672,8 @@
     ),
     software.SpatialRegriddingProperty: (
 
-        ('name', 'type', unicode),
-        ('value', 'type', unicode),
+        ('name', 'type', str),
+        ('value', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('value', 'cardinality', "0.1"),
@@ -3681,7 +3681,7 @@
     ),
     software.SpatialRegriddingUserMethod: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('file', 'type', data.DataObject),
 
         ('name', 'cardinality', "1.1"),
@@ -3690,33 +3690,33 @@
     ),
     software.StatisticalModelComponent: (
 
-        ('funding_sources', 'type', unicode),
-        ('version', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('funding_sources', 'type', str),
+        ('version', 'type', str),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('is_embedded', 'type', bool),
-        ('short_name', 'type', unicode),
-        ('previous_version', 'type', unicode),
+        ('short_name', 'type', str),
+        ('previous_version', 'type', str),
         ('responsible_parties', 'type', shared.ResponsibleParty),
         ('deployments', 'type', software.Deployment),
         ('citations', 'type', shared.Citation),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
         ('composition', 'type', software.Composition),
-        ('coupling_framework', 'type', unicode),
-        ('description', 'type', unicode),
+        ('coupling_framework', 'type', str),
+        ('description', 'type', str),
         ('parent', 'type', software.Component),
         ('sub_components', 'type', software.Component),
         ('dependencies', 'type', software.EntryPoint),
         ('grid', 'type', grids.GridSpec),
-        ('purpose', 'type', unicode),
-        ('online_resource', 'type', unicode),
+        ('purpose', 'type', str),
+        ('online_resource', 'type', str),
         ('timing', 'type', software.Timing),
         ('properties', 'type', software.ComponentProperty),
-        ('types', 'type', unicode),
+        ('types', 'type', str),
         ('language', 'type', software.ComponentLanguage),
         ('license', 'type', shared.License),
         ('release_date', 'type', datetime.datetime),
-        ('code_access', 'type', unicode),
+        ('code_access', 'type', str),
 
         ('funding_sources', 'cardinality', "0.N"),
         ('version', 'cardinality', "0.1"),
@@ -3749,7 +3749,7 @@
     ),
     software.TimeLag: (
 
-        ('units', 'type', unicode),
+        ('units', 'type', str),
         ('value', 'type', int),
 
         ('units', 'cardinality', "0.1"),
@@ -3758,8 +3758,8 @@
     ),
     software.TimeTransformation: (
 
-        ('description', 'type', unicode),
-        ('mapping_type', 'type', unicode),
+        ('description', 'type', str),
+        ('mapping_type', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('mapping_type', 'cardinality', "1.1"),
@@ -3767,7 +3767,7 @@
     ),
     software.Timing: (
 
-        ('units', 'type', unicode),
+        ('units', 'type', str),
         ('is_variable_rate', 'type', bool),
         ('rate', 'type', int),
         ('end', 'type', datetime.datetime),
@@ -3787,21 +3787,21 @@
 
     (activity.Activity, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Activity, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Activity, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -3816,21 +3816,21 @@
 
     (activity.BoundaryCondition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.BoundaryCondition, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.BoundaryCondition, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -3844,7 +3844,7 @@
     ),
     (activity.BoundaryCondition, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -3860,14 +3860,14 @@
 
     (activity.Conformance, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Conformance, 'frequency'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3895,7 +3895,7 @@
     ),
     (activity.Conformance, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3917,14 +3917,14 @@
     ),
     (activity.DownscalingSimulation, 'downscaling_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.DownscalingSimulation, 'downscaling_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3952,21 +3952,21 @@
     ),
     (activity.DownscalingSimulation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.DownscalingSimulation, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.DownscalingSimulation, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -3980,21 +3980,21 @@
     ),
     (activity.DownscalingSimulation, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.DownscalingSimulation, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.DownscalingSimulation, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4030,28 +4030,28 @@
     ),
     (activity.Ensemble, 'types'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
     ),
     (activity.Ensemble, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Ensemble, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Ensemble, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4065,21 +4065,21 @@
     ),
     (activity.Ensemble, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Ensemble, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Ensemble, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4115,21 +4115,21 @@
     ),
     (activity.EnsembleMember, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.EnsembleMember, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.EnsembleMember, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4143,21 +4143,21 @@
     ),
     (activity.EnsembleMember, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.EnsembleMember, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.EnsembleMember, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4172,7 +4172,7 @@
 
     (activity.Experiment, 'generates'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4193,28 +4193,28 @@
     ),
     (activity.Experiment, 'supports'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Experiment, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Experiment, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Experiment, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4236,14 +4236,14 @@
     ),
     (activity.ExperimentRelationship, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.ExperimentRelationship, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4259,21 +4259,21 @@
 
     (activity.InitialCondition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.InitialCondition, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.InitialCondition, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4287,7 +4287,7 @@
     ),
     (activity.InitialCondition, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4303,21 +4303,21 @@
 
     (activity.LateralBoundaryCondition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.LateralBoundaryCondition, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.LateralBoundaryCondition, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4331,7 +4331,7 @@
     ),
     (activity.LateralBoundaryCondition, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4354,21 +4354,21 @@
     ),
     (activity.MeasurementCampaign, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.MeasurementCampaign, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.MeasurementCampaign, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4383,21 +4383,21 @@
 
     (activity.NumericalActivity, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalActivity, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalActivity, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4411,21 +4411,21 @@
     ),
     (activity.NumericalActivity, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.NumericalActivity, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.NumericalActivity, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4440,21 +4440,21 @@
 
     (activity.NumericalExperiment, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalExperiment, 'experiment_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalExperiment, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4475,14 +4475,14 @@
     ),
     (activity.NumericalExperiment, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.NumericalExperiment, 'generates'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4503,28 +4503,28 @@
     ),
     (activity.NumericalExperiment, 'supports'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.NumericalExperiment, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.NumericalExperiment, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.NumericalExperiment, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4539,21 +4539,21 @@
 
     (activity.NumericalRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalRequirement, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4567,7 +4567,7 @@
     ),
     (activity.NumericalRequirement, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4582,28 +4582,28 @@
 
     (activity.NumericalRequirementOption, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalRequirementOption, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.NumericalRequirementOption, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.NumericalRequirementOption, 'relationship'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4618,21 +4618,21 @@
 
     (activity.OutputRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.OutputRequirement, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.OutputRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4646,7 +4646,7 @@
     ),
     (activity.OutputRequirement, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4662,14 +4662,14 @@
 
     (activity.PhysicalModification, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.PhysicalModification, 'frequency'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4697,7 +4697,7 @@
     ),
     (activity.PhysicalModification, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4705,7 +4705,7 @@
 
     (activity.Simulation, 'authors'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4761,7 +4761,7 @@
     ),
     (activity.Simulation, 'simulation_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4782,21 +4782,21 @@
     ),
     (activity.Simulation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Simulation, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Simulation, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4810,21 +4810,21 @@
     ),
     (activity.Simulation, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Simulation, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Simulation, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4867,7 +4867,7 @@
     ),
     (activity.SimulationComposite, 'authors'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4923,7 +4923,7 @@
     ),
     (activity.SimulationComposite, 'simulation_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4944,21 +4944,21 @@
     ),
     (activity.SimulationComposite, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SimulationComposite, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SimulationComposite, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4972,21 +4972,21 @@
     ),
     (activity.SimulationComposite, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.SimulationComposite, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.SimulationComposite, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -5008,14 +5008,14 @@
     ),
     (activity.SimulationRelationship, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.SimulationRelationship, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5030,7 +5030,7 @@
     ),
     (activity.SimulationRelationshipTarget, 'target'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5059,7 +5059,7 @@
     ),
     (activity.SimulationRun, 'authors'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5115,7 +5115,7 @@
     ),
     (activity.SimulationRun, 'simulation_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5136,21 +5136,21 @@
     ),
     (activity.SimulationRun, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SimulationRun, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SimulationRun, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5164,21 +5164,21 @@
     ),
     (activity.SimulationRun, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.SimulationRun, 'projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.SimulationRun, 'rationales'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -5200,28 +5200,28 @@
     ),
     (activity.SpatioTemporalConstraint, 'spatial_resolution'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SpatioTemporalConstraint, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SpatioTemporalConstraint, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.SpatioTemporalConstraint, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5235,7 +5235,7 @@
     ),
     (activity.SpatioTemporalConstraint, 'requirement_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5251,14 +5251,14 @@
 
     (data.DataContent, 'aggregation'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataContent, 'frequency'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5272,7 +5272,7 @@
     ),
     (data.DataContent, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5280,21 +5280,21 @@
 
     (data.DataDistribution, 'access'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataDistribution, 'fee'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataDistribution, 'format'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5389,7 +5389,7 @@
     ),
     (data.DataExtentTimeInterval, 'unit'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5404,14 +5404,14 @@
     ),
     (data.DataHierarchyLevel, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataHierarchyLevel, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5419,7 +5419,7 @@
 
     (data.DataObject, 'acronym'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5447,14 +5447,14 @@
     ),
     (data.DataObject, 'data_status'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataObject, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5475,7 +5475,7 @@
     ),
     (data.DataObject, 'geometry_model'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5489,7 +5489,7 @@
     ),
     (data.DataObject, 'keyword'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5517,7 +5517,7 @@
     ),
     (data.DataObject, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5531,7 +5531,7 @@
     ),
     (data.DataObject, 'source_simulation'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5545,7 +5545,7 @@
     ),
     (data.DataObject, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5553,21 +5553,21 @@
 
     (data.DataProperty, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5582,14 +5582,14 @@
     ),
     (data.DataRestriction, 'restriction'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataRestriction, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5597,14 +5597,14 @@
 
     (data.DataStorage, 'format'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorage, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5626,42 +5626,42 @@
 
     (data.DataStorageDb, 'access_string'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageDb, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageDb, 'owner'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageDb, 'table'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageDb, 'format'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageDb, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5683,35 +5683,35 @@
 
     (data.DataStorageFile, 'file_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageFile, 'file_system'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageFile, 'path'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageFile, 'format'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageFile, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5733,42 +5733,42 @@
 
     (data.DataStorageIp, 'file_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageIp, 'host'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageIp, 'path'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageIp, 'protocol'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageIp, 'format'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataStorageIp, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5790,21 +5790,21 @@
 
     (data.DataTopic, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataTopic, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.DataTopic, 'unit'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5826,7 +5826,7 @@
     ),
     (grids.CoordinateList, 'uom'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5834,35 +5834,35 @@
 
     (grids.GridExtent, 'maximum_latitude'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (grids.GridExtent, 'maximum_longitude'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (grids.GridExtent, 'minimum_latitude'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (grids.GridExtent, 'minimum_longitude'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (grids.GridExtent, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5877,7 +5877,7 @@
     ),
     (grids.GridMosaic, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5898,7 +5898,7 @@
     ),
     (grids.GridMosaic, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5912,14 +5912,14 @@
     ),
     (grids.GridMosaic, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridMosaic, 'mnemonic'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5940,7 +5940,7 @@
     ),
     (grids.GridMosaic, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5961,7 +5961,7 @@
     ),
     (grids.GridMosaic, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5969,14 +5969,14 @@
 
     (grids.GridProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6006,49 +6006,49 @@
 
     (grids.GridTile, 'area'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'cell_array'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'cell_ref_array'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'coord_file'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'coordinate_pole'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'discretization_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6062,21 +6062,21 @@
     ),
     (grids.GridTile, 'geometry_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'grid_north_pole'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'horizontal_crs'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6090,7 +6090,7 @@
     ),
     (grids.GridTile, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6125,14 +6125,14 @@
     ),
     (grids.GridTile, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'mnemonic'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6160,14 +6160,14 @@
     ),
     (grids.GridTile, 'refinement_scheme'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (grids.GridTile, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6181,7 +6181,7 @@
     ),
     (grids.GridTile, 'vertical_crs'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6203,7 +6203,7 @@
 
     (grids.GridTileResolutionType, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6218,7 +6218,7 @@
 
     (grids.SimpleGridGeometry, 'dim_order'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6261,7 +6261,7 @@
 
     (grids.VerticalCoordinateList, 'form'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6275,7 +6275,7 @@
     ),
     (grids.VerticalCoordinateList, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6296,7 +6296,7 @@
     ),
     (grids.VerticalCoordinateList, 'uom'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6383,7 +6383,7 @@
     ),
     (quality.Evaluation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6397,42 +6397,42 @@
     ),
     (quality.Evaluation, 'explanation'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Evaluation, 'specification'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Evaluation, 'specification_hyperlink'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Evaluation, 'title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Evaluation, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Evaluation, 'type_hyperlink'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6440,21 +6440,21 @@
 
     (quality.Measure, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Measure, 'identification'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (quality.Measure, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6491,7 +6491,7 @@
 
     (shared.Calendar, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6527,7 +6527,7 @@
     ),
     (shared.Change, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6541,14 +6541,14 @@
     ),
     (shared.Change, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Change, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6556,28 +6556,28 @@
 
     (shared.ChangeProperty, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ChangeProperty, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ChangeProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ChangeProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6585,14 +6585,14 @@
 
     (shared.Citation, 'alternative_title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'collective_title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6606,42 +6606,42 @@
     ),
     (shared.Citation, 'date_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'organisation'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'role'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6663,7 +6663,7 @@
     ),
     (shared.ClosedDateRange, 'duration'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6671,42 +6671,42 @@
 
     (shared.Compiler, 'environment_variables'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Compiler, 'language'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Compiler, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.Compiler, 'options'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Compiler, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Compiler, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -6714,7 +6714,7 @@
 
     (shared.Daily360, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6736,7 +6736,7 @@
 
     (shared.DataSource, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6744,7 +6744,7 @@
 
     (shared.DateRange, 'duration'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6766,91 +6766,91 @@
     ),
     (shared.DocMetaInfo, 'drs_keys'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'drs_path'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'external_ids'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'institute'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'project'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'sort_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'source'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'source_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'sub_projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'type_display_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'type_sort_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6872,7 +6872,7 @@
 
     (shared.DocReference, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6886,84 +6886,84 @@
     ),
     (shared.DocReference, 'constraint_vocabulary'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'context'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'external_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'institute'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'linkage'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocReference, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocReference, 'protocol'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'relationship'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocReference, 'url'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6978,14 +6978,14 @@
 
     (shared.License, 'contact'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.License, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6999,7 +6999,7 @@
     ),
     (shared.License, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7014,28 +7014,28 @@
     ),
     (shared.Machine, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'interconnect'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'libraries'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.Machine, 'location'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7049,42 +7049,42 @@
     ),
     (shared.Machine, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.Machine, 'operating_system'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'processor_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'system'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Machine, 'vendor'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7121,7 +7121,7 @@
     ),
     (shared.OpenDateRange, 'duration'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7129,7 +7129,7 @@
 
     (shared.PerpetualPeriod, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7158,14 +7158,14 @@
     ),
     (shared.Platform, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Platform, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7179,7 +7179,7 @@
     ),
     (shared.Platform, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7194,14 +7194,14 @@
 
     (shared.Property, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Property, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7209,7 +7209,7 @@
 
     (shared.RealCalendar, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7231,7 +7231,7 @@
 
     (shared.Relationship, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7239,49 +7239,49 @@
 
     (shared.ResponsibleParty, 'abbreviation'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'address'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'email'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'individual_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'organisation_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'role'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ResponsibleParty, 'url'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7289,21 +7289,21 @@
 
     (shared.Standard, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Standard, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.Standard, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7325,7 +7325,7 @@
     ),
     (shared.StandardName, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7340,7 +7340,7 @@
     ),
     (software.Component, 'code_access'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7354,7 +7354,7 @@
     ),
     (software.Component, 'coupling_framework'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7375,14 +7375,14 @@
     ),
     (software.Component, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.Component, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -7417,14 +7417,14 @@
     ),
     (software.Component, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.Component, 'online_resource'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7438,7 +7438,7 @@
     ),
     (software.Component, 'previous_version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7466,7 +7466,7 @@
     ),
     (software.Component, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7480,14 +7480,14 @@
     ),
     (software.Component, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.Component, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7495,7 +7495,7 @@
 
     (software.ComponentLanguage, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7510,14 +7510,14 @@
 
     (software.ComponentLanguageProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentLanguageProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7532,21 +7532,21 @@
     ),
     (software.ComponentProperty, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentProperty, 'grid'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentProperty, 'intent'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7560,21 +7560,21 @@
     ),
     (software.ComponentProperty, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentProperty, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (software.ComponentProperty, 'standard_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -7588,21 +7588,21 @@
     ),
     (software.ComponentProperty, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentProperty, 'values'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (software.ComponentProperty, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7610,14 +7610,14 @@
 
     (software.Composition, 'couplings'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (software.Composition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7625,7 +7625,7 @@
 
     (software.Connection, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7667,7 +7667,7 @@
     ),
     (software.Connection, 'time_lag'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7695,7 +7695,7 @@
     ),
     (software.Connection, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7710,7 +7710,7 @@
     ),
     (software.ConnectionEndpoint, 'instance_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7725,14 +7725,14 @@
 
     (software.ConnectionProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ConnectionProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7747,7 +7747,7 @@
     ),
     (software.Coupling, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7775,7 +7775,7 @@
     ),
     (software.Coupling, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7831,7 +7831,7 @@
     ),
     (software.Coupling, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7846,7 +7846,7 @@
     ),
     (software.CouplingEndpoint, 'instance_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7861,14 +7861,14 @@
 
     (software.CouplingProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.CouplingProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7883,21 +7883,21 @@
     ),
     (software.Deployment, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.Deployment, 'executable_arguments'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (software.Deployment, 'executable_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7919,7 +7919,7 @@
 
     (software.EntryPoint, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7948,14 +7948,14 @@
     ),
     (software.ModelComponent, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ModelComponent, 'types'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -7969,7 +7969,7 @@
     ),
     (software.ModelComponent, 'code_access'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7983,7 +7983,7 @@
     ),
     (software.ModelComponent, 'coupling_framework'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8004,14 +8004,14 @@
     ),
     (software.ModelComponent, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ModelComponent, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -8046,14 +8046,14 @@
     ),
     (software.ModelComponent, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ModelComponent, 'online_resource'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8067,7 +8067,7 @@
     ),
     (software.ModelComponent, 'previous_version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8095,7 +8095,7 @@
     ),
     (software.ModelComponent, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8109,14 +8109,14 @@
     ),
     (software.ModelComponent, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ModelComponent, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8153,7 +8153,7 @@
     ),
     (software.ProcessorComponent, 'code_access'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8167,7 +8167,7 @@
     ),
     (software.ProcessorComponent, 'coupling_framework'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8188,14 +8188,14 @@
     ),
     (software.ProcessorComponent, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ProcessorComponent, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -8230,14 +8230,14 @@
     ),
     (software.ProcessorComponent, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ProcessorComponent, 'online_resource'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8251,7 +8251,7 @@
     ),
     (software.ProcessorComponent, 'previous_version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8279,7 +8279,7 @@
     ),
     (software.ProcessorComponent, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8293,14 +8293,14 @@
     ),
     (software.ProcessorComponent, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ProcessorComponent, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8337,7 +8337,7 @@
 
     (software.SpatialRegridding, 'dimension'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8351,7 +8351,7 @@
     ),
     (software.SpatialRegridding, 'standard_method'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8366,14 +8366,14 @@
 
     (software.SpatialRegriddingProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.SpatialRegriddingProperty, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8388,7 +8388,7 @@
     ),
     (software.SpatialRegriddingUserMethod, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8410,14 +8410,14 @@
     ),
     (software.StatisticalModelComponent, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.StatisticalModelComponent, 'types'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -8431,7 +8431,7 @@
     ),
     (software.StatisticalModelComponent, 'code_access'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8445,7 +8445,7 @@
     ),
     (software.StatisticalModelComponent, 'coupling_framework'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8466,14 +8466,14 @@
     ),
     (software.StatisticalModelComponent, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.StatisticalModelComponent, 'funding_sources'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -8508,14 +8508,14 @@
     ),
     (software.StatisticalModelComponent, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.StatisticalModelComponent, 'online_resource'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8529,7 +8529,7 @@
     ),
     (software.StatisticalModelComponent, 'previous_version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8557,7 +8557,7 @@
     ),
     (software.StatisticalModelComponent, 'short_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8571,14 +8571,14 @@
     ),
     (software.StatisticalModelComponent, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.StatisticalModelComponent, 'purpose'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8586,7 +8586,7 @@
 
     (software.TimeLag, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8601,14 +8601,14 @@
 
     (software.TimeTransformation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.TimeTransformation, 'mapping_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8644,7 +8644,7 @@
     ),
     (software.Timing, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
diff --git a/pyesdoc/ontologies/cim/v1/typeset.py b/pyesdoc/ontologies/cim/v1/typeset.py
index 75d6b95d..97b53925 100644
--- a/pyesdoc/ontologies/cim/v1/typeset.py
+++ b/pyesdoc/ontologies/cim/v1/typeset.py
@@ -10,22 +10,22 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from typeset_for_activity_package import *
-from typeset_for_data_package import *
-from typeset_for_grids_package import *
-from typeset_for_misc_package import *
-from typeset_for_quality_package import *
-from typeset_for_shared_package import *
-from typeset_for_software_package import *
+from .typeset_for_activity_package import *
+from .typeset_for_data_package import *
+from .typeset_for_grids_package import *
+from .typeset_for_misc_package import *
+from .typeset_for_quality_package import *
+from .typeset_for_shared_package import *
+from .typeset_for_software_package import *
 
 
-import typeset_for_activity_package as activity
-import typeset_for_data_package as data
-import typeset_for_grids_package as grids
-import typeset_for_misc_package as misc
-import typeset_for_quality_package as quality
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
+from . import typeset_for_activity_package as activity
+from . import typeset_for_data_package as data
+from . import typeset_for_grids_package as grids
+from . import typeset_for_misc_package as misc
+from . import typeset_for_quality_package as quality
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_activity_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_activity_package.py
index d7776ae7..dcb7ca5f 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_activity_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_activity_package.py
@@ -13,17 +13,16 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
-class Activity(object):
+class Activity(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     An abstract class used as the parent of MeasurementCampaigns, Projects, Experiments, and NumericalActivities.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -88,13 +87,12 @@ def __init__(self):
         self.numerical_experiment = None                  # activity.NumericalExperiment (0.1)
 
 
-class NumericalRequirement(object):
+class NumericalRequirement(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     A description of the requirements of particular experiments.  Numerical Requirements can be initial conditions, boundary conditions, or physical modificiations.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -173,16 +171,15 @@ def __init__(self):
         """
         super(BoundaryCondition, self).__init__()
 
-        self.requirement_type = unicode("boundaryCondition")
+        self.requirement_type = str("boundaryCondition")
 
 
-class Experiment(Activity):
+class Experiment(Activity, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     An experiment might be an activity which is both observational and numerical in focus, for example, a measurement campaign and numerical experiments for an alpine experiment.  It is a place for the scientific description of the reason why an experiment was made.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -208,7 +205,7 @@ def __init__(self):
         """
         super(InitialCondition, self).__init__()
 
-        self.requirement_type = unicode("initialCondition")
+        self.requirement_type = str("initialCondition")
 
 
 class LateralBoundaryCondition(NumericalRequirement):
@@ -223,7 +220,7 @@ def __init__(self):
         """
         super(LateralBoundaryCondition, self).__init__()
 
-        self.requirement_type = unicode("lateralBoundaryCondition")
+        self.requirement_type = str("lateralBoundaryCondition")
 
 
 class MeasurementCampaign(Activity):
@@ -241,13 +238,12 @@ def __init__(self):
         self.duration = None                              # int (1.1)
 
 
-class NumericalActivity(Activity):
+class NumericalActivity(Activity, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     Creates and returns instance of numerical_activity class.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -293,7 +289,7 @@ def __init__(self):
         """
         super(OutputRequirement, self).__init__()
 
-        self.requirement_type = unicode("outputRequirement")
+        self.requirement_type = str("outputRequirement")
 
 
 class PhysicalModification(Conformance):
@@ -310,13 +306,12 @@ def __init__(self):
 
 
 
-class Simulation(NumericalActivity):
+class Simulation(NumericalActivity, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     A simulation is the implementation of a numerical experiment.  A simulation can be made up of "child" simulations aggregated together to form a simulation composite.  The parent simulation can be made up of whole or partial child simulations, the simulation attributes need to be able to capture this.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -386,16 +381,15 @@ def __init__(self):
 
         self.date_range = None                            # shared.DateRange (0.1)
         self.spatial_resolution = None                    # activity.ResolutionType (0.1)
-        self.requirement_type = unicode("spatioTemporalConstraint")
+        self.requirement_type = str("spatioTemporalConstraint")
 
 
-class DownscalingSimulation(NumericalActivity):
+class DownscalingSimulation(NumericalActivity, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     A simulation is the implementation of a numerical experiment.  A simulation can be made up of "child" simulations aggregated together to form a simulation composite.  The parent simulation can be made up of whole or partial child simulations, the simulation attributes need to be able to capture this.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_data_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_data_package.py
index a05aefac..7c9fcdc8 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_data_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_data_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
@@ -201,13 +201,12 @@ def __init__(self):
         self.scope = None                                 # unicode (0.1)
 
 
-class DataStorage(object):
+class DataStorage(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     Describes the method that the DataObject is stored. An abstract class with specific child classes for each supported method.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_grids_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_grids_package.py
index 9dee7e8e..cd6ae90d 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_grids_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_grids_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_misc_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_misc_package.py
index edd846fd..3600bb5c 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_misc_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_misc_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_quality_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_quality_package.py
index a9a71831..3e3aea75 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_quality_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_quality_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_shared_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_shared_package.py
index 931cc122..8c613116 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_shared_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_shared_package.py
@@ -16,13 +16,12 @@
 
 
 
-class Calendar(object):
+class Calendar(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     Describes a method of calculating a span of dates.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -98,13 +97,12 @@ def __init__(self):
         self.version = None                               # unicode (1.1)
 
 
-class DataSource(object):
+class DataSource(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     A DataSource can be realised by either a DataObject (file), a DataContent (variable), a Component (model), or a ComponentProperty (variable); all of those can supply data.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -115,13 +113,12 @@ def __init__(self):
         self.purpose = None                               # shared.DataPurpose (0.1)
 
 
-class DateRange(object):
+class DateRange(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     Creates and returns instance of date_range class.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
@@ -289,13 +286,12 @@ def __init__(self):
         self.value = None                                 # unicode (0.1)
 
 
-class Relationship(object):
+class Relationship(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v1 type system.
 
     A record of a relationship between one document and another. This class is abstract; specific document types must specialise this class for their relationshipTypes to be included in a document's genealogy.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/cim/v1/typeset_for_software_package.py b/pyesdoc/ontologies/cim/v1/typeset_for_software_package.py
index 99f9e3d5..874b4be3 100644
--- a/pyesdoc/ontologies/cim/v1/typeset_for_software_package.py
+++ b/pyesdoc/ontologies/cim/v1/typeset_for_software_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/__init__.py b/pyesdoc/ontologies/cim/v2/__init__.py
index a2384167..d2b775c0 100644
--- a/pyesdoc/ontologies/cim/v2/__init__.py
+++ b/pyesdoc/ontologies/cim/v2/__init__.py
@@ -20,130 +20,130 @@
 FULL_NAME = '{}.{}'.format(NAME, VERSION)
 
 # Ontology packag set.
-import typeset_for_activity_package as activity
-import typeset_for_cmip_package as cmip
-import typeset_for_data_package as data
-import typeset_for_designing_package as designing
-import typeset_for_drs_package as drs
-import typeset_for_iso_package as iso
-import typeset_for_platform_package as platform
-import typeset_for_science_package as science
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
-import typeset_for_time_package as time
+from . import typeset_for_activity_package as activity
+from . import typeset_for_cmip_package as cmip
+from . import typeset_for_data_package as data
+from . import typeset_for_designing_package as designing
+from . import typeset_for_drs_package as drs
+from . import typeset_for_iso_package as iso
+from . import typeset_for_platform_package as platform
+from . import typeset_for_science_package as science
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
+from . import typeset_for_time_package as time
 
 # Ontology class set.
-from typeset_for_activity_package import Activity
-from typeset_for_activity_package import AxisMember
-from typeset_for_activity_package import ChildSimulation
-from typeset_for_activity_package import Conformance
-from typeset_for_activity_package import Ensemble
-from typeset_for_activity_package import EnsembleAxis
-from typeset_for_activity_package import Simulation
-from typeset_for_activity_package import UberEnsemble
-from typeset_for_cmip_package import CmipDataset
-from typeset_for_cmip_package import CmipSimulation
-from typeset_for_data_package import Dataset
-from typeset_for_data_package import VariableCollection
-from typeset_for_designing_package import DomainRequirements
-from typeset_for_designing_package import EnsembleRequirement
-from typeset_for_designing_package import ForcingConstraint
-from typeset_for_designing_package import InitialisationRequirement
-from typeset_for_designing_package import MultiEnsemble
-from typeset_for_designing_package import NumericalExperiment
-from typeset_for_designing_package import NumericalRequirement
-from typeset_for_designing_package import Objective
-from typeset_for_designing_package import OutputRequirement
-from typeset_for_designing_package import Project
-from typeset_for_designing_package import SimulationPlan
-from typeset_for_designing_package import StartDateEnsemble
-from typeset_for_designing_package import TemporalConstraint
-from typeset_for_drs_package import DrsAtomicDataset
-from typeset_for_drs_package import DrsEnsembleIdentifier
-from typeset_for_drs_package import DrsExperiment
-from typeset_for_drs_package import DrsGeographicalIndicator
-from typeset_for_drs_package import DrsPublicationDataset
-from typeset_for_drs_package import DrsSimulationIdentifier
-from typeset_for_drs_package import DrsTemporalIdentifier
-from typeset_for_iso_package import Algorithm
-from typeset_for_iso_package import Lineage
-from typeset_for_iso_package import ProcessStep
-from typeset_for_iso_package import ProcessStepReport
-from typeset_for_iso_package import Processing
-from typeset_for_iso_package import QualityEvaluationOutput
-from typeset_for_iso_package import QualityEvaluationResult
-from typeset_for_iso_package import QualityIssue
-from typeset_for_iso_package import QualityReport
-from typeset_for_platform_package import ComputePool
-from typeset_for_platform_package import Interconnect
-from typeset_for_platform_package import Machine
-from typeset_for_platform_package import Nic
-from typeset_for_platform_package import Partition
-from typeset_for_platform_package import Performance
-from typeset_for_platform_package import PerformanceDetail
-from typeset_for_platform_package import ProjectCost
-from typeset_for_platform_package import StoragePool
-from typeset_for_science_package import Model
-from typeset_for_science_package import Realm
-from typeset_for_science_package import RealmCoupling
-from typeset_for_science_package import Topic
-from typeset_for_science_package import TopicProperty
-from typeset_for_science_package import TopicPropertySet
-from typeset_for_shared_package import Citation
-from typeset_for_shared_package import DocMetaInfo
-from typeset_for_shared_package import DocReference
-from typeset_for_shared_package import ExtraAttribute
-from typeset_for_shared_package import FormalAssociation
-from typeset_for_shared_package import Numeric
-from typeset_for_shared_package import OnlineResource
-from typeset_for_shared_package import Party
-from typeset_for_shared_package import QualityReview
-from typeset_for_shared_package import Responsibility
-from typeset_for_shared_package import TextBlob
-from typeset_for_software_package import ComponentBase
-from typeset_for_software_package import Composition
-from typeset_for_software_package import DevelopmentPath
-from typeset_for_software_package import EntryPoint
-from typeset_for_software_package import Gridspec
-from typeset_for_software_package import Implementation
-from typeset_for_software_package import SoftwareComponent
-from typeset_for_software_package import Variable
-from typeset_for_time_package import Calendar
-from typeset_for_time_package import DateTime
-from typeset_for_time_package import DatetimeSet
-from typeset_for_time_package import IrregularDateset
-from typeset_for_time_package import RegularTimeset
-from typeset_for_time_package import TimePeriod
+from .typeset_for_activity_package import Activity
+from .typeset_for_activity_package import AxisMember
+from .typeset_for_activity_package import ChildSimulation
+from .typeset_for_activity_package import Conformance
+from .typeset_for_activity_package import Ensemble
+from .typeset_for_activity_package import EnsembleAxis
+from .typeset_for_activity_package import Simulation
+from .typeset_for_activity_package import UberEnsemble
+from .typeset_for_cmip_package import CmipDataset
+from .typeset_for_cmip_package import CmipSimulation
+from .typeset_for_data_package import Dataset
+from .typeset_for_data_package import VariableCollection
+from .typeset_for_designing_package import DomainRequirements
+from .typeset_for_designing_package import EnsembleRequirement
+from .typeset_for_designing_package import ForcingConstraint
+from .typeset_for_designing_package import InitialisationRequirement
+from .typeset_for_designing_package import MultiEnsemble
+from .typeset_for_designing_package import NumericalExperiment
+from .typeset_for_designing_package import NumericalRequirement
+from .typeset_for_designing_package import Objective
+from .typeset_for_designing_package import OutputRequirement
+from .typeset_for_designing_package import Project
+from .typeset_for_designing_package import SimulationPlan
+from .typeset_for_designing_package import StartDateEnsemble
+from .typeset_for_designing_package import TemporalConstraint
+from .typeset_for_drs_package import DrsAtomicDataset
+from .typeset_for_drs_package import DrsEnsembleIdentifier
+from .typeset_for_drs_package import DrsExperiment
+from .typeset_for_drs_package import DrsGeographicalIndicator
+from .typeset_for_drs_package import DrsPublicationDataset
+from .typeset_for_drs_package import DrsSimulationIdentifier
+from .typeset_for_drs_package import DrsTemporalIdentifier
+from .typeset_for_iso_package import Algorithm
+from .typeset_for_iso_package import Lineage
+from .typeset_for_iso_package import ProcessStep
+from .typeset_for_iso_package import ProcessStepReport
+from .typeset_for_iso_package import Processing
+from .typeset_for_iso_package import QualityEvaluationOutput
+from .typeset_for_iso_package import QualityEvaluationResult
+from .typeset_for_iso_package import QualityIssue
+from .typeset_for_iso_package import QualityReport
+from .typeset_for_platform_package import ComputePool
+from .typeset_for_platform_package import Interconnect
+from .typeset_for_platform_package import Machine
+from .typeset_for_platform_package import Nic
+from .typeset_for_platform_package import Partition
+from .typeset_for_platform_package import Performance
+from .typeset_for_platform_package import PerformanceDetail
+from .typeset_for_platform_package import ProjectCost
+from .typeset_for_platform_package import StoragePool
+from .typeset_for_science_package import Model
+from .typeset_for_science_package import Realm
+from .typeset_for_science_package import RealmCoupling
+from .typeset_for_science_package import Topic
+from .typeset_for_science_package import TopicProperty
+from .typeset_for_science_package import TopicPropertySet
+from .typeset_for_shared_package import Citation
+from .typeset_for_shared_package import DocMetaInfo
+from .typeset_for_shared_package import DocReference
+from .typeset_for_shared_package import ExtraAttribute
+from .typeset_for_shared_package import FormalAssociation
+from .typeset_for_shared_package import Numeric
+from .typeset_for_shared_package import OnlineResource
+from .typeset_for_shared_package import Party
+from .typeset_for_shared_package import QualityReview
+from .typeset_for_shared_package import Responsibility
+from .typeset_for_shared_package import TextBlob
+from .typeset_for_software_package import ComponentBase
+from .typeset_for_software_package import Composition
+from .typeset_for_software_package import DevelopmentPath
+from .typeset_for_software_package import EntryPoint
+from .typeset_for_software_package import Gridspec
+from .typeset_for_software_package import Implementation
+from .typeset_for_software_package import SoftwareComponent
+from .typeset_for_software_package import Variable
+from .typeset_for_time_package import Calendar
+from .typeset_for_time_package import DateTime
+from .typeset_for_time_package import DatetimeSet
+from .typeset_for_time_package import IrregularDateset
+from .typeset_for_time_package import RegularTimeset
+from .typeset_for_time_package import TimePeriod
 
 # Ontology enum set.
-from typeset_for_activity_package import ConformanceType
-from typeset_for_data_package import DatasetType
-from typeset_for_designing_package import EnsembleTypes
-from typeset_for_designing_package import ExperimentalRelationships
-from typeset_for_designing_package import ForcingTypes
-from typeset_for_designing_package import NumericalRequirementScope
-from typeset_for_drs_package import DrsFrequencyTypes
-from typeset_for_drs_package import DrsGeographicalOperators
-from typeset_for_drs_package import DrsRealms
-from typeset_for_drs_package import DrsTimeSuffixes
-from typeset_for_iso_package import DqEvaluationResultType
-from typeset_for_iso_package import DsInitiativeTypecode
-from typeset_for_iso_package import MdCellgeometryCode
-from typeset_for_iso_package import MdProgressCode
-from typeset_for_platform_package import StorageSystems
-from typeset_for_science_package import ModelTypes
-from typeset_for_shared_package import NilReason
-from typeset_for_shared_package import QualityStatus
-from typeset_for_shared_package import RoleCode
-from typeset_for_shared_package import TextBlobEncoding
-from typeset_for_software_package import CouplingFramework
-from typeset_for_software_package import ProgrammingLanguage
-from typeset_for_time_package import CalendarTypes
-from typeset_for_time_package import PeriodDateTypes
-from typeset_for_time_package import TimeUnits
+from .typeset_for_activity_package import ConformanceType
+from .typeset_for_data_package import DatasetType
+from .typeset_for_designing_package import EnsembleTypes
+from .typeset_for_designing_package import ExperimentalRelationships
+from .typeset_for_designing_package import ForcingTypes
+from .typeset_for_designing_package import NumericalRequirementScope
+from .typeset_for_drs_package import DrsFrequencyTypes
+from .typeset_for_drs_package import DrsGeographicalOperators
+from .typeset_for_drs_package import DrsRealms
+from .typeset_for_drs_package import DrsTimeSuffixes
+from .typeset_for_iso_package import DqEvaluationResultType
+from .typeset_for_iso_package import DsInitiativeTypecode
+from .typeset_for_iso_package import MdCellgeometryCode
+from .typeset_for_iso_package import MdProgressCode
+from .typeset_for_platform_package import StorageSystems
+from .typeset_for_science_package import ModelTypes
+from .typeset_for_shared_package import NilReason
+from .typeset_for_shared_package import QualityStatus
+from .typeset_for_shared_package import RoleCode
+from .typeset_for_shared_package import TextBlobEncoding
+from .typeset_for_software_package import CouplingFramework
+from .typeset_for_software_package import ProgrammingLanguage
+from .typeset_for_time_package import CalendarTypes
+from .typeset_for_time_package import PeriodDateTypes
+from .typeset_for_time_package import TimeUnits
 
-import type_info
-import typeset
+from . import type_info
+from . import typeset
 try:
 	import decoder
 except ImportError:
diff --git a/pyesdoc/ontologies/cim/v2/type_info.py b/pyesdoc/ontologies/cim/v2/type_info.py
index 400d75e9..ad43c158 100644
--- a/pyesdoc/ontologies/cim/v2/type_info.py
+++ b/pyesdoc/ontologies/cim/v2/type_info.py
@@ -15,17 +15,17 @@
 import uuid
 
 
-import typeset_for_activity_package as activity
-import typeset_for_cmip_package as cmip
-import typeset_for_data_package as data
-import typeset_for_designing_package as designing
-import typeset_for_drs_package as drs
-import typeset_for_iso_package as iso
-import typeset_for_platform_package as platform
-import typeset_for_science_package as science
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
-import typeset_for_time_package as time
+from . import typeset_for_activity_package as activity
+from . import typeset_for_cmip_package as cmip
+from . import typeset_for_data_package as data
+from . import typeset_for_designing_package as designing
+from . import typeset_for_drs_package as drs
+from . import typeset_for_iso_package as iso
+from . import typeset_for_platform_package as platform
+from . import typeset_for_science_package as science
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
+from . import typeset_for_time_package as time
 
 
 
@@ -1910,19 +1910,19 @@
 
     activity.Activity: (
 
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('keywords', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('keywords', 'type', str),
+        ('canonical_name', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('rationale', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -1942,9 +1942,9 @@
     activity.AxisMember: (
 
         ('index', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('value', 'type', float),
-        ('extra_detail', 'type', unicode),
+        ('extra_detail', 'type', str),
         ('conformance', 'type', activity.Conformance),
         ('axis', 'type', activity.EnsembleAxis),
 
@@ -1972,18 +1972,18 @@
         ('source', 'type', data.Dataset),
         ('parent_of', 'type', activity.ChildSimulation),
         ('used', 'type', science.Model),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('parent', 'type', activity.Simulation),
         ('start_time', 'type', time.DateTime),
         ('ran_for_experiments', 'type', designing.NumericalExperiment),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('ran_on', 'type', platform.Machine),
         ('report', 'type', iso.ProcessStepReport),
         ('institution', 'type', shared.Party),
         ('branch_time_in_parent', 'type', time.DateTime),
         ('execution_date_time', 'type', time.DateTime),
         ('extra_attributes', 'type', shared.ExtraAttribute),
-        ('branch_method', 'type', unicode),
+        ('branch_method', 'type', str),
         ('documentation', 'type', shared.OnlineResource),
         ('errata', 'type', shared.OnlineResource),
         ('end_time', 'type', time.DateTime),
@@ -2024,22 +2024,22 @@
     activity.Conformance: (
 
         ('datasets', 'type', data.Dataset),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('models', 'type', science.Model),
-        ('conformance_achieved', 'type', unicode),
+        ('conformance_achieved', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('internal_name', 'type', str),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('rationale', 'type', unicode),
-        ('keywords', 'type', unicode),
+        ('rationale', 'type', str),
+        ('keywords', 'type', str),
         ('target_requirement', 'type', designing.NumericalRequirement),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('datasets', 'cardinality', "0.N"),
         ('description', 'cardinality', "0.1"),
@@ -2065,23 +2065,23 @@
         ('ensemble_axes', 'type', activity.EnsembleAxis),
         ('common_conformances', 'type', activity.Conformance),
         ('uber_ensembles', 'type', activity.UberEnsemble),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('duration', 'type', time.TimePeriod),
         ('documentation', 'type', shared.OnlineResource),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('experiments', 'type', designing.NumericalExperiment),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
         ('representative_performance', 'type', platform.Performance),
-        ('rationale', 'type', unicode),
-        ('keywords', 'type', unicode),
+        ('rationale', 'type', str),
+        ('keywords', 'type', str),
         ('members', 'type', activity.Simulation),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('ensemble_axes', 'cardinality', "0.N"),
         ('common_conformances', 'cardinality', "0.N"),
@@ -2107,10 +2107,10 @@
     ),
     activity.EnsembleAxis: (
 
-        ('name', 'type', unicode),
-        ('extra_detail', 'type', unicode),
+        ('name', 'type', str),
+        ('extra_detail', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
-        ('short_identifier', 'type', unicode),
+        ('short_identifier', 'type', str),
         ('members', 'type', activity.AxisMember),
         ('target_requirement', 'type', designing.NumericalRequirement),
 
@@ -2137,10 +2137,10 @@
         ('source', 'type', data.Dataset),
         ('parent_of', 'type', activity.ChildSimulation),
         ('used', 'type', science.Model),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('start_time', 'type', time.DateTime),
         ('ran_for_experiments', 'type', designing.NumericalExperiment),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('ran_on', 'type', platform.Machine),
         ('report', 'type', iso.ProcessStepReport),
         ('institution', 'type', shared.Party),
@@ -2184,24 +2184,24 @@
         ('child_ensembles', 'type', activity.Ensemble),
         ('ensemble_axes', 'type', activity.EnsembleAxis),
         ('common_conformances', 'type', activity.Conformance),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('documentation', 'type', shared.OnlineResource),
-        ('previously_known_as', 'type', unicode),
+        ('previously_known_as', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('experiments', 'type', designing.NumericalExperiment),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('uber_ensembles', 'type', activity.UberEnsemble),
         ('meta', 'type', shared.DocMetaInfo),
         ('representative_performance', 'type', platform.Performance),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
         ('members', 'type', activity.Simulation),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('child_ensembles', 'cardinality', "1.N"),
         ('ensemble_axes', 'cardinality', "0.N"),
@@ -2230,7 +2230,7 @@
 
         ('lineage', 'type', iso.Lineage),
         ('related_to_dataset', 'type', shared.FormalAssociation),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
         ('drs_location', 'type', drs.DrsPublicationDataset),
         ('contains', 'type', data.VariableCollection),
@@ -2238,11 +2238,11 @@
         ('meta', 'type', shared.DocMetaInfo),
         ('further_attributes', 'type', shared.ExtraAttribute),
         ('originating_simulation', 'type', activity.Simulation),
-        ('keywords', 'type', unicode),
-        ('progress', 'type', unicode),
-        ('type', 'type', unicode),
+        ('keywords', 'type', str),
+        ('progress', 'type', str),
+        ('type', 'type', str),
         ('availability', 'type', shared.OnlineResource),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('lineage', 'cardinality', "0.1"),
         ('related_to_dataset', 'cardinality', "0.N"),
@@ -2266,7 +2266,7 @@
         ('reference', 'type', shared.Citation),
         ('part_of_project', 'type', designing.Project),
         ('realization_index', 'type', int),
-        ('variant_info', 'type', unicode),
+        ('variant_info', 'type', str),
         ('produced', 'type', data.Dataset),
         ('meta', 'type', shared.DocMetaInfo),
         ('ensemble_id', 'type', activity.AxisMember),
@@ -2280,10 +2280,10 @@
         ('source', 'type', data.Dataset),
         ('parent_of', 'type', activity.ChildSimulation),
         ('used', 'type', science.Model),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('start_time', 'type', time.DateTime),
         ('ran_for_experiments', 'type', designing.NumericalExperiment),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('ran_on', 'type', platform.Machine),
         ('report', 'type', iso.ProcessStepReport),
         ('institution', 'type', shared.Party),
@@ -2332,17 +2332,17 @@
 
         ('lineage', 'type', iso.Lineage),
         ('related_to_dataset', 'type', shared.FormalAssociation),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
         ('contains', 'type', data.VariableCollection),
         ('responsible_parties', 'type', shared.Responsibility),
         ('citations', 'type', shared.Citation),
         ('further_attributes', 'type', shared.ExtraAttribute),
-        ('keywords', 'type', unicode),
-        ('progress', 'type', unicode),
-        ('type', 'type', unicode),
+        ('keywords', 'type', str),
+        ('progress', 'type', str),
+        ('type', 'type', str),
         ('availability', 'type', shared.OnlineResource),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('lineage', 'cardinality', "0.1"),
         ('related_to_dataset', 'cardinality', "0.N"),
@@ -2361,9 +2361,9 @@
     ),
     data.VariableCollection: (
 
-        ('geometry', 'type', unicode),
-        ('collection_name', 'type', unicode),
-        ('variables', 'type', unicode),
+        ('geometry', 'type', str),
+        ('collection_name', 'type', str),
+        ('variables', 'type', str),
 
         ('geometry', 'cardinality', "0.1"),
         ('collection_name', 'cardinality', "0.1"),
@@ -2372,25 +2372,25 @@
     ),
     designing.DomainRequirements: (
 
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
         ('required_extent', 'type', science.Topic),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('required_resolution', 'type', science.Topic),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('rationale', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -2415,26 +2415,26 @@
     ),
     designing.EnsembleRequirement: (
 
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('minimum_size', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
-        ('ensemble_type', 'type', unicode),
-        ('internal_name', 'type', unicode),
+        ('ensemble_type', 'type', str),
+        ('internal_name', 'type', str),
         ('ensemble_member', 'type', designing.NumericalRequirement),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('rationale', 'cardinality', "0.1"),
         ('minimum_size', 'cardinality', "1.1"),
@@ -2461,29 +2461,29 @@
     designing.ForcingConstraint: (
 
         ('origin', 'type', shared.Citation),
-        ('code', 'type', unicode),
-        ('additional_constraint', 'type', unicode),
-        ('long_name', 'type', unicode),
+        ('code', 'type', str),
+        ('additional_constraint', 'type', str),
+        ('long_name', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('category', 'type', unicode),
-        ('group', 'type', unicode),
+        ('category', 'type', str),
+        ('group', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('data_link', 'type', data.Dataset),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('forcing_type', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('forcing_type', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('internal_name', 'type', unicode),
-        ('scope', 'type', unicode),
-        ('description', 'type', unicode),
+        ('internal_name', 'type', str),
+        ('scope', 'type', str),
+        ('description', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('rationale', 'type', unicode),
-        ('name', 'type', unicode),
+        ('rationale', 'type', str),
+        ('name', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
-        ('alternative_names', 'type', unicode),
+        ('alternative_names', 'type', str),
 
         ('origin', 'cardinality', "0.1"),
         ('code', 'cardinality', "0.1"),
@@ -2513,26 +2513,26 @@
     ),
     designing.InitialisationRequirement: (
 
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
+        ('previously_known_as', 'type', str),
         ('initialise_from_experiment', 'type', designing.NumericalExperiment),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
         ('branch_time_in_initialisation_source', 'type', time.DateTime),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
+        ('alternative_names', 'type', str),
         ('initialise_from_data', 'type', data.Dataset),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('rationale', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -2559,23 +2559,23 @@
     designing.MultiEnsemble: (
 
         ('ensemble_axis', 'type', designing.EnsembleRequirement),
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('ensemble_axis', 'cardinality', "1.N"),
         ('rationale', 'cardinality', "0.1"),
@@ -2601,24 +2601,24 @@
 
         ('governing_mips', 'type', designing.Project),
         ('requirements', 'type', designing.NumericalRequirement),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('duration', 'type', time.TimePeriod),
         ('required_period', 'type', designing.TemporalConstraint),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('internal_name', 'type', str),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
         ('related_mips', 'type', designing.Project),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('related_experiments', 'type', designing.NumericalExperiment),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('tier', 'type', int),
-        ('alternative_names', 'type', unicode),
-        ('related_objectives', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('related_objectives', 'type', str),
+        ('name', 'type', str),
 
         ('governing_mips', 'cardinality', "0.N"),
         ('requirements', 'cardinality', "0.N"),
@@ -2644,23 +2644,23 @@
     ),
     designing.NumericalRequirement: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('duration', 'type', time.TimePeriod),
         ('additional_requirements', 'type', designing.NumericalRequirement),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('internal_name', 'type', str),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('rationale', 'type', unicode),
-        ('keywords', 'type', unicode),
-        ('scope', 'type', unicode),
+        ('rationale', 'type', str),
+        ('keywords', 'type', str),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('is_conformance_info_required', 'cardinality', "1.1"),
@@ -2684,10 +2684,10 @@
     designing.Objective: (
 
         ('required_outputs', 'type', data.VariableCollection),
-        ('identifier', 'type', unicode),
+        ('identifier', 'type', str),
         ('meta', 'type', shared.DocMetaInfo),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('required_outputs', 'cardinality', "0.N"),
         ('identifier', 'cardinality', "0.1"),
@@ -2699,23 +2699,23 @@
     designing.OutputRequirement: (
 
         ('formal_data_request', 'type', shared.OnlineResource),
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('formal_data_request', 'cardinality', "0.1"),
         ('rationale', 'cardinality', "0.1"),
@@ -2741,23 +2741,23 @@
 
         ('required_experiments', 'type', designing.NumericalExperiment),
         ('governed_experiments', 'type', designing.NumericalExperiment),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('sub_projects', 'type', designing.Project),
         ('duration', 'type', time.TimePeriod),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('previous_projects', 'type', designing.Project),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('rationale', 'type', unicode),
-        ('keywords', 'type', unicode),
+        ('rationale', 'type', str),
+        ('keywords', 'type', str),
         ('objectives', 'type', designing.Objective),
         ('homepage', 'type', shared.OnlineResource),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('required_experiments', 'cardinality', "0.N"),
         ('governed_experiments', 'cardinality', "0.N"),
@@ -2782,23 +2782,23 @@
     ),
     designing.SimulationPlan: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('duration', 'type', time.TimePeriod),
         ('expected_performance_sypd', 'type', float),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('internal_name', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('previously_known_as', 'type', unicode),
+        ('internal_name', 'type', str),
+        ('long_name', 'type', str),
+        ('previously_known_as', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
         ('will_support_experiments', 'type', designing.NumericalExperiment),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('expected_model', 'type', science.Model),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('expected_platform', 'type', platform.Machine),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('duration', 'cardinality', "0.1"),
@@ -2822,23 +2822,23 @@
     designing.StartDateEnsemble: (
 
         ('ensemble_members', 'type', time.DatetimeSet),
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('ensemble_members', 'cardinality', "1.1"),
         ('rationale', 'cardinality', "0.1"),
@@ -2862,27 +2862,27 @@
     ),
     designing.TemporalConstraint: (
 
-        ('rationale', 'type', unicode),
-        ('description', 'type', unicode),
+        ('rationale', 'type', str),
+        ('description', 'type', str),
         ('required_duration', 'type', time.TimePeriod),
         ('citations', 'type', shared.Citation),
         ('start_date', 'type', time.DateTime),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('additional_requirements', 'type', designing.NumericalRequirement),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('previously_known_as', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('previously_known_as', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_name', 'type', str),
         ('is_conformance_info_required', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
         ('required_calendar', 'type', time.Calendar),
-        ('internal_name', 'type', unicode),
+        ('internal_name', 'type', str),
         ('start_flexibility', 'type', time.TimePeriod),
         ('duration', 'type', time.TimePeriod),
-        ('scope', 'type', unicode),
+        ('scope', 'type', str),
         ('is_conformance_requested', 'type', bool),
-        ('alternative_names', 'type', unicode),
-        ('name', 'type', unicode),
+        ('alternative_names', 'type', str),
+        ('name', 'type', str),
 
         ('rationale', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -2910,11 +2910,11 @@
     drs.DrsAtomicDataset: (
 
         ('version_number', 'type', int),
-        ('realm', 'type', unicode),
+        ('realm', 'type', str),
         ('geographical_constraint', 'type', drs.DrsGeographicalIndicator),
-        ('mip_table', 'type', unicode),
-        ('frequency', 'type', unicode),
-        ('variable_name', 'type', unicode),
+        ('mip_table', 'type', str),
+        ('frequency', 'type', str),
+        ('variable_name', 'type', str),
         ('temporal_constraint', 'type', drs.DrsTemporalIdentifier),
 
         ('version_number', 'cardinality', "0.1"),
@@ -2941,9 +2941,9 @@
     ),
     drs.DrsExperiment: (
 
-        ('family', 'type', unicode),
+        ('family', 'type', str),
         ('axis_identifer', 'type', activity.AxisMember),
-        ('axis_type', 'type', unicode),
+        ('axis_type', 'type', str),
 
         ('family', 'cardinality', "1.1"),
         ('axis_identifer', 'cardinality', "0.1"),
@@ -2952,9 +2952,9 @@
     ),
     drs.DrsGeographicalIndicator: (
 
-        ('operator', 'type', unicode),
-        ('bounding_box', 'type', unicode),
-        ('spatial_domain', 'type', unicode),
+        ('operator', 'type', str),
+        ('bounding_box', 'type', str),
+        ('spatial_domain', 'type', str),
 
         ('operator', 'cardinality', "0.1"),
         ('bounding_box', 'cardinality', "0.1"),
@@ -2968,9 +2968,9 @@
     ),
     drs.DrsSimulationIdentifier: (
 
-        ('institute', 'type', unicode),
+        ('institute', 'type', str),
         ('run_variant_id', 'type', drs.DrsEnsembleIdentifier),
-        ('model', 'type', unicode),
+        ('model', 'type', str),
 
         ('institute', 'cardinality', "1.1"),
         ('run_variant_id', 'cardinality', "1.1"),
@@ -2979,9 +2979,9 @@
     ),
     drs.DrsTemporalIdentifier: (
 
-        ('start', 'type', unicode),
-        ('end', 'type', unicode),
-        ('suffix', 'type', unicode),
+        ('start', 'type', str),
+        ('end', 'type', str),
+        ('suffix', 'type', str),
 
         ('start', 'cardinality', "1.1"),
         ('end', 'cardinality', "0.1"),
@@ -2991,7 +2991,7 @@
     iso.Algorithm: (
 
         ('citation', 'type', shared.Citation),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('citation', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -3002,7 +3002,7 @@
         ('process_step', 'type', iso.ProcessStep),
         ('source', 'type', data.Dataset),
         ('meta', 'type', shared.DocMetaInfo),
-        ('statement', 'type', unicode),
+        ('statement', 'type', str),
 
         ('process_step', 'cardinality', "0.N"),
         ('source', 'cardinality', "0.N"),
@@ -3013,11 +3013,11 @@
     iso.ProcessStep: (
 
         ('processing_information', 'type', iso.Processing),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('reference', 'type', shared.Citation),
         ('execution_date_time', 'type', time.DateTime),
         ('source', 'type', data.Dataset),
-        ('rationale', 'type', unicode),
+        ('rationale', 'type', str),
         ('report', 'type', iso.ProcessStepReport),
         ('processor', 'type', shared.Responsibility),
 
@@ -3034,8 +3034,8 @@
     iso.ProcessStepReport: (
 
         ('link', 'type', shared.OnlineResource),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('link', 'cardinality', "0.1"),
         ('description', 'cardinality', "1.1"),
@@ -3044,13 +3044,13 @@
     ),
     iso.Processing: (
 
-        ('procedure_description', 'type', unicode),
+        ('procedure_description', 'type', str),
         ('software_reference', 'type', shared.Citation),
-        ('runtime_parameters', 'type', unicode),
+        ('runtime_parameters', 'type', str),
         ('algorithm', 'type', iso.Algorithm),
         ('documentation', 'type', shared.Citation),
-        ('identifier', 'type', unicode),
-        ('name', 'type', unicode),
+        ('identifier', 'type', str),
+        ('name', 'type', str),
 
         ('procedure_description', 'cardinality', "0.1"),
         ('software_reference', 'cardinality', "0.N"),
@@ -3063,11 +3063,11 @@
     ),
     iso.QualityEvaluationOutput: (
 
-        ('output_type', 'type', unicode),
-        ('protocol', 'type', unicode),
-        ('description', 'type', unicode),
-        ('linkage', 'type', unicode),
-        ('name', 'type', unicode),
+        ('output_type', 'type', str),
+        ('protocol', 'type', str),
+        ('description', 'type', str),
+        ('linkage', 'type', str),
+        ('name', 'type', str),
 
         ('output_type', 'cardinality', "1.1"),
         ('protocol', 'cardinality', "0.1"),
@@ -3078,11 +3078,11 @@
     ),
     iso.QualityEvaluationResult: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('specification', 'type', shared.Citation),
         ('results', 'type', iso.QualityEvaluationOutput),
-        ('evaluation_procedure', 'type', unicode),
-        ('summary_result', 'type', unicode),
+        ('evaluation_procedure', 'type', str),
+        ('summary_result', 'type', str),
         ('passed', 'type', bool),
         ('date', 'type', time.DateTime),
         ('evaluator', 'type', shared.Party),
@@ -3100,8 +3100,8 @@
     iso.QualityIssue: (
 
         ('tracked_issue', 'type', shared.OnlineResource),
-        ('summary', 'type', unicode),
-        ('description', 'type', unicode),
+        ('summary', 'type', str),
+        ('description', 'type', str),
         ('reporter', 'type', shared.Party),
 
         ('tracked_issue', 'cardinality', "0.1"),
@@ -3126,18 +3126,18 @@
     platform.ComputePool: (
 
         ('number_of_nodes', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('memory_per_node', 'type', shared.Numeric),
         ('clock_speed', 'type', shared.Numeric),
-        ('model_number', 'type', unicode),
+        ('model_number', 'type', str),
         ('compute_cores_per_node', 'type', int),
-        ('accelerator_type', 'type', unicode),
-        ('cpu_type', 'type', unicode),
+        ('accelerator_type', 'type', str),
+        ('cpu_type', 'type', str),
         ('network_cards_per_node', 'type', platform.Nic),
         ('vendor', 'type', shared.Party),
         ('accelerators_per_node', 'type', int),
         ('clock_cycle_concurrency', 'type', int),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('number_of_nodes', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -3156,10 +3156,10 @@
     ),
     platform.Interconnect: (
 
-        ('topology', 'type', unicode),
+        ('topology', 'type', str),
         ('vendor', 'type', shared.Party),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('topology', 'cardinality', "0.1"),
         ('vendor', 'cardinality', "0.1"),
@@ -3169,12 +3169,12 @@
     ),
     platform.Machine: (
 
-        ('operating_system', 'type', unicode),
+        ('operating_system', 'type', str),
         ('interconnect', 'type', platform.Interconnect),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('peak_performance', 'type', shared.Numeric),
         ('partition', 'type', platform.Partition),
-        ('model_number', 'type', unicode),
+        ('model_number', 'type', str),
         ('online_documentation', 'type', shared.OnlineResource),
         ('meta', 'type', shared.DocMetaInfo),
         ('storage_pools', 'type', platform.StoragePool),
@@ -3183,7 +3183,7 @@
         ('vendor', 'type', shared.Party),
         ('institution', 'type', shared.Party),
         ('compute_pools', 'type', platform.ComputePool),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('operating_system', 'cardinality', "0.1"),
         ('interconnect', 'cardinality', "0.1"),
@@ -3206,7 +3206,7 @@
 
         ('bandwidth', 'type', shared.Numeric),
         ('vendor', 'type', shared.Party),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('bandwidth', 'cardinality', "1.1"),
         ('vendor', 'cardinality', "0.1"),
@@ -3215,18 +3215,18 @@
     ),
     platform.Partition: (
 
-        ('operating_system', 'type', unicode),
+        ('operating_system', 'type', str),
         ('interconnect', 'type', platform.Interconnect),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('when_available', 'type', time.TimePeriod),
         ('partition', 'type', platform.Partition),
-        ('model_number', 'type', unicode),
+        ('model_number', 'type', str),
         ('online_documentation', 'type', shared.OnlineResource),
         ('storage_pools', 'type', platform.StoragePool),
         ('vendor', 'type', shared.Party),
         ('institution', 'type', shared.Party),
         ('compute_pools', 'type', platform.ComputePool),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('operating_system', 'cardinality', "0.1"),
         ('interconnect', 'cardinality', "0.1"),
@@ -3244,7 +3244,7 @@
     ),
     platform.Performance: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('parallelisation', 'type', float),
         ('joules_per_simulated_year', 'type', float),
         ('subcomponent_performance', 'type', platform.Performance),
@@ -3257,7 +3257,7 @@
         ('model', 'type', science.Model),
         ('core_hours_per_simulated_year', 'type', float),
         ('resolution', 'type', int),
-        ('compiler', 'type', unicode),
+        ('compiler', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('parallelisation', 'cardinality', "0.1"),
@@ -3316,10 +3316,10 @@
     platform.StoragePool: (
 
         ('vendor', 'type', shared.Party),
-        ('type', 'type', unicode),
+        ('type', 'type', str),
         ('file_system_sizes', 'type', shared.Numeric),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('vendor', 'cardinality', "0.1"),
         ('type', 'cardinality', "0.1"),
@@ -3332,24 +3332,24 @@
 
         ('activity_properties', 'type', science.Topic),
         ('realms', 'type', science.Realm),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('repository', 'type', shared.OnlineResource),
-        ('coupler', 'type', unicode),
+        ('coupler', 'type', str),
         ('coupled_components', 'type', science.Model),
         ('release_date', 'type', time.DateTime),
         ('internal_software_components', 'type', software.SoftwareComponent),
         ('development_history', 'type', software.DevelopmentPath),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('model_type', 'type', unicode),
-        ('long_name', 'type', unicode),
-        ('canonical_id', 'type', unicode),
+        ('model_type', 'type', str),
+        ('long_name', 'type', str),
+        ('canonical_id', 'type', str),
         ('citations', 'type', shared.Citation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('version', 'type', unicode),
-        ('keywords', 'type', unicode),
+        ('version', 'type', str),
+        ('keywords', 'type', str),
         ('key_properties', 'type', science.Topic),
         ('realm_coupling', 'type', science.RealmCoupling),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('activity_properties', 'cardinality', "0.N"),
         ('realms', 'cardinality', "0.N"),
@@ -3378,20 +3378,20 @@
         ('processes', 'type', science.Topic),
         ('sub_topics', 'type', science.Topic),
         ('qc_status', 'type', int),
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('property_sets', 'type', science.TopicPropertySet),
         ('software_frameworks', 'type', software.Implementation),
         ('meta', 'type', shared.DocMetaInfo),
-        ('specialization_id', 'type', unicode),
+        ('specialization_id', 'type', str),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('canonical_name', 'type', unicode),
+        ('canonical_name', 'type', str),
         ('citations', 'type', shared.Citation),
         ('grid', 'type', science.Topic),
-        ('overview', 'type', unicode),
-        ('keywords', 'type', unicode),
+        ('overview', 'type', str),
+        ('keywords', 'type', str),
         ('key_properties', 'type', science.Topic),
         ('properties', 'type', science.TopicProperty),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('processes', 'cardinality', "1.N"),
         ('sub_topics', 'cardinality', "0.N"),
@@ -3414,11 +3414,11 @@
     ),
     science.RealmCoupling: (
 
-        ('variable', 'type', unicode),
-        ('coupling_details', 'type', unicode),
-        ('target_realm', 'type', unicode),
-        ('time_frequency', 'type', unicode),
-        ('source_realm', 'type', unicode),
+        ('variable', 'type', str),
+        ('coupling_details', 'type', str),
+        ('target_realm', 'type', str),
+        ('time_frequency', 'type', str),
+        ('source_realm', 'type', str),
 
         ('variable', 'cardinality', "1.1"),
         ('coupling_details', 'cardinality', "0.1"),
@@ -3431,15 +3431,15 @@
 
         ('sub_topics', 'type', science.Topic),
         ('qc_status', 'type', int),
-        ('description', 'type', unicode),
-        ('specialization_id', 'type', unicode),
-        ('overview', 'type', unicode),
+        ('description', 'type', str),
+        ('specialization_id', 'type', str),
+        ('overview', 'type', str),
         ('property_sets', 'type', science.TopicPropertySet),
         ('responsible_parties', 'type', shared.Responsibility),
         ('citations', 'type', shared.Citation),
-        ('keywords', 'type', unicode),
+        ('keywords', 'type', str),
         ('properties', 'type', science.TopicProperty),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('sub_topics', 'cardinality', "0.N"),
         ('qc_status', 'cardinality', "0.1"),
@@ -3456,10 +3456,10 @@
     ),
     science.TopicProperty: (
 
-        ('values', 'type', unicode),
-        ('specialization_id', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('values', 'type', str),
+        ('specialization_id', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('values', 'cardinality', "1.N"),
         ('specialization_id', 'cardinality', "0.1"),
@@ -3470,9 +3470,9 @@
     science.TopicPropertySet: (
 
         ('properties', 'type', science.TopicProperty),
-        ('specialization_id', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('specialization_id', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('properties', 'cardinality', "1.N"),
         ('specialization_id', 'cardinality', "0.1"),
@@ -3482,18 +3482,18 @@
     ),
     shared.Citation: (
 
-        ('doi', 'type', unicode),
-        ('title', 'type', unicode),
+        ('doi', 'type', str),
+        ('title', 'type', str),
         ('url', 'type', shared.OnlineResource),
-        ('abstract', 'type', unicode),
-        ('collective_title', 'type', unicode),
+        ('abstract', 'type', str),
+        ('collective_title', 'type', str),
         ('year', 'type', int),
         ('meta', 'type', shared.DocMetaInfo),
-        ('bibtex', 'type', unicode),
-        ('context', 'type', unicode),
-        ('authors', 'type', unicode),
-        ('type', 'type', unicode),
-        ('citation_detail', 'type', unicode),
+        ('bibtex', 'type', str),
+        ('context', 'type', str),
+        ('authors', 'type', str),
+        ('type', 'type', str),
+        ('citation_detail', 'type', str),
 
         ('doi', 'cardinality', "0.1"),
         ('title', 'cardinality', "0.1"),
@@ -3511,23 +3511,23 @@
     ),
     shared.DocMetaInfo: (
 
-        ('drs_keys', 'type', unicode),
-        ('drs_path', 'type', unicode),
+        ('drs_keys', 'type', str),
+        ('drs_path', 'type', str),
         ('create_date', 'type', datetime.datetime),
         ('author', 'type', shared.Party),
-        ('institute', 'type', unicode),
-        ('source_key', 'type', unicode),
-        ('project', 'type', unicode),
-        ('sort_key', 'type', unicode),
+        ('institute', 'type', str),
+        ('source_key', 'type', str),
+        ('project', 'type', str),
+        ('sort_key', 'type', str),
         ('version', 'type', int),
-        ('source', 'type', unicode),
-        ('type_sort_key', 'type', unicode),
+        ('source', 'type', str),
+        ('type_sort_key', 'type', str),
         ('update_date', 'type', datetime.datetime),
-        ('external_ids', 'type', unicode),
-        ('sub_projects', 'type', unicode),
-        ('type', 'type', unicode),
-        ('id', 'type', unicode),
-        ('type_display_name', 'type', unicode),
+        ('external_ids', 'type', str),
+        ('sub_projects', 'type', str),
+        ('type', 'type', str),
+        ('id', 'type', str),
+        ('type_display_name', 'type', str),
 
         ('drs_keys', 'cardinality', "0.N"),
         ('drs_path', 'cardinality', "0.1"),
@@ -3550,14 +3550,14 @@
     ),
     shared.DocReference: (
 
-        ('name', 'type', unicode),
-        ('relationship', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('name', 'type', str),
+        ('relationship', 'type', str),
+        ('canonical_name', 'type', str),
         ('version', 'type', int),
-        ('further_info', 'type', unicode),
-        ('context', 'type', unicode),
-        ('type', 'type', unicode),
-        ('id', 'type', unicode),
+        ('further_info', 'type', str),
+        ('context', 'type', str),
+        ('type', 'type', str),
+        ('id', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('relationship', 'cardinality', "0.1"),
@@ -3571,10 +3571,10 @@
     ),
     shared.ExtraAttribute: (
 
-        ('doc', 'type', unicode),
-        ('type', 'type', unicode),
-        ('value', 'type', unicode),
-        ('key', 'type', unicode),
+        ('doc', 'type', str),
+        ('type', 'type', str),
+        ('value', 'type', str),
+        ('key', 'type', str),
 
         ('doc', 'cardinality', "0.1"),
         ('type', 'cardinality', "0.1"),
@@ -3584,17 +3584,17 @@
     ),
     shared.FormalAssociation: (
 
-        ('name', 'type', unicode),
-        ('relationship', 'type', unicode),
+        ('name', 'type', str),
+        ('relationship', 'type', str),
         ('online_at', 'type', shared.OnlineResource),
-        ('association_id', 'type', unicode),
-        ('canonical_name', 'type', unicode),
+        ('association_id', 'type', str),
+        ('canonical_name', 'type', str),
         ('version', 'type', int),
-        ('further_info', 'type', unicode),
-        ('context', 'type', unicode),
+        ('further_info', 'type', str),
+        ('context', 'type', str),
         ('association_vocabulary', 'type', shared.OnlineResource),
-        ('type', 'type', unicode),
-        ('id', 'type', unicode),
+        ('type', 'type', str),
+        ('id', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('relationship', 'cardinality', "1.1"),
@@ -3611,9 +3611,9 @@
     ),
     shared.Numeric: (
 
-        ('units', 'type', unicode),
-        ('base_unit', 'type', unicode),
-        ('unit_enumeration', 'type', unicode),
+        ('units', 'type', str),
+        ('base_unit', 'type', str),
+        ('unit_enumeration', 'type', str),
         ('value', 'type', float),
         ('unit_source', 'type', shared.OnlineResource),
 
@@ -3626,10 +3626,10 @@
     ),
     shared.OnlineResource: (
 
-        ('protocol', 'type', unicode),
-        ('description', 'type', unicode),
-        ('linkage', 'type', unicode),
-        ('name', 'type', unicode),
+        ('protocol', 'type', str),
+        ('description', 'type', str),
+        ('linkage', 'type', str),
+        ('name', 'type', str),
 
         ('protocol', 'cardinality', "0.1"),
         ('description', 'cardinality', "0.1"),
@@ -3639,13 +3639,13 @@
     ),
     shared.Party: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
         ('url', 'type', shared.OnlineResource),
         ('is_organisation', 'type', bool),
         ('meta', 'type', shared.DocMetaInfo),
-        ('address', 'type', unicode),
-        ('email', 'type', unicode),
-        ('orcid_id', 'type', unicode),
+        ('address', 'type', str),
+        ('email', 'type', str),
+        ('orcid_id', 'type', str),
 
         ('name', 'cardinality', "0.1"),
         ('url', 'cardinality', "0.1"),
@@ -3658,11 +3658,11 @@
     ),
     shared.QualityReview: (
 
-        ('quality_status', 'type', unicode),
+        ('quality_status', 'type', str),
         ('target_document', 'type', shared.DocReference),
         ('meta', 'type', shared.DocMetaInfo),
-        ('quality_description', 'type', unicode),
-        ('date', 'type', unicode),
+        ('quality_description', 'type', str),
+        ('date', 'type', str),
         ('metadata_reviewer', 'type', shared.Party),
 
         ('quality_status', 'cardinality', "0.1"),
@@ -3676,7 +3676,7 @@
     shared.Responsibility: (
 
         ('when', 'type', time.TimePeriod),
-        ('role', 'type', unicode),
+        ('role', 'type', str),
         ('parties', 'type', shared.Party),
 
         ('when', 'cardinality', "0.1"),
@@ -3686,8 +3686,8 @@
     ),
     shared.TextBlob: (
 
-        ('content', 'type', unicode),
-        ('encoding', 'type', unicode),
+        ('content', 'type', str),
+        ('encoding', 'type', str),
 
         ('content', 'cardinality', "1.1"),
         ('encoding', 'cardinality', "1.1"),
@@ -3695,16 +3695,16 @@
     ),
     software.ComponentBase: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('repository', 'type', shared.OnlineResource),
         ('release_date', 'type', time.DateTime),
         ('development_history', 'type', software.DevelopmentPath),
         ('responsible_parties', 'type', shared.Responsibility),
-        ('long_name', 'type', unicode),
-        ('canonical_id', 'type', unicode),
+        ('long_name', 'type', str),
+        ('canonical_id', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('version', 'type', unicode),
-        ('name', 'type', unicode),
+        ('version', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('repository', 'cardinality', "0.1"),
@@ -3720,8 +3720,8 @@
     ),
     software.Composition: (
 
-        ('couplings', 'type', unicode),
-        ('description', 'type', unicode),
+        ('couplings', 'type', str),
+        ('description', 'type', str),
 
         ('couplings', 'cardinality', "0.N"),
         ('description', 'cardinality', "0.1"),
@@ -3729,11 +3729,11 @@
     ),
     software.DevelopmentPath: (
 
-        ('consortium_name', 'type', unicode),
+        ('consortium_name', 'type', str),
         ('was_developed_in_house', 'type', bool),
         ('funding_sources', 'type', shared.Responsibility),
         ('creators', 'type', shared.Responsibility),
-        ('previous_version', 'type', unicode),
+        ('previous_version', 'type', str),
 
         ('consortium_name', 'cardinality', "0.1"),
         ('was_developed_in_house', 'cardinality', "1.1"),
@@ -3744,29 +3744,29 @@
     ),
     software.EntryPoint: (
 
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('name', 'cardinality', "0.1"),
 
     ),
     software.Gridspec: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
 
         ('description', 'cardinality', "1.1"),
 
     ),
     software.Implementation: (
 
-        ('description', 'type', unicode),
+        ('description', 'type', str),
         ('repository', 'type', shared.OnlineResource),
         ('release_date', 'type', datetime.datetime),
         ('development_history', 'type', software.DevelopmentPath),
-        ('long_name', 'type', unicode),
-        ('canonical_id', 'type', unicode),
+        ('long_name', 'type', str),
+        ('canonical_id', 'type', str),
         ('citations', 'type', shared.Citation),
-        ('version', 'type', unicode),
-        ('name', 'type', unicode),
+        ('version', 'type', str),
+        ('name', 'type', str),
 
         ('description', 'cardinality', "0.1"),
         ('repository', 'cardinality', "0.1"),
@@ -3781,26 +3781,26 @@
     ),
     software.SoftwareComponent: (
 
-        ('license', 'type', unicode),
-        ('coupling_framework', 'type', unicode),
-        ('description', 'type', unicode),
+        ('license', 'type', str),
+        ('coupling_framework', 'type', str),
+        ('description', 'type', str),
         ('repository', 'type', shared.OnlineResource),
-        ('language', 'type', unicode),
+        ('language', 'type', str),
         ('depends_on', 'type', software.SoftwareComponent),
         ('release_date', 'type', time.DateTime),
         ('meta', 'type', shared.DocMetaInfo),
         ('development_history', 'type', software.DevelopmentPath),
         ('responsible_parties', 'type', shared.Responsibility),
         ('sub_components', 'type', software.SoftwareComponent),
-        ('long_name', 'type', unicode),
-        ('canonical_id', 'type', unicode),
+        ('long_name', 'type', str),
+        ('canonical_id', 'type', str),
         ('citations', 'type', shared.Citation),
         ('grid', 'type', software.Gridspec),
-        ('version', 'type', unicode),
+        ('version', 'type', str),
         ('dependencies', 'type', software.EntryPoint),
         ('composition', 'type', software.Composition),
         ('connection_points', 'type', software.Variable),
-        ('name', 'type', unicode),
+        ('name', 'type', str),
 
         ('license', 'cardinality', "0.1"),
         ('coupling_framework', 'cardinality', "0.1"),
@@ -3827,8 +3827,8 @@
     software.Variable: (
 
         ('is_prognostic', 'type', bool),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('description', 'type', str),
+        ('name', 'type', str),
 
         ('is_prognostic', 'cardinality', "1.1"),
         ('description', 'cardinality', "0.1"),
@@ -3837,9 +3837,9 @@
     ),
     time.Calendar: (
 
-        ('standard_name', 'type', unicode),
-        ('description', 'type', unicode),
-        ('name', 'type', unicode),
+        ('standard_name', 'type', str),
+        ('description', 'type', str),
+        ('name', 'type', str),
         ('month_lengths', 'type', int),
 
         ('standard_name', 'cardinality', "1.1"),
@@ -3850,7 +3850,7 @@
     ),
     time.DateTime: (
 
-        ('value', 'type', unicode),
+        ('value', 'type', str),
         ('is_offset', 'type', bool),
 
         ('value', 'cardinality', "1.1"),
@@ -3867,7 +3867,7 @@
     time.IrregularDateset: (
 
         ('length', 'type', int),
-        ('date_set', 'type', unicode),
+        ('date_set', 'type', str),
 
         ('length', 'cardinality', "1.1"),
         ('date_set', 'cardinality', "1.1"),
@@ -3889,8 +3889,8 @@
         ('date', 'type', time.DateTime),
         ('length', 'type', float),
         ('calendar', 'type', time.Calendar),
-        ('units', 'type', unicode),
-        ('date_type', 'type', unicode),
+        ('units', 'type', str),
+        ('date_type', 'type', str),
 
         ('date', 'cardinality', "0.1"),
         ('length', 'cardinality', "1.1"),
@@ -3906,14 +3906,14 @@
 
     (activity.Activity, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Activity, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3927,7 +3927,7 @@
     ),
     (activity.Activity, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3941,21 +3941,21 @@
     ),
     (activity.Activity, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Activity, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Activity, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -3969,21 +3969,21 @@
     ),
     (activity.Activity, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.Activity, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Activity, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4012,14 +4012,14 @@
     ),
     (activity.AxisMember, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.AxisMember, 'extra_detail'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4041,7 +4041,7 @@
 
     (activity.ChildSimulation, 'branch_method'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4195,7 +4195,7 @@
     ),
     (activity.ChildSimulation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4223,7 +4223,7 @@
     ),
     (activity.ChildSimulation, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4252,7 +4252,7 @@
 
     (activity.Conformance, 'conformance_achieved'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4280,14 +4280,14 @@
     ),
     (activity.Conformance, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Conformance, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4301,7 +4301,7 @@
     ),
     (activity.Conformance, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4315,21 +4315,21 @@
     ),
     (activity.Conformance, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Conformance, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Conformance, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4343,21 +4343,21 @@
     ),
     (activity.Conformance, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.Conformance, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Conformance, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4421,14 +4421,14 @@
     ),
     (activity.Ensemble, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Ensemble, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4442,7 +4442,7 @@
     ),
     (activity.Ensemble, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4456,21 +4456,21 @@
     ),
     (activity.Ensemble, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Ensemble, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.Ensemble, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4484,21 +4484,21 @@
     ),
     (activity.Ensemble, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.Ensemble, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.Ensemble, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4513,7 +4513,7 @@
 
     (activity.EnsembleAxis, 'extra_detail'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4534,14 +4534,14 @@
     ),
     (activity.EnsembleAxis, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.EnsembleAxis, 'short_identifier'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4682,7 +4682,7 @@
     ),
     (activity.Simulation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -4710,7 +4710,7 @@
     ),
     (activity.Simulation, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4795,14 +4795,14 @@
     ),
     (activity.UberEnsemble, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.UberEnsemble, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4816,7 +4816,7 @@
     ),
     (activity.UberEnsemble, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4830,21 +4830,21 @@
     ),
     (activity.UberEnsemble, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.UberEnsemble, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (activity.UberEnsemble, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4858,21 +4858,21 @@
     ),
     (activity.UberEnsemble, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (activity.UberEnsemble, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (activity.UberEnsemble, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4929,7 +4929,7 @@
     ),
     (cmip.CmipDataset, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4943,7 +4943,7 @@
     ),
     (cmip.CmipDataset, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -4964,14 +4964,14 @@
     ),
     (cmip.CmipDataset, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (cmip.CmipDataset, 'progress'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -4992,7 +4992,7 @@
     ),
     (cmip.CmipDataset, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -5035,7 +5035,7 @@
     ),
     (cmip.CmipSimulation, 'variant_info'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5168,7 +5168,7 @@
     ),
     (cmip.CmipSimulation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5196,7 +5196,7 @@
     ),
     (cmip.CmipSimulation, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5246,7 +5246,7 @@
     ),
     (data.Dataset, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5260,7 +5260,7 @@
     ),
     (data.Dataset, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -5281,14 +5281,14 @@
     ),
     (data.Dataset, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (data.Dataset, 'progress'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5309,7 +5309,7 @@
     ),
     (data.Dataset, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -5317,21 +5317,21 @@
 
     (data.VariableCollection, 'collection_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.VariableCollection, 'geometry'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (data.VariableCollection, 'variables'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -5374,21 +5374,21 @@
     ),
     (designing.DomainRequirements, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.DomainRequirements, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.DomainRequirements, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5402,7 +5402,7 @@
     ),
     (designing.DomainRequirements, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5416,21 +5416,21 @@
     ),
     (designing.DomainRequirements, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.DomainRequirements, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.DomainRequirements, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5444,21 +5444,21 @@
     ),
     (designing.DomainRequirements, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.DomainRequirements, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.DomainRequirements, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5480,7 +5480,7 @@
     ),
     (designing.EnsembleRequirement, 'ensemble_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -5515,21 +5515,21 @@
     ),
     (designing.EnsembleRequirement, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.EnsembleRequirement, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.EnsembleRequirement, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5543,7 +5543,7 @@
     ),
     (designing.EnsembleRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5557,21 +5557,21 @@
     ),
     (designing.EnsembleRequirement, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.EnsembleRequirement, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.EnsembleRequirement, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5585,21 +5585,21 @@
     ),
     (designing.EnsembleRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.EnsembleRequirement, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.EnsembleRequirement, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5614,21 +5614,21 @@
 
     (designing.ForcingConstraint, 'additional_constraint'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.ForcingConstraint, 'category'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.ForcingConstraint, 'code'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5642,14 +5642,14 @@
     ),
     (designing.ForcingConstraint, 'forcing_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.ForcingConstraint, 'group'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5684,21 +5684,21 @@
     ),
     (designing.ForcingConstraint, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.ForcingConstraint, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.ForcingConstraint, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5712,7 +5712,7 @@
     ),
     (designing.ForcingConstraint, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5726,21 +5726,21 @@
     ),
     (designing.ForcingConstraint, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.ForcingConstraint, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.ForcingConstraint, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5754,21 +5754,21 @@
     ),
     (designing.ForcingConstraint, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.ForcingConstraint, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.ForcingConstraint, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5825,21 +5825,21 @@
     ),
     (designing.InitialisationRequirement, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.InitialisationRequirement, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.InitialisationRequirement, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5853,7 +5853,7 @@
     ),
     (designing.InitialisationRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5867,21 +5867,21 @@
     ),
     (designing.InitialisationRequirement, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.InitialisationRequirement, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.InitialisationRequirement, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5895,21 +5895,21 @@
     ),
     (designing.InitialisationRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.InitialisationRequirement, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.InitialisationRequirement, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5952,21 +5952,21 @@
     ),
     (designing.MultiEnsemble, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.MultiEnsemble, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.MultiEnsemble, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5980,7 +5980,7 @@
     ),
     (designing.MultiEnsemble, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -5994,21 +5994,21 @@
     ),
     (designing.MultiEnsemble, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.MultiEnsemble, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.MultiEnsemble, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6022,21 +6022,21 @@
     ),
     (designing.MultiEnsemble, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.MultiEnsemble, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.MultiEnsemble, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6072,7 +6072,7 @@
     ),
     (designing.NumericalExperiment, 'related_objectives'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -6100,14 +6100,14 @@
     ),
     (designing.NumericalExperiment, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.NumericalExperiment, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6121,7 +6121,7 @@
     ),
     (designing.NumericalExperiment, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6135,21 +6135,21 @@
     ),
     (designing.NumericalExperiment, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.NumericalExperiment, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.NumericalExperiment, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6163,21 +6163,21 @@
     ),
     (designing.NumericalExperiment, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.NumericalExperiment, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.NumericalExperiment, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6213,21 +6213,21 @@
     ),
     (designing.NumericalRequirement, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.NumericalRequirement, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.NumericalRequirement, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6241,7 +6241,7 @@
     ),
     (designing.NumericalRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6255,21 +6255,21 @@
     ),
     (designing.NumericalRequirement, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.NumericalRequirement, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.NumericalRequirement, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6283,21 +6283,21 @@
     ),
     (designing.NumericalRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.NumericalRequirement, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.NumericalRequirement, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6312,14 +6312,14 @@
 
     (designing.Objective, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.Objective, 'identifier'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6333,7 +6333,7 @@
     ),
     (designing.Objective, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -6376,21 +6376,21 @@
     ),
     (designing.OutputRequirement, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.OutputRequirement, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.OutputRequirement, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6404,7 +6404,7 @@
     ),
     (designing.OutputRequirement, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6418,21 +6418,21 @@
     ),
     (designing.OutputRequirement, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.OutputRequirement, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.OutputRequirement, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6446,21 +6446,21 @@
     ),
     (designing.OutputRequirement, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.OutputRequirement, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.OutputRequirement, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6517,14 +6517,14 @@
     ),
     (designing.Project, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.Project, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6538,7 +6538,7 @@
     ),
     (designing.Project, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6552,21 +6552,21 @@
     ),
     (designing.Project, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.Project, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.Project, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6580,21 +6580,21 @@
     ),
     (designing.Project, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.Project, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.Project, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6637,14 +6637,14 @@
     ),
     (designing.SimulationPlan, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.SimulationPlan, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6658,7 +6658,7 @@
     ),
     (designing.SimulationPlan, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6672,21 +6672,21 @@
     ),
     (designing.SimulationPlan, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.SimulationPlan, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.SimulationPlan, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6700,21 +6700,21 @@
     ),
     (designing.SimulationPlan, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.SimulationPlan, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.SimulationPlan, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6757,21 +6757,21 @@
     ),
     (designing.StartDateEnsemble, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.StartDateEnsemble, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.StartDateEnsemble, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6785,7 +6785,7 @@
     ),
     (designing.StartDateEnsemble, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6799,21 +6799,21 @@
     ),
     (designing.StartDateEnsemble, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.StartDateEnsemble, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.StartDateEnsemble, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6827,21 +6827,21 @@
     ),
     (designing.StartDateEnsemble, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.StartDateEnsemble, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.StartDateEnsemble, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6905,21 +6905,21 @@
     ),
     (designing.TemporalConstraint, 'scope'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.TemporalConstraint, 'alternative_names'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.TemporalConstraint, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6933,7 +6933,7 @@
     ),
     (designing.TemporalConstraint, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6947,21 +6947,21 @@
     ),
     (designing.TemporalConstraint, 'internal_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.TemporalConstraint, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (designing.TemporalConstraint, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -6975,21 +6975,21 @@
     ),
     (designing.TemporalConstraint, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (designing.TemporalConstraint, 'previously_known_as'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (designing.TemporalConstraint, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7004,7 +7004,7 @@
 
     (drs.DrsAtomicDataset, 'frequency'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7018,14 +7018,14 @@
     ),
     (drs.DrsAtomicDataset, 'mip_table'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (drs.DrsAtomicDataset, 'realm'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7039,7 +7039,7 @@
     ),
     (drs.DrsAtomicDataset, 'variable_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7090,14 +7090,14 @@
     ),
     (drs.DrsExperiment, 'axis_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (drs.DrsExperiment, 'family'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7105,21 +7105,21 @@
 
     (drs.DrsGeographicalIndicator, 'bounding_box'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (drs.DrsGeographicalIndicator, 'operator'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (drs.DrsGeographicalIndicator, 'spatial_domain'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7128,14 +7128,14 @@
 
     (drs.DrsSimulationIdentifier, 'institute'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (drs.DrsSimulationIdentifier, 'model'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7150,21 +7150,21 @@
 
     (drs.DrsTemporalIdentifier, 'end'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (drs.DrsTemporalIdentifier, 'start'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (drs.DrsTemporalIdentifier, 'suffix'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7179,7 +7179,7 @@
     ),
     (iso.Algorithm, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7208,7 +7208,7 @@
     ),
     (iso.Lineage, 'statement'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7216,7 +7216,7 @@
 
     (iso.ProcessStep, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7244,7 +7244,7 @@
     ),
     (iso.ProcessStep, 'rationale'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7273,7 +7273,7 @@
 
     (iso.ProcessStepReport, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7287,7 +7287,7 @@
     ),
     (iso.ProcessStepReport, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7309,28 +7309,28 @@
     ),
     (iso.Processing, 'identifier'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (iso.Processing, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (iso.Processing, 'procedure_description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (iso.Processing, 'runtime_parameters'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7345,35 +7345,35 @@
 
     (iso.QualityEvaluationOutput, 'output_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (iso.QualityEvaluationOutput, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (iso.QualityEvaluationOutput, 'linkage'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (iso.QualityEvaluationOutput, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (iso.QualityEvaluationOutput, 'protocol'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7388,7 +7388,7 @@
     ),
     (iso.QualityEvaluationResult, 'evaluation_procedure'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7402,7 +7402,7 @@
     ),
     (iso.QualityEvaluationResult, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7430,7 +7430,7 @@
     ),
     (iso.QualityEvaluationResult, 'summary_result'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7438,7 +7438,7 @@
 
     (iso.QualityIssue, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7452,7 +7452,7 @@
     ),
     (iso.QualityIssue, 'summary'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7496,7 +7496,7 @@
 
     (platform.ComputePool, 'accelerator_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7531,14 +7531,14 @@
     ),
     (platform.ComputePool, 'cpu_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.ComputePool, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7552,14 +7552,14 @@
     ),
     (platform.ComputePool, 'model_number'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.ComputePool, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7588,21 +7588,21 @@
 
     (platform.Interconnect, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.Interconnect, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.Interconnect, 'topology'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7645,7 +7645,7 @@
     ),
     (platform.Machine, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7666,14 +7666,14 @@
     ),
     (platform.Machine, 'model_number'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.Machine, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7687,7 +7687,7 @@
     ),
     (platform.Machine, 'operating_system'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7730,7 +7730,7 @@
     ),
     (platform.Nic, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7752,7 +7752,7 @@
     ),
     (platform.Partition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7773,14 +7773,14 @@
     ),
     (platform.Partition, 'model_number'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (platform.Partition, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -7794,7 +7794,7 @@
     ),
     (platform.Partition, 'operating_system'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7837,7 +7837,7 @@
     ),
     (platform.Performance, 'compiler'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -7886,7 +7886,7 @@
     ),
     (platform.Performance, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8029,7 +8029,7 @@
 
     (platform.StoragePool, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8043,14 +8043,14 @@
     ),
     (platform.StoragePool, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (platform.StoragePool, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8079,7 +8079,7 @@
     ),
     (science.Model, 'coupler'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8100,7 +8100,7 @@
     ),
     (science.Model, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
@@ -8114,7 +8114,7 @@
     ),
     (science.Model, 'model_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8135,7 +8135,7 @@
     ),
     (science.Model, 'canonical_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8149,7 +8149,7 @@
     ),
     (science.Model, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8163,14 +8163,14 @@
     ),
     (science.Model, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.Model, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8198,7 +8198,7 @@
     ),
     (science.Model, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8206,7 +8206,7 @@
 
     (science.Realm, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8255,28 +8255,28 @@
     ),
     (science.Realm, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.Realm, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (science.Realm, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.Realm, 'overview'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8311,7 +8311,7 @@
     ),
     (science.Realm, 'specialization_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8326,35 +8326,35 @@
 
     (science.RealmCoupling, 'coupling_details'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.RealmCoupling, 'source_realm'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (science.RealmCoupling, 'target_realm'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (science.RealmCoupling, 'time_frequency'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (science.RealmCoupling, 'variable'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8369,28 +8369,28 @@
     ),
     (science.Topic, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.Topic, 'keywords'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (science.Topic, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.Topic, 'overview'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8425,7 +8425,7 @@
     ),
     (science.Topic, 'specialization_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8440,28 +8440,28 @@
 
     (science.TopicProperty, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.TopicProperty, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.TopicProperty, 'specialization_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.TopicProperty, 'values'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.N"),
 
@@ -8469,14 +8469,14 @@
 
     (science.TopicPropertySet, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (science.TopicPropertySet, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8490,7 +8490,7 @@
     ),
     (science.TopicPropertySet, 'specialization_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8498,49 +8498,49 @@
 
     (shared.Citation, 'abstract'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'authors'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.Citation, 'bibtex'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'citation_detail'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'collective_title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'context'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'doi'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8554,14 +8554,14 @@
     ),
     (shared.Citation, 'title'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Citation, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8597,91 +8597,91 @@
     ),
     (shared.DocMetaInfo, 'drs_keys'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'drs_path'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'external_ids'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'institute'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'project'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'sort_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'source'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'source_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'sub_projects'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (shared.DocMetaInfo, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.DocMetaInfo, 'type_display_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocMetaInfo, 'type_sort_key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8703,49 +8703,49 @@
 
     (shared.DocReference, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'context'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'further_info'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'relationship'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.DocReference, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8760,28 +8760,28 @@
 
     (shared.ExtraAttribute, 'doc'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ExtraAttribute, 'key'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.ExtraAttribute, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.ExtraAttribute, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8789,7 +8789,7 @@
 
     (shared.FormalAssociation, 'association_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8810,49 +8810,49 @@
     ),
     (shared.FormalAssociation, 'canonical_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.FormalAssociation, 'context'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.FormalAssociation, 'further_info'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.FormalAssociation, 'id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.FormalAssociation, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.FormalAssociation, 'relationship'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.FormalAssociation, 'type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8867,14 +8867,14 @@
 
     (shared.Numeric, 'base_unit'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Numeric, 'unit_enumeration'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8888,7 +8888,7 @@
     ),
     (shared.Numeric, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -8903,28 +8903,28 @@
 
     (shared.OnlineResource, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.OnlineResource, 'linkage'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.OnlineResource, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.OnlineResource, 'protocol'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8932,14 +8932,14 @@
 
     (shared.Party, 'address'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Party, 'email'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8960,14 +8960,14 @@
     ),
     (shared.Party, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (shared.Party, 'orcid_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -8982,7 +8982,7 @@
 
     (shared.QualityReview, 'date'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9003,14 +9003,14 @@
     ),
     (shared.QualityReview, 'quality_description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.QualityReview, 'quality_status'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9032,7 +9032,7 @@
     ),
     (shared.Responsibility, 'role'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9047,14 +9047,14 @@
 
     (shared.TextBlob, 'content'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
     ),
     (shared.TextBlob, 'encoding'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9062,7 +9062,7 @@
 
     (software.ComponentBase, 'canonical_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9076,7 +9076,7 @@
     ),
     (software.ComponentBase, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9090,14 +9090,14 @@
     ),
     (software.ComponentBase, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.ComponentBase, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9125,7 +9125,7 @@
     ),
     (software.ComponentBase, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9133,14 +9133,14 @@
 
     (software.Composition, 'couplings'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.N"),
 
     ),
     (software.Composition, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9148,7 +9148,7 @@
 
     (software.DevelopmentPath, 'consortium_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9169,7 +9169,7 @@
     ),
     (software.DevelopmentPath, 'previous_version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9184,7 +9184,7 @@
 
     (software.EntryPoint, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9192,7 +9192,7 @@
 
     (software.Gridspec, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9200,7 +9200,7 @@
 
     (software.Implementation, 'canonical_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9214,7 +9214,7 @@
     ),
     (software.Implementation, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9228,14 +9228,14 @@
     ),
     (software.Implementation, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.Implementation, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9256,7 +9256,7 @@
     ),
     (software.Implementation, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9278,7 +9278,7 @@
     ),
     (software.SoftwareComponent, 'coupling_framework'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9306,14 +9306,14 @@
     ),
     (software.SoftwareComponent, 'language'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.SoftwareComponent, 'license'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9334,7 +9334,7 @@
     ),
     (software.SoftwareComponent, 'canonical_id'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9348,7 +9348,7 @@
     ),
     (software.SoftwareComponent, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9362,14 +9362,14 @@
     ),
     (software.SoftwareComponent, 'long_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (software.SoftwareComponent, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9397,7 +9397,7 @@
     ),
     (software.SoftwareComponent, 'version'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9405,7 +9405,7 @@
 
     (software.Variable, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9419,7 +9419,7 @@
     ),
     (software.Variable, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9427,7 +9427,7 @@
 
     (time.Calendar, 'description'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
@@ -9441,14 +9441,14 @@
     ),
     (time.Calendar, 'name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "0.1"),
 
     ),
     (time.Calendar, 'standard_name'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9463,7 +9463,7 @@
     ),
     (time.DateTime, 'value'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9479,7 +9479,7 @@
 
     (time.IrregularDateset, 'date_set'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9537,7 +9537,7 @@
     ),
     (time.TimePeriod, 'date_type'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
@@ -9551,7 +9551,7 @@
     ),
     (time.TimePeriod, 'units'): (
 
-        ('type', unicode),
+        ('type', str),
 
         ('cardinality', "1.1"),
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset.py b/pyesdoc/ontologies/cim/v2/typeset.py
index 901747b7..6f66226a 100644
--- a/pyesdoc/ontologies/cim/v2/typeset.py
+++ b/pyesdoc/ontologies/cim/v2/typeset.py
@@ -10,30 +10,30 @@
 .. note:: Code generated using the pyesdoc framework.
 
 """
-from typeset_for_activity_package import *
-from typeset_for_cmip_package import *
-from typeset_for_data_package import *
-from typeset_for_designing_package import *
-from typeset_for_drs_package import *
-from typeset_for_iso_package import *
-from typeset_for_platform_package import *
-from typeset_for_science_package import *
-from typeset_for_shared_package import *
-from typeset_for_software_package import *
-from typeset_for_time_package import *
+from .typeset_for_activity_package import *
+from .typeset_for_cmip_package import *
+from .typeset_for_data_package import *
+from .typeset_for_designing_package import *
+from .typeset_for_drs_package import *
+from .typeset_for_iso_package import *
+from .typeset_for_platform_package import *
+from .typeset_for_science_package import *
+from .typeset_for_shared_package import *
+from .typeset_for_software_package import *
+from .typeset_for_time_package import *
 
 
-import typeset_for_activity_package as activity
-import typeset_for_cmip_package as cmip
-import typeset_for_data_package as data
-import typeset_for_designing_package as designing
-import typeset_for_drs_package as drs
-import typeset_for_iso_package as iso
-import typeset_for_platform_package as platform
-import typeset_for_science_package as science
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
-import typeset_for_time_package as time
+from . import typeset_for_activity_package as activity
+from . import typeset_for_cmip_package as cmip
+from . import typeset_for_data_package as data
+from . import typeset_for_designing_package as designing
+from . import typeset_for_drs_package as drs
+from . import typeset_for_iso_package as iso
+from . import typeset_for_platform_package as platform
+from . import typeset_for_science_package as science
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
+from . import typeset_for_time_package as time
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_activity_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_activity_package.py
index 4b6584d8..375f76e9 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_activity_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_activity_package.py
@@ -13,18 +13,17 @@
 import datetime
 import uuid
 
-import typeset_for_iso_package as iso
-import typeset_for_shared_package as shared
+from . import typeset_for_iso_package as iso
+from . import typeset_for_shared_package as shared
 
 
 
-class Activity(object):
+class Activity(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v2 type system.
 
     Base class for activities.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_cmip_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_cmip_package.py
index 58302987..6093ff61 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_cmip_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_cmip_package.py
@@ -13,9 +13,9 @@
 import datetime
 import uuid
 
-import typeset_for_activity_package as activity
-import typeset_for_data_package as data
-import typeset_for_shared_package as shared
+from . import typeset_for_activity_package as activity
+from . import typeset_for_data_package as data
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_data_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_data_package.py
index a9c1f16b..35cf8fb2 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_data_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_data_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_designing_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_designing_package.py
index 6a18a95d..634cef88 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_designing_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_designing_package.py
@@ -13,8 +13,8 @@
 import datetime
 import uuid
 
-import typeset_for_activity_package as activity
-import typeset_for_shared_package as shared
+from . import typeset_for_activity_package as activity
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_iso_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_iso_package.py
index e42388b1..386d7204 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_iso_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_iso_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_platform_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_platform_package.py
index c539aa00..f29c55ef 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_platform_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_platform_package.py
@@ -13,7 +13,7 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_science_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_science_package.py
index bb6f6298..02555898 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_science_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_science_package.py
@@ -13,8 +13,8 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
-import typeset_for_software_package as software
+from . import typeset_for_shared_package as shared
+from . import typeset_for_software_package as software
 
 
 
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_software_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_software_package.py
index db2f9670..1747192d 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_software_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_software_package.py
@@ -13,11 +13,11 @@
 import datetime
 import uuid
 
-import typeset_for_shared_package as shared
+from . import typeset_for_shared_package as shared
 
 
 
-class ComponentBase(object):
+class ComponentBase(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v2 type system.
 
     Base class for software component properties, whether a top level
@@ -28,7 +28,6 @@ class ComponentBase(object):
     scientific descriptions.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/cim/v2/typeset_for_time_package.py b/pyesdoc/ontologies/cim/v2/typeset_for_time_package.py
index 04f81c08..e9a0f0ef 100644
--- a/pyesdoc/ontologies/cim/v2/typeset_for_time_package.py
+++ b/pyesdoc/ontologies/cim/v2/typeset_for_time_package.py
@@ -73,7 +73,7 @@ def __str__(self):
 	    return "{}(offset {})".format(self.value, self.is_offset)
 
 
-class DatetimeSet(object):
+class DatetimeSet(object, metaclass=abc.ABCMeta):
     """An abstract class within the cim v2 type system.
 
     A set of times.
@@ -84,7 +84,6 @@ class DatetimeSet(object):
     which can only be dates.
 
     """
-    __metaclass__ = abc.ABCMeta
 
     def __init__(self):
         """Instance constructor.
diff --git a/pyesdoc/ontologies/utils.py b/pyesdoc/ontologies/utils.py
index 9d8dbf98..d699d905 100644
--- a/pyesdoc/ontologies/utils.py
+++ b/pyesdoc/ontologies/utils.py
@@ -73,7 +73,7 @@ def get_doc_type_keyset():
     :rtype: set
 
     """
-    return type_info.KEYS.values()
+    return list(type_info.KEYS.values())
 
 
 def get_type(name, version, package, typeof):
@@ -153,7 +153,7 @@ def get_decoder_info(doc_type):
     for name, _, cardinality in get_constraints(doc_type, constants.CONSTRAINT_TYPE_CARDINALITY):
         result[name] = (name, result[name], bool(cardinality.split(".")[1] == 'N'))
 
-    return result.values()
+    return list(result.values())
 
 
 def get_constraint(constraints, constraint_type):
diff --git a/pyesdoc/utils/compat.py b/pyesdoc/utils/compat.py
index 60b662cd..25ff1007 100644
--- a/pyesdoc/utils/compat.py
+++ b/pyesdoc/utils/compat.py
@@ -34,19 +34,19 @@
 # Python 2
 # ---------
 if is_py2:
-    from urllib import quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, proxy_bypass
-    from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag
+    from urllib.parse import quote, unquote, quote_plus, unquote_plus, urlencode
+    from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urldefrag
     from urllib2 import parse_http_list
-    import cookielib
-    from Cookie import Morsel
-    from StringIO import StringIO
+    import http.cookiejar
+    from http.cookies import Morsel
+    from io import StringIO
 
     builtin_str = str
     bytes = str
-    str = unicode
-    basestring = basestring
-    numeric_types = (int, long, float)
-    integer_types = (int, long)
+    str = str
+    str = str
+    numeric_types = (int, int, float)
+    integer_types = (int, int)
 
 # ---------
 # Python 3
@@ -61,6 +61,6 @@
     builtin_str = str
     str = str
     bytes = bytes
-    basestring = (str, bytes)
+    str = (str, bytes)
     numeric_types = (int, float)
     integer_types = (int,)
diff --git a/pyesdoc/utils/convert.py b/pyesdoc/utils/convert.py
index 2b0b02fd..986cb90e 100644
--- a/pyesdoc/utils/convert.py
+++ b/pyesdoc/utils/convert.py
@@ -41,15 +41,15 @@ def str_to_unicode(val):
 
     """
     if val is None:
-        return unicode()
-    if isinstance(val, unicode):
+        return str()
+    if isinstance(val, str):
         return val
 
     val = str(val).decode('utf-8').strip()
     if not len(val):
-        return unicode()
+        return str()
 
-    return unicode(val)
+    return str(val)
 
 
 def unicode_to_str(val):
@@ -64,8 +64,8 @@ def unicode_to_str(val):
     if val is None:
         return str()
 
-    if not isinstance(val, unicode):
-        val = unicode(val)
+    if not isinstance(val, str):
+        val = str(val)
 
     val = val.encode('utf-8').strip()
     if not len(val):
@@ -83,7 +83,7 @@ def capitalize(target):
     :rtype: str
 
     """
-    if not isinstance(target, (str, unicode)):
+    if not isinstance(target, str):
         raise TypeError()
 
     if len(target) == 0:
@@ -254,7 +254,7 @@ def dict_to_object(self, d):
 
 
     def unicode_to_datetime(self, d, k, v):
-        if isinstance(v, unicode) and len(v):
+        if isinstance(v, str) and len(v):
             try:
                 float(v)
             except ValueError:
@@ -271,7 +271,7 @@ def unicode_to_datetime(self, d, k, v):
 
 
     def unicode_to_uuid(self, d, k, v):
-        if isinstance(v, unicode) and len(v):
+        if isinstance(v, str) and len(v):
             try:
                 v = uuid.UUID(v)
             except ValueError:
@@ -388,7 +388,7 @@ def dict_to_namedtuple(d, key_formatter=None):
     if key_formatter is not None:
         d = key_formatter(d)
 
-    _Class = collections.namedtuple('_Class', d.keys())
+    _Class = collections.namedtuple('_Class', list(d.keys()))
 
     return _Class(**d)
 
@@ -414,8 +414,8 @@ def dict_keys(d, key_formatter=str_to_pascal_case):
     for k, v in d.items():
         if isinstance(v, dict):
             r[key_formatter(k)] = dict_keys(v, key_formatter)
-        elif isinstance(v, types.ListType):
-            r[key_formatter(k)] = map(lambda i: dict_keys(i, key_formatter), v)
+        elif isinstance(v, list):
+            r[key_formatter(k)] = [dict_keys(i, key_formatter) for i in v]
         else:
             r[key_formatter(k)] = v
 
@@ -508,7 +508,7 @@ def csv_file_to_dict(fp):
     :rtype: list
 
     """
-    return map(lambda r:r, csv.DictReader(open(fp)))
+    return [r for r in csv.DictReader(open(fp))]
 
 
 def csv_file_to_namedtuple(fp):
@@ -520,7 +520,7 @@ def csv_file_to_namedtuple(fp):
     :rtype: list
 
     """
-    return map(dict_to_namedtuple, csv.DictReader(open(fp)))
+    return list(map(dict_to_namedtuple, csv.DictReader(open(fp))))
 
 
 def csv_file_to_json(fp):
@@ -559,7 +559,7 @@ def text_to_typed_value(text, target_type):
     """
     # Encode text.
     if text is not None:
-        text = str_to_unicode(text) if isinstance(text, str) else unicode(text)
+        text = str_to_unicode(text) if isinstance(text, str) else str(text)
 
     # Decode according to type:
     # ... date's
@@ -571,7 +571,7 @@ def text_to_typed_value(text, target_type):
     # ... boolean's
     elif target_type is bool:
         return text.lower() in {"yes", "true", "t", "1", "y"}
-    elif target_type is unicode:
+    elif target_type is str:
         return text
     # ... others
     else:
@@ -579,4 +579,4 @@ def text_to_typed_value(text, target_type):
             return target_type(text)
         # ... exceptions
         except Exception as e:
-            print "Scalar decoding error", text, target_type
+            print("Scalar decoding error", text, target_type)
diff --git a/pyesdoc/utils/logger.py b/pyesdoc/utils/logger.py
index 76b6d927..69224954 100644
--- a/pyesdoc/utils/logger.py
+++ b/pyesdoc/utils/logger.py
@@ -16,7 +16,7 @@
 
 
 # Set of logging levels.
-LOG_LEVEL_DEBUG = 'DUBUG'
+LOG_LEVEL_DEBUG = 'DEBUG'
 LOG_LEVEL_INFO = 'INFO'
 LOG_LEVEL_WARNING = 'WARNING'
 LOG_LEVEL_ERROR = 'ERROR'
diff --git a/pyesdoc/utils/runtime.py b/pyesdoc/utils/runtime.py
index 912dffbb..69188bdd 100644
--- a/pyesdoc/utils/runtime.py
+++ b/pyesdoc/utils/runtime.py
@@ -80,4 +80,4 @@ def predicate(i):
         else:
             return False
 
-    return filter(predicate, collection)
+    return list(filter(predicate, collection))
diff --git a/setup.py b/setup.py
index ccc05ea5..017bd897 100755
--- a/setup.py
+++ b/setup.py
@@ -92,8 +92,8 @@ def _get_version():
         'License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.9',
         'Topic :: Software Development :: Libraries :: Python Modules',
     ]
 )
diff --git a/sh/doc_peek.py b/sh/doc_peek.py
index 66c1078c..4bb3a361 100644
--- a/sh/doc_peek.py
+++ b/sh/doc_peek.py
@@ -27,7 +27,7 @@ def _main():
     """
     doc = pyesdoc.read(options.file, options.encoding)
 
-    print pyesdoc.encode(doc, 'json')
+    print(pyesdoc.encode(doc, 'json'))
 
 
 # Entry point.


Test patch:
diff --git a/tests/test_archive.py b/tests/test_archive.py
index 7da49483..9d7b8079 100644
--- a/tests/test_archive.py
+++ b/tests/test_archive.py
@@ -11,7 +11,7 @@
 
 """
 import pyesdoc
-import test_utils as tu
+from . import test_utils as tu
 
 
 def _test_archive_config():
diff --git a/tests/test_extensions.py b/tests/test_extensions.py
index bffabc14..682b8b3a 100644
--- a/tests/test_extensions.py
+++ b/tests/test_extensions.py
@@ -14,8 +14,8 @@
 import nose
 
 import pyesdoc
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 
diff --git a/tests/test_factory.py b/tests/test_factory.py
index 7557554c..398d26c2 100644
--- a/tests/test_factory.py
+++ b/tests/test_factory.py
@@ -13,8 +13,8 @@
 # Module imports.
 import pyesdoc
 from pyesdoc.ontologies import cim
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 
diff --git a/tests/test_general.py b/tests/test_general.py
index 702d8c4c..e7733331 100644
--- a/tests/test_general.py
+++ b/tests/test_general.py
@@ -16,8 +16,8 @@
 import nose.tools
 
 import pyesdoc
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 
diff --git a/tests/test_publishing.py b/tests/test_publishing.py
index 2ec3a290..45c37d06 100644
--- a/tests/test_publishing.py
+++ b/tests/test_publishing.py
@@ -15,8 +15,8 @@
 import arrow
 import pyesdoc
 
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 # Testing mode.
diff --git a/tests/test_serialization.py b/tests/test_serialization.py
index 77650485..942bc61f 100644
--- a/tests/test_serialization.py
+++ b/tests/test_serialization.py
@@ -12,8 +12,8 @@
 """
 # Module imports.
 import pyesdoc
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 
diff --git a/tests/test_serialization_non_ascii.py b/tests/test_serialization_non_ascii.py
index d3358ea6..3ac71d6f 100644
--- a/tests/test_serialization_non_ascii.py
+++ b/tests/test_serialization_non_ascii.py
@@ -14,8 +14,8 @@
 import pyesdoc
 import pyesdoc.ontologies.cim as cim
 
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 
 
 
@@ -35,18 +35,18 @@ def _get_description(text_type):
             "grid. Due to its fine resolution, the model requires a timestep "
             "of 5 minutes to maintain numerical stability."
             )
-    elif text_type == unicode:
-        return (u"{AS PARENT with differences as indicated}\r\n"
-            u"The horizontal resolution is 0.44\xb0 x 0.44\xb0, which gives "
-            u"a minimum resolution of ~50 km at the Equator of the rotated "
-            u"grid. Due to its fine resolution, the model requires a timestep "
-            u"of 5 minutes to maintain numerical stability."
+    elif text_type == str:
+        return ("{AS PARENT with differences as indicated}\r\n"
+            "The horizontal resolution is 0.44\xb0 x 0.44\xb0, which gives "
+            "a minimum resolution of ~50 km at the Equator of the rotated "
+            "grid. Due to its fine resolution, the model requires a timestep "
+            "of 5 minutes to maintain numerical stability."
             ).encode('utf-8')
 
 
 def _do_test(encoding):
     """Executes a serialization test."""
-    for desc in (_get_description(t) for t in (str, unicode)):
+    for desc in _get_description(str):
         _MODEL.description = desc
         representation = pyesdoc.encode(_MODEL, encoding)
         tu.assert_object(representation, str)
diff --git a/tests/test_type_cim_v1_activity_ensemble_1.py b/tests/test_type_cim_v1_activity_ensemble_1.py
index 16917d24..c2c17075 100644
--- a/tests/test_type_cim_v1_activity_ensemble_1.py
+++ b/tests/test_type_cim_v1_activity_ensemble_1.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
@@ -54,12 +54,12 @@ def assert_extension_info(ext):
     :param object ext: Document extension information.
 
     """
-    tu.assert_str(ext.display_name, u"amip")
-    tu.assert_str(ext.description, u"Six element ensemble", True)
-    tu.assert_str(ext.full_display_name, u"CMIP5 Ensemble : MOHC - amip")
+    tu.assert_str(ext.display_name, "amip")
+    tu.assert_str(ext.description, "Six element ensemble", True)
+    tu.assert_str(ext.full_display_name, "CMIP5 Ensemble : MOHC - amip")
     tu.assert_int(ext.summary_fields, 2)
-    tu.assert_str(ext.summary_fields[0], u"amip")
-    tu.assert_str(ext.summary_fields[1], u"3.3 AMIP and AMIP Ensemble")
+    tu.assert_str(ext.summary_fields[0], "amip")
+    tu.assert_str(ext.summary_fields[1], "3.3 AMIP and AMIP Ensemble")
 
 
 def _assert_doc_core(doc, is_update):
diff --git a/tests/test_type_cim_v1_activity_ensemble_2.py b/tests/test_type_cim_v1_activity_ensemble_2.py
index 4579863c..3455dfc3 100644
--- a/tests/test_type_cim_v1_activity_ensemble_2.py
+++ b/tests/test_type_cim_v1_activity_ensemble_2.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_activity_numerical_experiment.py b/tests/test_type_cim_v1_activity_numerical_experiment.py
index d8d5815f..61c4c470 100644
--- a/tests/test_type_cim_v1_activity_numerical_experiment.py
+++ b/tests/test_type_cim_v1_activity_numerical_experiment.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_activity_simulation_run.py b/tests/test_type_cim_v1_activity_simulation_run.py
index af956279..466e3258 100644
--- a/tests/test_type_cim_v1_activity_simulation_run.py
+++ b/tests/test_type_cim_v1_activity_simulation_run.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_data_data_object_1.py b/tests/test_type_cim_v1_data_data_object_1.py
index c3d931f6..9b6df0b7 100644
--- a/tests/test_type_cim_v1_data_data_object_1.py
+++ b/tests/test_type_cim_v1_data_data_object_1.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_data_data_object_2.py b/tests/test_type_cim_v1_data_data_object_2.py
index cefebeaf..55cfb8fd 100644
--- a/tests/test_type_cim_v1_data_data_object_2.py
+++ b/tests/test_type_cim_v1_data_data_object_2.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_grids_gridspec.py b/tests/test_type_cim_v1_grids_gridspec.py
index c29f9c0b..d1d9c9cc 100644
--- a/tests/test_type_cim_v1_grids_gridspec.py
+++ b/tests/test_type_cim_v1_grids_gridspec.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_misc_document_set.py b/tests/test_type_cim_v1_misc_document_set.py
index 5913109f..db9b55dc 100644
--- a/tests/test_type_cim_v1_misc_document_set.py
+++ b/tests/test_type_cim_v1_misc_document_set.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_quality_cim_quality.py b/tests/test_type_cim_v1_quality_cim_quality.py
index 6c8b83a4..288ed608 100644
--- a/tests/test_type_cim_v1_quality_cim_quality.py
+++ b/tests/test_type_cim_v1_quality_cim_quality.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_shared_platform.py b/tests/test_type_cim_v1_shared_platform.py
index 6ebfdab0..0bd2f2dd 100644
--- a/tests/test_type_cim_v1_shared_platform.py
+++ b/tests/test_type_cim_v1_shared_platform.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_software_model_component_1.py b/tests/test_type_cim_v1_software_model_component_1.py
index 13317fb5..9fc68d0d 100644
--- a/tests/test_type_cim_v1_software_model_component_1.py
+++ b/tests/test_type_cim_v1_software_model_component_1.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_software_model_component_2.py b/tests/test_type_cim_v1_software_model_component_2.py
index 0386dd8f..8eb373b0 100644
--- a/tests/test_type_cim_v1_software_model_component_2.py
+++ b/tests/test_type_cim_v1_software_model_component_2.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
diff --git a/tests/test_type_cim_v1_software_statistical_model_component.py b/tests/test_type_cim_v1_software_statistical_model_component.py
index 4c9865eb..cdb40fd4 100644
--- a/tests/test_type_cim_v1_software_statistical_model_component.py
+++ b/tests/test_type_cim_v1_software_statistical_model_component.py
@@ -13,7 +13,7 @@
 import arrow
 
 import pyesdoc.ontologies.cim as cim
-import test_utils as tu
+from . import test_utils as tu
 
 
 
@@ -83,7 +83,7 @@ def assert_doc(doc, meta, ext):
     assert doc.language is None
     assert doc.license is None
     assert doc.long_name == "IPSL-CM5A-LR;atmosphere:LMDZ5A(95x96L39);ocean:NEMOv3.2 (OPA-LIM-PISCES,149x182L31)"
-    assert doc.previous_version == unicode()
+    assert doc.previous_version == str()
     assert doc.release_date == arrow.get('2010', 'YYYY').datetime
     assert doc.short_name == 'IPSL-CM5A-LR'
     assert doc.types[0] == 'downscaling'
diff --git a/tests/test_types.py b/tests/test_types.py
index 85a65cd8..3487afe7 100644
--- a/tests/test_types.py
+++ b/tests/test_types.py
@@ -11,19 +11,19 @@
 
 """
 # Module imports.
-import test_type_cim_v1_activity_ensemble_1
-import test_type_cim_v1_activity_ensemble_2
-import test_type_cim_v1_activity_numerical_experiment
-import test_type_cim_v1_activity_simulation_run
-import test_type_cim_v1_data_data_object_1
-import test_type_cim_v1_data_data_object_2
-import test_type_cim_v1_grids_gridspec
-import test_type_cim_v1_misc_document_set
-import test_type_cim_v1_quality_cim_quality
-import test_type_cim_v1_shared_platform
-import test_type_cim_v1_software_model_component_1
-import test_type_cim_v1_software_model_component_2
-import test_type_cim_v1_software_statistical_model_component
+from . import test_type_cim_v1_activity_ensemble_1
+from . import test_type_cim_v1_activity_ensemble_2
+from . import test_type_cim_v1_activity_numerical_experiment
+from . import test_type_cim_v1_activity_simulation_run
+from . import test_type_cim_v1_data_data_object_1
+from . import test_type_cim_v1_data_data_object_2
+from . import test_type_cim_v1_grids_gridspec
+from . import test_type_cim_v1_misc_document_set
+from . import test_type_cim_v1_quality_cim_quality
+from . import test_type_cim_v1_shared_platform
+from . import test_type_cim_v1_software_model_component_1
+from . import test_type_cim_v1_software_model_component_2
+from . import test_type_cim_v1_software_statistical_model_component
 
 
 # Set of test modules.
diff --git a/tests/test_utils.py b/tests/test_utils.py
index ecb82202..1b9f320b 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -19,7 +19,7 @@
 
 import pyesdoc
 import pyesdoc.ontologies.cim.v1.typeset as cim_v1
-import test_types as tt
+from . import test_types as tt
 
 
 
@@ -214,7 +214,7 @@ def get_unicode(length):
     """Returns a random unicode for testing purposes.
 
     """
-    return unicode(uuid.uuid1())[:length]
+    return str(uuid.uuid1())[:length]
 
 
 def get_uuid():
@@ -281,7 +281,7 @@ def assert_iter(collection,
         assert_int(len(collection), length, length_compare)
     if item_type is not None:
         if isinstance(collection, dict):
-            collection = collection.values()
+            collection = list(collection.values())
         for instance in collection:
             assert_object(instance, item_type)
 
@@ -404,8 +404,8 @@ def assert_unicode(actual, expected):
     :type expected: str
 
     """
-    assert_object(actual, unicode)
-    assert_object(expected, unicode)
+    assert_object(actual, str)
+    assert_object(expected, str)
     assert actual == expected, \
            "Unicode mismatch : actual = {0} :: expected = {1}" \
            .format(actual, expected)
diff --git a/tests/test_validation.py b/tests/test_validation.py
index 6b735a04..56e3cfdc 100644
--- a/tests/test_validation.py
+++ b/tests/test_validation.py
@@ -12,8 +12,8 @@
 """
 # Module imports.
 import pyesdoc
-import test_utils as tu
-import test_types as tt
+from . import test_utils as tu
+from . import test_types as tt
 from pyesdoc.utils import runtime as rt