Repository: pyscal/atomRDF (language: python)

Issue:
Further revamp workflows



Discussion / hints:

Fix patch:
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 5038855..bc0fcc1 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 0.5.4
+current_version = 0.5.5
 commit = True
 tag = False
 
diff --git a/CITATION.cff b/CITATION.cff
index a7be805..3da4bc0 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -20,4 +20,4 @@ url: 'https://atomrdf.pyscal.org'
 license: "MIT"
 repository-code: https://github.com/pyscal/atomRDF
 type: software
-version: 0.5.4
+version: 0.5.5
diff --git a/atomrdf/data/dft_template.yml b/atomrdf/data/dft_template.yml
new file mode 100644
index 0000000..af995ca
--- /dev/null
+++ b/atomrdf/data/dft_template.yml
@@ -0,0 +1,29 @@
+method: DensityFunctionalTheory
+temperature: 100
+pressure: 0
+dof:
+- AtomicPositions
+- CellVolume
+id: 2314
+xcfunctional: LDA
+workflow_manager:
+  uri: xxxx
+  label: pyiron
+software:
+- uri: xxxx
+  label: lammps
+- uri: xxxx
+  label: pyscal
+outputs:
+- label: TotalEnergy
+  value: 2.301
+  unit: EV
+  associate_to_sample: True
+- label: TotalVolume
+  value: 23.01
+  unit: ANGSTROM3
+  associate_to_sample: True
+inputs:
+- label: AnotherInput
+  value: 0.1
+  unit: None
diff --git a/atomrdf/data/md_template.yml b/atomrdf/data/md_template.yml
new file mode 100644
index 0000000..d938133
--- /dev/null
+++ b/atomrdf/data/md_template.yml
@@ -0,0 +1,34 @@
+method: MolecularStatics
+temperature: 100
+pressure: 0
+dof:
+- AtomicPositions
+- CellVolume
+ensemble: NPT
+id: 2314
+potential:
+  uri: https://doi.org/xxx
+  type: eam
+  label: string
+workflow_manager:
+  uri: xxxx
+  label: pyiron
+software:
+- uri: xxxx
+  label: lammps
+- uri: xxxx
+  label: pyscal
+outputs:
+- label: TotalEnergy
+  value: 2.301
+  unit: EV
+  associate_to_sample: True
+- label: TotalVolume
+  value: 23.01
+  unit: ANGSTROM3
+  associate_to_sample: True
+inputs:
+- label: AnotherInput
+  value: 0.1
+  unit: None
+
diff --git a/atomrdf/graph.py b/atomrdf/graph.py
index 1490b63..e94a4a6 100644
--- a/atomrdf/graph.py
+++ b/atomrdf/graph.py
@@ -128,6 +128,7 @@ def __init__(self, graph_file=None,
         self._atom_ids = None
         self.store = store
         self._n_triples = 0
+        self._initialize_graph()
 
     
     def add_structure(self, structure):
@@ -180,19 +181,19 @@ def _check_domain_if_uriref(self, triple):
                             break
         return found, dm
 
-    def _check_domain_if_ontoterm(self, triple):
-        found = True
-        domain = triple[0].domain
-        if len(domain) > 0:
-            if 'owl:Thing' not in domain:
-                if triple[1].namespace != triple[0].namespace:
-                    #cross ontology term
-                    self.log(f'ignoring possible cross ontology connection between {triple[1].namespace} and {triple[0].namespace}')
-                    return True, None
-                found = False
-                if triple[1].name in domain:
-                    found = True
-        return found, triple[0].name
+#    def _check_domain_if_ontoterm(self, triple):
+#        found = True
+#        domain = triple[0].domain
+#        if len(domain) > 0:
+#            if 'owl:Thing' not in domain:
+#                if triple[1].namespace != triple[0].namespace:
+#                    #cross ontology term
+#                    self.log(f'ignoring possible cross ontology connection between {triple[1].namespace} and {triple[0].namespace}')
+#                    return True, None
+#                found = False
+#                if triple[1].name in domain:
+#                    found = True
+#        return found, triple[0].name
         
     
     def _check_domain(self, triple):
@@ -204,8 +205,8 @@ def _check_domain(self, triple):
             if type(triple[0]).__name__ == 'URIRef': 
                 found, dm = self._check_domain_if_uriref(triple)
 
-            elif self._is_ontoterm(triple[0]):
-                found, dm = self._check_domain_if_ontoterm(triple)
+            #elif self._is_ontoterm(triple[0]):
+            #    found, dm = self._check_domain_if_ontoterm(triple)
 
             if not found:
                 raise ValueError(f'{dm} not in domain of {triple[1].name}')
@@ -234,20 +235,20 @@ def _check_range_if_uriref(self, triple):
                             break
         return found, rn
 
-    def _check_range_if_ontoterm(self, triple):
-        found = True
-        rang = triple[1].range
-        if len(rang) > 0:
-            if 'owl:Thing' not in rang:
-                if triple[1].namespace != triple[2].namespace:
-                    #cross ontology term
-                    self.log(f'ignoring possible cross ontology connection between {triple[1].namespace} and {triple[2].namespace}')
-                    return True, None
-
-                found = False
-                if triple[2].name in rang:
-                    found = True
-        return found, triple[2].name
+#    def _check_range_if_ontoterm(self, triple):
+#        found = True
+#        rang = triple[1].range
+#        if len(rang) > 0:
+#            if 'owl:Thing' not in rang:
+#                if triple[1].namespace != triple[2].namespace:
+#                    #cross ontology term
+#                    self.log(f'ignoring possible cross ontology connection between {triple[1].namespace} and {triple[2].namespace}')
+#                    return True, None
+#
+#                found = False
+#                if triple[2].name in rang:
+#                    found = True
+#        return found, triple[2].name
 
 
     def _check_range_if_literal(self, triple):
@@ -280,8 +281,8 @@ def _check_range(self, triple):
             if type(triple[2]).__name__ == 'URIRef': 
                 found, dm = self._check_range_if_uriref(triple)
 
-            elif self._is_ontoterm(triple[2]):
-                found, dm = self._check_range_if_ontoterm(triple)
+            #elif self._is_ontoterm(triple[2]):
+            #    found, dm = self._check_range_if_ontoterm(triple)
 
             elif type(triple[2]).__name__ == 'Literal':
                 found, dm = self._check_range_if_literal(triple)
@@ -363,7 +364,7 @@ def _initialize_graph(self):
         
         self.add((CMSO.LatticeVector, RDFS.subClassOf, CMSO.Vector))
         self.add((CMSO.SimulationCellVector, RDFS.subClassOf, CMSO.Vector))
-        self.add((CMSO.PositionVector, RDFS.subClassOf, CMSO.Vector))
+        #self.add((CMSO.PositionVector, RDFS.subClassOf, CMSO.Vector))
         self.add((CMSO.Vector, CMSO.hasUnit, URIRef("http://qudt.org/vocab/unit/ANGSTROM")))
         
 
@@ -376,13 +377,14 @@ def add_calculated_quantity(self, sample, propertyname, value, unit=None):
             self.add((prop, CMSO.hasUnit, URIRef(f'http://qudt.org/vocab/unit/{unit}')))
 
 
-    def inspect_sample(self):
+    def inspect_sample(self, sample):
         natoms = self.value(sample, CMSO.hasNumberOfAtoms).toPython()
         material = list([k[2] for k in self.triples((sample, CMSO.hasMaterial, None))])[0]
         defects = list([k[2] for k in self.triples((material, CMSO.hasDefect, None))])
         composition = list([k[2].toPython() for k in self.triples((material, CMSO.hasElementRatio, None))])
         crystalstructure = self.value(material, CMSO.hasStructure)
-        spacegroupsymbol = self.value(crystalstructure, CMSO.hasSpaceGroupSymbol).toPython()
+        spacegroup = self.value(crystalstructure, CMSO.hasSpaceGroup)
+        spacegroupsymbol = self.value(spacegroup, CMSO.hasSpaceGroupSymbol).toPython()
 
         lattice = self.value(sample, CMSO.hasNumberOfAtoms).toPython()
         defect_types = list([self.value(d, RDF.type).toPython() for d in defects])
@@ -557,7 +559,7 @@ def archive(self, package_name, format='turtle', compress=True):
             
                 #assign corrected path
                 new_relpath = "/".join(['rdf_structure_store', filepath.split('/')[-1]])
-                self.graph.add((URIRef(f'{sample}_{val}'), CMSO.hasPath, Literal(new_relpath, datatype=XSD.string)))
+                self.add((URIRef(f'{sample}_{val}'), CMSO.hasPath, Literal(new_relpath, datatype=XSD.string)))
 
         triple_file = os.path.join(package_name, 'triples')
         self.write(triple_file, format=format)
@@ -731,7 +733,7 @@ def get_system_from_sample(self, sample):
         sys.atoms = at       
         return sys
 
-    def to_file(self, sample, filename=None, format="lammps-dump"):
+    def to_file(self, sample, filename=None, format="poscar"):
         """
         Save a given sample to a file
 
diff --git a/atomrdf/properties.py b/atomrdf/properties.py
index 6d35d94..16c493f 100644
--- a/atomrdf/properties.py
+++ b/atomrdf/properties.py
@@ -80,19 +80,19 @@ def get_basis_positions(system):
         return system._structure_dict["positions"]
     return None
 
-def get_basis_occupancy(system):
-    if system._structure_dict is None:
-        return None
-
-    if "species" in system._structure_dict.keys():
-        occ_numbers = system._structure_dict['species']
-        tdict = system.atoms._type_dict
-        vals = [val for key, val in tdict.items()]
+#def get_basis_occupancy(system):
+#    if system._structure_dict is None:
+#        return None
+
+#    if "species" in system._structure_dict.keys():
+#        occ_numbers = system._structure_dict['species']
+#        tdict = system.atoms._type_dict
+#        vals = [val for key, val in tdict.items()]
         
-        if vals[0] is not None:
-            occ_numbers = [tdict[x] for x in occ_numbers]
-        return occ_numbers
-    return None
+#        if vals[0] is not None:
+#            occ_numbers = [tdict[x] for x in occ_numbers]
+#        return occ_numbers
+#    return None
 
 def get_lattice_vector(system):
     if system._structure_dict is None:
diff --git a/atomrdf/structure.py b/atomrdf/structure.py
index 38187de..9a1f72e 100644
--- a/atomrdf/structure.py
+++ b/atomrdf/structure.py
@@ -598,7 +598,7 @@ def add_interstitial_impurities(self, element, void_type='tetrahedral', lattice_
             self.graph.remove((chemical_species, None, None))
             self.graph.remove((self.sample, CMSO.hasSpecies, None))
             
-            composition = self.schema.material.element_ratio()
+            composition = sysn.schema.material.element_ratio()
             valid = False
             for e, r in composition.items():
                 if e in element_indetifiers.keys():
diff --git a/atomrdf/visualize.py b/atomrdf/visualize.py
index 281bd1c..881ac40 100644
--- a/atomrdf/visualize.py
+++ b/atomrdf/visualize.py
@@ -35,11 +35,7 @@ def get_string_from_URI(x):
     #just a normal url split now
     rawsplit = raw.split("/")
     if len(rawsplit) > 1:
-        return ".".join(rawsplit[-2:]), "URIRef"
-
-    rawsplit = raw.split(':')
-    if len(rawsplit) == 2:
-        return "_".join(rawsplit), "BNode"        
+        return ".".join(rawsplit[-2:]), "URIRef"  
 
     #none of the conditions, worked, which means its a hex string
     return raw, "BNode"
diff --git a/atomrdf/workflow/pyiron.py b/atomrdf/workflow/pyiron.py
index 8a01032..fd0b90a 100644
--- a/atomrdf/workflow/pyiron.py
+++ b/atomrdf/workflow/pyiron.py
@@ -83,13 +83,12 @@ def _identify_method(job):
         ensemble = 'IsothermalisobaricEnsemble'
 
     mdict = {}
-    mdict['md'] = {}
-    mdict['md']['method'] = md_method
-    mdict['md']['temperature'] = temp
-    mdict['md']['pressure'] = press
-    mdict['md']['dof'] = dof
-    mdict['md']['ensemble'] = ensemble
-    mdict['md']['id'] = job.id
+    mdict['method'] = md_method
+    mdict['temperature'] = temp
+    mdict['pressure'] = press
+    mdict['dof'] = dof
+    mdict['ensemble'] = ensemble
+    mdict['id'] = job.id
 
     #now process potential
     inpdict = job.input.to_dict()
@@ -101,47 +100,44 @@ def _identify_method(job):
     if 'url' in potdict[list(potdict.keys())[0]].keys():
         url = potdict[list(potdict.keys())[0]]['url']
 
-    mdict['md']['potential'] = {}
-    mdict['md']['potential']['type'] = ps
-    mdict['md']['potential']['label'] = name
+    mdict['potential'] = {}
+    mdict['potential']['type'] = ps
+    mdict['potential']['label'] = name
     if url is not None:
-        mdict['md']['potential']['uri'] = url
+        mdict['potential']['uri'] = url
     else:
-        mdict['md']['potential']['uri'] = name
+        mdict['potential']['uri'] = name
 
     
-    mdict['md']['workflow_manager'] = {}
-    mdict['md']['workflow_manager']['uri'] = "http://demo.fiz-karlsruhe.de/matwerk/E457491"
-    mdict['md']['workflow_manager']['label'] = "pyiron"
+    mdict['workflow_manager'] = {}
+    mdict['workflow_manager']['uri'] = "http://demo.fiz-karlsruhe.de/matwerk/E457491"
+    mdict['workflow_manager']['label'] = "pyiron"
     #and finally code details
 
     
     software = {'uri':"http://demo.fiz-karlsruhe.de/matwerk/E447986", 
     'label':'LAMMPS'}
-    mdict['md']['software'] = [software]
+    mdict['software'] = [software]
 
     #finally add calculated quantities
     quantdict = extract_calculated_quantities(job)
-    mdict['md']['outputs'] = quantdict
+    mdict['outputs'] = quantdict
     return mdict
 
 
 def extract_calculated_quantities(job):
     aen = np.mean(job.output.energy_tot)
     avol = np.mean(job.output.volume)
-    outdict = {}
-    outdict['TotalEnergy'] = {}
-    outdict['TotalEnergy']['value'] = np.round(aen, decimals=4)
-    outdict['TotalEnergy']['unit'] = 'EV'
-    outdict['TotalEnergy']['associate_to_sample'] = True
-
-
-    outdict['TotalVolume'] = {}
-    outdict['TotalVolume']['value'] = np.round(avol, decimals=4)
-    outdict['TotalVolume']['unit'] = 'ANGSTROM3'
-    outdict['TotalVolume']['associate_to_sample'] = True 
-
-    return outdict
+    outputs = []
+    outputs.append({'label': 'TotalEnergy', 
+        'value': np.round(aen, decimals=4), 
+        'unit': 'EV',
+        'associate_to_sample': True})
+    outputs.append({'label': 'TotalVolume', 
+        'value': np.round(avol, decimals=4), 
+        'unit': 'ANGSTROM3',
+        'associate_to_sample': True})
+    return outputs
 
 
 
diff --git a/atomrdf/workflow/workflow.py b/atomrdf/workflow/workflow.py
index ff0b3cc..17014e6 100644
--- a/atomrdf/workflow/workflow.py
+++ b/atomrdf/workflow/workflow.py
@@ -14,7 +14,7 @@
 See atomrdf.workflow.pyiron for more details
 """
 
-from rdflib import Graph, Literal, Namespace, XSD, RDF, RDFS, BNode, URIRef, FOAF, SKOS, DCTERMS
+from rdflib import Literal, Namespace, XSD, RDF, RDFS, BNode, URIRef
 
 import warnings
 import numpy as np
@@ -49,9 +49,10 @@ def __init__(self, kg,
         if environment == 'pyiron':
             self.wenv = pi
         else:
-            raise ValueError('unknow workflow environment')
+            raise ValueError('unknown workflow environment')
 
     def _prepare_job(self, workflow_object):
+
         self.wenv._check_if_job_is_valid(workflow_object)
         parent_structure, parent_sample, structure, sample = self.wenv._add_structures(workflow_object)
         method_dict = self.wenv._identify_method(workflow_object)
@@ -67,13 +68,15 @@ def _prepare_job(self, workflow_object):
         
         if parent_sample is None:
             #its not added to graph yet
-            parent_structure.graph = self.kg
-            parent_structure.to_graph()
-            parent_sample = parent_structure.sample
+            if parent_structure is not None:
+                parent_structure.graph = self.kg
+                parent_structure.to_graph()
+                parent_sample = parent_structure.sample
 
         self.structure = structure
         self.sample = sample
         self.mdict = method_dict
+        self.main_id = method_dict['id']
         self.parent_sample = parent_sample
 
     def _get_lattice_properties(self, ):
@@ -122,19 +125,19 @@ def _add_inherited_properties(self, ):
 
         for defect in parent_defects:
             new_defect = URIRef(defect.toPython())
-            self.kg.graph.add((material, CMSO.hasDefect, new_defect))
+            self.kg.add((material, CMSO.hasDefect, new_defect))
             #now fetch all defect based info
             for triple in self.kg.triples((defect, None, None)):
-                self.kg.graph.add((new_defect, triple[1], triple[2]))
+                self.kg.add((new_defect, triple[1], triple[2]))
 
         #now add the special props for vacancy
         parent_simcell = self.kg.value(self.sample, CMSO.hasSimulationCell)
         simcell = self.kg.value(self.parent_sample, CMSO.hasSimulationCell) 
         
         for triple in self.kg.triples((parent_simcell, PODO.hasVacancyConcentration, None)):
-            self.kg.graph.add((simcell, triple[1], triple[2]))
+            self.kg.add((simcell, triple[1], triple[2]))
         for triple in self.kg.triples((parent_simcell, PODO.hasNumberOfVacancies, None)):
-            self.kg.graph.add((simcell, triple[1], triple[2]))
+            self.kg.add((simcell, triple[1], triple[2]))
 
 
 
@@ -152,140 +155,131 @@ def add_method(self, ):
         mdict
         -----
         md:
-           method: MolecularStatics
-           temperature: 100
-           pressure: 0
-           dof:
-             - AtomicPositions
-             - CellVolume
-           ensemble: NPT
-           id: 2314
-           potential:
-             uri: https://doi.org/xxx
-             type: eam
-             label: string
-           workflow_manager:
-             uri: xxxx
-             label: pyiron
-           software:
-           - uri: xxxx
-             label: lammps
-           - uri: xxxx
-             label: pyscal
 
         """
         if self.mdict is None:
             return
-
-        if 'md' in self.mdict.keys():
-            method_type = 'md'
-            mdict = self.mdict['md']
-        elif 'dft' in self.mdict.keys():
-            method_type = 'dft'
-            mdict = self.mdict['dft']
-        else:
-            raise KeyError('method dict keys should be either md or dft')
-
         
         #add activity
-        main_id = mdict['id']
-        activity = URIRef(f'activity:{main_id}')
+        #----------------------------------------------------------
+        activity = URIRef(f'activity_{self.main_id}')
         self.kg.add((activity, RDF.type, PROV.Activity))
 
-        #method, this is specific to dft/md
-        if method_type == 'md':
-            method = URIRef(f'method:{main_id}')
-            if mdict['method'] == 'MolecularStatics':
-                self.kg.add((method, RDF.type, ASMO.MolecularStatics))
-            elif mdict['method'] == 'MolecularDynamics':
-                self.kg.add((method, RDF.type, ASMO.MolecularDynamics))
-        elif method_type == 'dft':
-            method = URIRef(f'method:{main_id}')
-            if mdict['method'] == 'DensityFunctionalTheory':
-                self.kg.add((method, RDF.type, ASMO.DensityFunctionalTheory))
+        #add method
+        #----------------------------------------------------------
+        method = URIRef(f'method_{self.main_id}')
+        if self.mdict['method'] == 'MolecularStatics':
+            self.kg.add((method, RDF.type, ASMO.MolecularStatics))
+        elif self.mdict['method'] == 'MolecularDynamics':
+            self.kg.add((method, RDF.type, ASMO.MolecularDynamics))
+        elif self.mdict['method'] == 'DensityFunctionalTheory':
+            self.kg.add((method, RDF.type, ASMO.DensityFunctionalTheory))
         self.kg.add((activity, ASMO.hasComputationalMethod, method))
 
-        if len(mdict['dof']) == 0:
-            self.kg.add((activity, RDF.type, ASMO.RigidEnergyCalculation))
+        #choose if its rigid energy or structure optimisation
+        #----------------------------------------------------------        
+        if len(self.mdict['dof']) == 0:
+            self.kg.add((activity, RDF.type, Namespace("http://purls.helmholtz-metadaten.de/asmo/").RigidEnergyCalculation))
         else:
             self.kg.add((activity, RDF.type, ASMO.StructureOptimization))
-
-        for dof in mdict['dof']:
+        #add DOFs
+        for dof in self.mdict['dof']:
             self.kg.add((activity, ASMO.hasRelaxationDOF, getattr(ASMO, dof)))
 
-        if method_type == 'md':
-            self.kg.add((method, ASMO.hasStatisticalEnsemble, getattr(ASMO, mdict['ensemble'])))
-
-            #add temperature if needed
-            if mdict['temperature'] is not None:
-                temperature = URIRef(f'temperature:{main_id}')
-                self.kg.add((temperature, RDF.type, ASMO.InputParameter))
-                self.kg.add((temperature, RDFS.label, Literal('temperature', datatype=XSD.string)))
-                self.kg.add((activity, ASMO.hasInputParameter, temperature))
-                self.kg.add((temperature, ASMO.hasValue, Literal(mdict['temperature'], datatype=XSD.float)))
-                self.kg.add((temperature, ASMO.hasUnit, URIRef('http://qudt.org/vocab/unit/K')))
-
-            if mdict['pressure'] is not None:
-                pressure = URIRef(f'pressure:{main_id}')
-                self.kg.add((pressure, RDF.type, ASMO.InputParameter))
-                self.kg.add((pressure, RDFS.label, Literal('pressure', datatype=XSD.string)))
-                self.kg.add((activity, ASMO.hasInputParameter, pressure))
-                self.kg.add((pressure, ASMO.hasValue, Literal(mdict['pressure'], datatype=XSD.float)))
-                self.kg.add((pressure, ASMO.hasUnit, URIRef('http://qudt.org/vocab/unit/GigaPA')))
-
-            #potentials need to be mapped
-            potential = URIRef(f'potential:{main_id}')
-            if 'meam' in mdict['potential']['type']:
-                self.kg.add((potential, RDF.type, ASMO.ModifiedEmbeddedAtomModel))
-            elif 'eam' in mdict['potential']['type']:
-                self.kg.add((potential, RDF.type, ASMO.EmbeddedAtomModel))
-            elif 'lj' in mdict['potential']['type']:
-                self.kg.add((potential, RDF.type, ASMO.LennardJonesPotential))
-            elif 'ace' in mdict['potential']['type']:
-                self.kg.add((potential, RDF.type, ASMO.MachineLearningPotential))
-            else:
-                self.kg.add((potential, RDF.type, ASMO.InteratomicPotential))
+        #add method specific items
+        if self.mdict['method'] in ['MolecularStatics', 'MolecularDynamics']:
+            self._add_md(method, activity)
+        elif self.mdict['method'] in ['DensityFunctionalTheory']:
+            self._add_dft(method, activity)
 
-            if 'uri' in mdict['potential'].keys():
-                self.kg.add((potential, CMSO.hasReference, Literal(mdict['potential']['uri'], datatype=XSD.string)))
-            if 'label' in mdict['potential'].keys():
-                self.kg.add((potential, RDFS.label, Literal(mdict['potential']['label'])))
+        #add that structure was generated
+        self.kg.add((self.sample, PROV.wasGeneratedBy, activity))
+        self._add_inputs(activity)
+        self._add_outputs(activity)
+        self._add_software(method)     
 
-            self.kg.add((method, ASMO.hasInteratomicPotential, potential))
 
-        self.kg.add((self.sample, PROV.wasGeneratedBy, activity))
+    def to_graph(self, workflow_object):
+        self._prepare_job(workflow_object)
+        self.add_structural_relation()
+        self.add_method()
 
+    
+    def _add_outputs(self, activity):
+        if 'outputs' in self.mdict.keys():
+            for out in self.mdict['outputs']:
+                prop = self.kg.create_node(f'{self.main_id}_{out["label"]}', CMSO.CalculatedProperty)
+                self.kg.add((prop, RDFS.label, Literal(out['label'])))
+                self.kg.add((prop, ASMO.hasValue, Literal(out["value"])))
+                if "unit" in out.keys():
+                    unit = out['unit']
+                    self.kg.add((prop, ASMO.hasUnit, URIRef(f'http://qudt.org/vocab/unit/{unit}')))
+                self.kg.add((prop, ASMO.wasCalculatedBy, activity))
+                if out['associate_to_sample']:
+                    self.kg.add((self.sample, CMSO.hasCalculatedProperty, prop))
+
+    def _add_inputs(self, activity):
+        if 'inputs' in self.mdict.keys():
+            for inp in self.mdict['inputs']:
+                prop = self.kg.create_node(f'{self.main_id}_{inp["label"]}', ASMO.InputParameter)
+                self.kg.add((prop, RDFS.label, Literal(inp['label'])))
+                self.kg.add((prop, ASMO.hasValue, Literal(inp["value"])))
+                if "unit" in inp.keys():
+                    unit = inp['unit']
+                    self.kg.add((prop, ASMO.hasUnit, URIRef(f'http://qudt.org/vocab/unit/{unit}')))
+                self.kg.add((activity, ASMO.hasInputParameter, prop))
+
+    def _add_software(self, method):
         #finally add software
         wfagent = None
-        if 'workflow_manager' in mdict.keys():
-            wfagent = URIRef(mdict["workflow_manager"]['uri'])
-            self.kg.add((wfagent, RDF.type, PROV.SoftwareAgent))
-            self.kg.add((wfagent, RDFS.label, Literal(mdict["workflow_manager"]['label'])))
+        if 'workflow_manager' in self.mdict.keys():
+            wfagent = self.kg.create_node(self.mdict["workflow_manager"]['uri'], PROV.SoftwareAgent)
+            self.kg.add((wfagent, RDFS.label, Literal(self.mdict["workflow_manager"]['label'])))
             self.kg.add((method, PROV.wasAssociatedWith, wfagent))
-        
-        for software in mdict['software']:
-            agent = URIRef(software['uri'])
-            self.kg.add((agent, RDF.type, PROV.SoftwareAgent))
-            self.kg.add((agent, RDFS.label, Literal(software['label'])))
 
+        for software in self.mdict['software']:
+            agent = self.kg.create_node(software['uri'], PROV.SoftwareAgent)
+            self.kg.add((agent, RDFS.label, Literal(software['label'])))
             if wfagent is not None:
                 self.kg.add((wfagent, PROV.actedOnBehalfOf, agent))
             else:
                 self.kg.add((method, PROV.wasAssociatedWith, agent))
 
-        for key, val in mdict['outputs'].items():
-            prop = URIRef(f'{main_id}_{key}')
-            self.kg.add((prop, RDF.type, CMSO.CalculatedProperty))
-            self.kg.add((prop, RDFS.label, Literal(key)))
-            self.kg.add((prop, ASMO.hasValue, Literal(val["value"])))
-            if "unit" in val.keys():
-                unit = val['unit']
-                self.kg.add((prop, ASMO.hasUnit, URIRef(f'http://qudt.org/vocab/unit/{unit}')))
-            self.kg.add((prop, ASMO.wasCalculatedBy, activity))
-            if val['associate_to_sample']:
-                self.kg.add((self.sample, CMSO.hasCalculatedProperty, prop))
 
-    def to_graph(self, workflow_object):
-        self._prepare_job(workflow_object)
-        self.add_structural_relation()
-        self.add_method()
+    def _add_md(self, method, activity):
+        self.kg.add((method, ASMO.hasStatisticalEnsemble, getattr(ASMO, self.mdict['ensemble'])))
+
+        #add temperature if needed
+        if self.mdict['temperature'] is not None:
+            temperature = self.kg.create_node(f'temperature_{self.main_id}', ASMO.InputParameter)
+            self.kg.add((temperature, RDFS.label, Literal('temperature', datatype=XSD.string)))
+            self.kg.add((activity, ASMO.hasInputParameter, temperature))
+            self.kg.add((temperature, ASMO.hasValue, Literal(self.mdict['temperature'], datatype=XSD.float)))
+            self.kg.add((temperature, ASMO.hasUnit, URIRef('http://qudt.org/vocab/unit/K')))
+
+        if self.mdict['pressure'] is not None:
+            pressure = self.kg.create_node(f'pressure_{self.main_id}', ASMO.InputParameter)
+            self.kg.add((pressure, RDFS.label, Literal('pressure', datatype=XSD.string)))
+            self.kg.add((activity, ASMO.hasInputParameter, pressure))
+            self.kg.add((pressure, ASMO.hasValue, Literal(self.mdict['pressure'], datatype=XSD.float)))
+            self.kg.add((pressure, ASMO.hasUnit, URIRef('http://qudt.org/vocab/unit/GigaPA')))
+
+        #potentials need to be mapped
+        potential = URIRef(f'potential_{self.main_id}')
+        if 'meam' in self.mdict['potential']['type']:
+            self.kg.add((potential, RDF.type, ASMO.ModifiedEmbeddedAtomModel))
+        elif 'eam' in self.mdict['potential']['type']:
+            self.kg.add((potential, RDF.type, ASMO.EmbeddedAtomModel))
+        elif 'lj' in self.mdict['potential']['type']:
+            self.kg.add((potential, RDF.type, ASMO.LennardJonesPotential))
+        elif 'ace' in self.mdict['potential']['type']:
+            self.kg.add((potential, RDF.type, ASMO.MachineLearningPotential))
+        else:
+            self.kg.add((potential, RDF.type, ASMO.InteratomicPotential))
+
+        if 'uri' in self.mdict['potential'].keys():
+            self.kg.add((potential, CMSO.hasReference, Literal(self.mdict['potential']['uri'], datatype=XSD.string)))
+        if 'label' in self.mdict['potential'].keys():
+            self.kg.add((potential, RDFS.label, Literal(self.mdict['potential']['label'])))
+
+        self.kg.add((method, ASMO.hasInteratomicPotential, potential))
diff --git a/examples/06_workflow_pyiron.ipynb b/examples/06_workflow_pyiron.ipynb
index 4c9e529..e774ba4 100644
--- a/examples/06_workflow_pyiron.ipynb
+++ b/examples/06_workflow_pyiron.ipynb
@@ -41,13 +41,13 @@
       "/home/menon/miniconda3/envs/workflow-rdf-v0.2/lib/python3.11/site-packages/numpy/core/getlimits.py:542: UserWarning: Signature b'\\x00\\xd0\\xcc\\xcc\\xcc\\xcc\\xcc\\xcc\\xfb\\xbf\\x00\\x00\\x00\\x00\\x00\\x00' for <class 'numpy.longdouble'> does not match any known type: falling back to type probe function.\n",
       "This warnings indicates broken support for the dtype!\n",
       "  machar = _get_machar(dtype)\n",
-      "2024-04-16 18:35:17,228 - pyiron_log - WARNING - pyiron found a 'templates' folder in the /home/menon/pyiron/resources resource directory. These are no longer supported in pyiron_base >=0.7.0. They are replaced by Project.create_job_class() and Project.wrap_python_function().\n"
+      "2024-04-18 12:54:21,059 - pyiron_log - WARNING - pyiron found a 'templates' folder in the /home/menon/pyiron/resources resource directory. These are no longer supported in pyiron_base >=0.7.0. They are replaced by Project.create_job_class() and Project.wrap_python_function().\n"
      ]
     },
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "569131161c9642049116b50ce92ca869",
+       "model_id": "b3e1540e94144972bc50c9b3fdce538f",
        "version_major": 2,
        "version_minor": 0
       },
@@ -70,7 +70,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "pr = Project('wf9')"
+    "pr = Project('wf1a')"
    ]
   },
   {
@@ -120,93 +120,21 @@
        "<!-- Generated by graphviz version 9.0.0 (20231125.0833)\n",
        " -->\n",
        "<!-- Pages: 1 -->\n",
-       "<svg width=\"605pt\" height=\"508pt\"\n",
-       " viewBox=\"0.00 0.00 604.50 508.01\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
-       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 504.01)\">\n",
-       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-504.01 600.5,-504.01 600.5,4 -4,4\"/>\n",
-       "<!-- sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3 -->\n",
+       "<svg width=\"233pt\" height=\"44pt\"\n",
+       " viewBox=\"0.00 0.00 232.50 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
+       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-40 228.5,-40 228.5,4 -4,4\"/>\n",
+       "<!-- sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
-       "<title>sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"225.25,-60.03 0,-60.03 0,-24.03 225.25,-24.03 225.25,-60.03\"/>\n",
-       "<text text-anchor=\"middle\" x=\"112.62\" y=\"-39.31\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</text>\n",
-       "</g>\n",
-       "<!-- Entity -->\n",
-       "<g id=\"node3\" class=\"node\">\n",
-       "<title>Entity</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"279.31,-267.46 225.31,-267.46 225.31,-231.46 279.31,-231.46 279.31,-267.46\"/>\n",
-       "<text text-anchor=\"middle\" x=\"252.31\" y=\"-246.73\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Entity</text>\n",
-       "</g>\n",
-       "<!-- sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3&#45;&gt;Entity -->\n",
-       "<g id=\"edge2\" class=\"edge\">\n",
-       "<title>sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3&#45;&gt;Entity</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M125.02,-60.44C149.61,-96.96 204.69,-178.75 233.67,-221.78\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"230.61,-223.5 239.1,-229.84 236.41,-219.59 230.61,-223.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"170.35\" y=\"-143.26\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">type</text>\n",
-       "</g>\n",
-       "<!-- sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7 -->\n",
-       "<g id=\"node2\" class=\"node\">\n",
-       "<title>sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"456.97,-36 238.47,-36 238.47,0 456.97,0 456.97,-36\"/>\n",
-       "<text text-anchor=\"middle\" x=\"347.72\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7</text>\n",
-       "</g>\n",
-       "<!-- sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3 -->\n",
-       "<g id=\"edge3\" class=\"edge\">\n",
-       "<title>sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M238.09,-29.21C237.7,-29.25 237.3,-29.29 236.91,-29.33\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"236.6,-25.84 227.01,-30.34 237.31,-32.8 236.6,-25.84\"/>\n",
-       "<text text-anchor=\"middle\" x=\"203.75\" y=\"-21.67\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
-       "</g>\n",
-       "<!-- sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;Entity -->\n",
-       "<g id=\"edge1\" class=\"edge\">\n",
-       "<title>sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;Entity</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M340.24,-36.16C323.73,-76.2 284.1,-172.34 264.17,-220.68\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"261.05,-219.08 260.47,-229.66 267.52,-221.75 261.05,-219.08\"/>\n",
-       "<text text-anchor=\"middle\" x=\"293.2\" y=\"-130.57\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">type</text>\n",
-       "</g>\n",
-       "<!-- sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97 -->\n",
-       "<g id=\"node4\" class=\"node\">\n",
-       "<title>sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"274.82,-500.01 45.82,-500.01 45.82,-464.01 274.82,-464.01 274.82,-500.01\"/>\n",
-       "<text text-anchor=\"middle\" x=\"160.32\" y=\"-479.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</text>\n",
-       "</g>\n",
-       "<!-- sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97&#45;&gt;Entity -->\n",
-       "<g id=\"edge5\" class=\"edge\">\n",
-       "<title>sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97&#45;&gt;Entity</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M167.54,-463.76C183.45,-423.53 221.66,-326.94 240.87,-278.37\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"244.02,-279.94 244.44,-269.35 237.51,-277.36 244.02,-279.94\"/>\n",
-       "<text text-anchor=\"middle\" x=\"195.2\" y=\"-373.22\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">type</text>\n",
-       "</g>\n",
-       "<!-- sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467 -->\n",
-       "<g id=\"node5\" class=\"node\">\n",
-       "<title>sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"507.34,-473.11 282.84,-473.11 282.84,-437.11 507.34,-437.11 507.34,-473.11\"/>\n",
-       "<text text-anchor=\"middle\" x=\"395.09\" y=\"-452.39\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467</text>\n",
-       "</g>\n",
-       "<!-- sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;Entity -->\n",
-       "<g id=\"edge4\" class=\"edge\">\n",
-       "<title>sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;Entity</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M382.42,-436.86C357.28,-400.66 300.98,-319.56 271.36,-276.9\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"274.39,-275.13 265.81,-268.91 268.64,-279.12 274.39,-275.13\"/>\n",
-       "<text text-anchor=\"middle\" x=\"317.89\" y=\"-359.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">type</text>\n",
-       "</g>\n",
-       "<!-- sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97 -->\n",
-       "<g id=\"edge6\" class=\"edge\">\n",
-       "<title>sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M282.52,-468.01C282.36,-468.03 282.21,-468.05 282.05,-468.06\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"286.14,-464.07 276.6,-468.69 286.94,-471.03 286.14,-464.07\"/>\n",
-       "<text text-anchor=\"middle\" x=\"248.54\" y=\"-460.44\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
-       "</g>\n",
-       "<!-- sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498 -->\n",
-       "<g id=\"node6\" class=\"node\">\n",
-       "<title>sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"596.5,-200 369,-200 369,-164 596.5,-164 596.5,-200\"/>\n",
-       "<text text-anchor=\"middle\" x=\"482.75\" y=\"-179.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498</text>\n",
+       "<title>sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"224.5,-36 0,-36 0,0 224.5,0 224.5,-36\"/>\n",
+       "<text text-anchor=\"middle\" x=\"112.25\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411</text>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
       ],
       "text/plain": [
-       "<graphviz.graphs.Digraph at 0x7fcf5cf980d0>"
+       "<graphviz.graphs.Digraph at 0x7f7a6d5382d0>"
       ]
      },
      "execution_count": 7,
@@ -268,7 +196,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "The job j1 was saved and received the ID: 8173\n"
+      "The job j1 was saved and received the ID: 8176\n"
      ]
     }
    ],
@@ -303,437 +231,399 @@
        "<!-- Generated by graphviz version 9.0.0 (20231125.0833)\n",
        " -->\n",
        "<!-- Pages: 1 -->\n",
-       "<svg width=\"1080pt\" height=\"391pt\"\n",
-       " viewBox=\"0.00 0.00 1080.00 391.46\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
-       "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.732393 0.732393) rotate(0) translate(4 530.5)\">\n",
-       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-530.5 1470.62,-530.5 1470.62,4 -4,4\"/>\n",
-       "<!-- sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3 -->\n",
+       "<svg width=\"1015pt\" height=\"535pt\"\n",
+       " viewBox=\"0.00 0.00 1014.99 534.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
+       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 530.5)\">\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-530.5 1010.99,-530.5 1010.99,4 -4,4\"/>\n",
+       "<!-- sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
-       "<title>sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"225.25,-117.75 0,-117.75 0,-81.75 225.25,-81.75 225.25,-117.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"112.62\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</text>\n",
+       "<title>sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"257.25,-117.75 32.75,-117.75 32.75,-81.75 257.25,-81.75 257.25,-117.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"145\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411</text>\n",
        "</g>\n",
-       "<!-- sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7 -->\n",
+       "<!-- sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7 -->\n",
        "<g id=\"node2\" class=\"node\">\n",
-       "<title>sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"221.88,-36 3.38,-36 3.38,0 221.88,0 221.88,-36\"/>\n",
-       "<text text-anchor=\"middle\" x=\"112.62\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7</text>\n",
+       "<title>sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"527.75,-36 306.25,-36 306.25,0 527.75,0 527.75,-36\"/>\n",
+       "<text text-anchor=\"middle\" x=\"417\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7</text>\n",
        "</g>\n",
-       "<!-- sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3 -->\n",
+       "<!-- sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
-       "<title>sample_cc0c55d8&#45;fa4c&#45;43ff&#45;8a18&#45;2e1d9e077ca7&#45;&gt;sample_0394fcda&#45;2d6a&#45;470a&#45;a72a&#45;1b98ac5ce1a3</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M112.62,-36.3C112.62,-46.23 112.62,-58.94 112.62,-70.3\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"109.13,-69.97 112.63,-79.97 116.13,-69.97 109.13,-69.97\"/>\n",
-       "<text text-anchor=\"middle\" x=\"146.38\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
+       "<title>sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;sample_d6ce3789&#45;c330&#45;4dc9&#45;be4c&#45;ad2aa3fee411</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M349.78,-36.42C329.4,-41.86 306.99,-48.02 286.5,-54 261.09,-61.42 233.27,-70.1 209.08,-77.82\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"208.14,-74.45 199.69,-80.83 210.28,-81.11 208.14,-74.45\"/>\n",
+       "<text text-anchor=\"middle\" x=\"320.75\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
        "</g>\n",
-       "<!-- sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97 -->\n",
+       "<!-- activity_8176 -->\n",
        "<g id=\"node3\" class=\"node\">\n",
-       "<title>sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"472.12,-117.75 243.12,-117.75 243.12,-81.75 472.12,-81.75 472.12,-117.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"357.62\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</text>\n",
-       "</g>\n",
-       "<!-- sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467 -->\n",
-       "<g id=\"node4\" class=\"node\">\n",
-       "<title>sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"469.88,-36 245.38,-36 245.38,0 469.88,0 469.88,-36\"/>\n",
-       "<text text-anchor=\"middle\" x=\"357.62\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467</text>\n",
-       "</g>\n",
-       "<!-- sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97 -->\n",
-       "<g id=\"edge2\" class=\"edge\">\n",
-       "<title>sample_51aeb661&#45;2cb8&#45;4036&#45;8e76&#45;27a97fb0f467&#45;&gt;sample_2c3e9210&#45;84b2&#45;45dd&#45;a7a2&#45;3569907a9d97</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M357.62,-36.3C357.62,-46.23 357.62,-58.94 357.62,-70.3\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"354.13,-69.97 357.63,-79.97 361.13,-69.97 354.13,-69.97\"/>\n",
-       "<text text-anchor=\"middle\" x=\"391.38\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
-       "</g>\n",
-       "<!-- sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498 -->\n",
-       "<g id=\"node5\" class=\"node\">\n",
-       "<title>sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"717.38,-117.75 489.88,-117.75 489.88,-81.75 717.38,-81.75 717.38,-117.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"603.62\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498</text>\n",
+       "<title>activity_8176</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"533,-199.5 463,-199.5 463,-163.5 533,-163.5 533,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"498\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">activity_8176</text>\n",
        "</g>\n",
-       "<!-- sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c -->\n",
-       "<g id=\"node6\" class=\"node\">\n",
-       "<title>sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"991.12,-36 762.12,-36 762.12,0 991.12,0 991.12,-36\"/>\n",
-       "<text text-anchor=\"middle\" x=\"876.62\" y=\"-15.28\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c</text>\n",
-       "</g>\n",
-       "<!-- sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498 -->\n",
-       "<g id=\"edge3\" class=\"edge\">\n",
-       "<title>sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;sample_3d96246d&#45;ddc5&#45;449c&#45;9a3e&#45;c76411879498</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M809.41,-36.44C789.04,-41.89 766.62,-48.04 746.12,-54 720.54,-61.44 692.53,-70.12 668.17,-77.85\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"667.17,-74.49 658.7,-80.86 669.29,-81.16 667.17,-74.49\"/>\n",
-       "<text text-anchor=\"middle\" x=\"780.38\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasDerivedFrom</text>\n",
-       "</g>\n",
-       "<!-- activity_8173 -->\n",
-       "<g id=\"node7\" class=\"node\">\n",
-       "<title>activity_8173</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"992.62,-199.5 922.62,-199.5 922.62,-163.5 992.62,-163.5 992.62,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"957.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">activity_8173</text>\n",
-       "</g>\n",
-       "<!-- sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;activity_8173 -->\n",
-       "<g id=\"edge13\" class=\"edge\">\n",
-       "<title>sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;activity_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M924.48,-36.41C931.91,-41.06 938.74,-46.85 943.62,-54 963.4,-82.92 964.05,-124.53 961.68,-152.03\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"958.23,-151.4 960.64,-161.72 965.19,-152.15 958.23,-151.4\"/>\n",
-       "<text text-anchor=\"middle\" x=\"997.5\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasGeneratedBy</text>\n",
+       "<!-- sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;activity_8176 -->\n",
+       "<g id=\"edge11\" class=\"edge\">\n",
+       "<title>sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;activity_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M464.86,-36.41C472.29,-41.06 479.11,-46.85 484,-54 503.77,-82.92 504.43,-124.53 502.06,-152.03\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"498.6,-151.4 501.02,-161.72 505.56,-152.15 498.6,-151.4\"/>\n",
+       "<text text-anchor=\"middle\" x=\"537.88\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasGeneratedBy</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalEnergy -->\n",
-       "<g id=\"node19\" class=\"node\">\n",
-       "<title>8173_TotalEnergy</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"824,-117.75 735.25,-117.75 735.25,-81.75 824,-81.75 824,-117.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"779.62\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">8173_TotalEnergy</text>\n",
+       "<!-- 8176_TotalEnergy -->\n",
+       "<g id=\"node13\" class=\"node\">\n",
+       "<title>8176_TotalEnergy</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"364.38,-117.75 275.62,-117.75 275.62,-81.75 364.38,-81.75 364.38,-117.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"320\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">8176_TotalEnergy</text>\n",
        "</g>\n",
-       "<!-- sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;8173_TotalEnergy -->\n",
-       "<g id=\"edge18\" class=\"edge\">\n",
-       "<title>sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;8173_TotalEnergy</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M851.27,-36.42C843.69,-41.87 835.44,-48.02 828.12,-54 820.47,-60.25 812.47,-67.37 805.23,-74.06\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"803.14,-71.22 798.24,-80.61 807.93,-76.33 803.14,-71.22\"/>\n",
-       "<text text-anchor=\"middle\" x=\"886.38\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">cmso.hasCalculatedProperty</text>\n",
+       "<!-- sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;8176_TotalEnergy -->\n",
+       "<g id=\"edge14\" class=\"edge\">\n",
+       "<title>sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;8176_TotalEnergy</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M391.65,-36.42C384.06,-41.87 375.82,-48.02 368.5,-54 360.85,-60.25 352.85,-67.37 345.6,-74.06\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"343.52,-71.22 338.61,-80.61 348.3,-76.33 343.52,-71.22\"/>\n",
+       "<text text-anchor=\"middle\" x=\"426.75\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">cmso.hasCalculatedProperty</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalVolume -->\n",
-       "<g id=\"node21\" class=\"node\">\n",
-       "<title>8173_TotalVolume</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"1152.75,-117.75 1062.5,-117.75 1062.5,-81.75 1152.75,-81.75 1152.75,-117.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1107.62\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">8173_TotalVolume</text>\n",
+       "<!-- 8176_TotalVolume -->\n",
+       "<g id=\"node15\" class=\"node\">\n",
+       "<title>8176_TotalVolume</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"693.12,-117.75 602.88,-117.75 602.88,-81.75 693.12,-81.75 693.12,-117.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"648\" y=\"-97.03\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">8176_TotalVolume</text>\n",
        "</g>\n",
-       "<!-- sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;8173_TotalVolume -->\n",
-       "<g id=\"edge21\" class=\"edge\">\n",
-       "<title>sample_97a194be&#45;0485&#45;4135&#45;817e&#45;7a587adae82c&#45;&gt;8173_TotalVolume</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M927.03,-36.4C963.64,-49.04 1013.21,-66.15 1051.15,-79.25\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1050,-82.56 1060.59,-82.51 1052.28,-75.94 1050,-82.56\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1064.38\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">cmso.hasCalculatedProperty</text>\n",
+       "<!-- sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;8176_TotalVolume -->\n",
+       "<g id=\"edge17\" class=\"edge\">\n",
+       "<title>sample_7c113ec5&#45;bf1f&#45;4c2c&#45;b863&#45;b7bb5b9091b7&#45;&gt;8176_TotalVolume</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M467.41,-36.4C504.02,-49.04 553.58,-66.15 591.53,-79.25\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"590.37,-82.56 600.97,-82.51 592.66,-75.94 590.37,-82.56\"/>\n",
+       "<text text-anchor=\"middle\" x=\"604.75\" y=\"-56.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">cmso.hasCalculatedProperty</text>\n",
        "</g>\n",
-       "<!-- method_8173 -->\n",
-       "<g id=\"node8\" class=\"node\">\n",
-       "<title>method_8173</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"718.75,-281.25 646.5,-281.25 646.5,-245.25 718.75,-245.25 718.75,-281.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"682.62\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">method_8173</text>\n",
+       "<!-- method_8176 -->\n",
+       "<g id=\"node4\" class=\"node\">\n",
+       "<title>method_8176</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"259.12,-281.25 186.88,-281.25 186.88,-245.25 259.12,-245.25 259.12,-281.25\"/>\n",
+       "<text text-anchor=\"middle\" x=\"223\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">method_8176</text>\n",
        "</g>\n",
-       "<!-- activity_8173&#45;&gt;method_8173 -->\n",
-       "<g id=\"edge4\" class=\"edge\">\n",
-       "<title>activity_8173&#45;&gt;method_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M922.53,-188.54C902.39,-191.93 876.62,-196.14 853.62,-199.5 791.66,-208.55 767.44,-185.05 713.88,-217.5 706.63,-221.89 700.64,-228.67 695.9,-235.63\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"693.18,-233.37 691.01,-243.74 699.17,-236.99 693.18,-233.37\"/>\n",
-       "<text text-anchor=\"middle\" x=\"779.5\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasComputationalMethod</text>\n",
+       "<!-- activity_8176&#45;&gt;method_8176 -->\n",
+       "<g id=\"edge2\" class=\"edge\">\n",
+       "<title>activity_8176&#45;&gt;method_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M462.9,-188.54C442.77,-191.93 416.99,-196.14 394,-199.5 332.03,-208.55 307.81,-185.05 254.25,-217.5 247.01,-221.89 241.01,-228.67 236.28,-235.63\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"233.55,-233.37 231.38,-243.74 239.55,-236.99 233.55,-233.37\"/>\n",
+       "<text text-anchor=\"middle\" x=\"319.88\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasComputationalMethod</text>\n",
        "</g>\n",
        "<!-- asmo.AtomicPosition -->\n",
-       "<g id=\"node9\" class=\"node\">\n",
+       "<g id=\"node5\" class=\"node\">\n",
        "<title>asmo.AtomicPosition</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"885.62,-281.25 785.62,-281.25 785.62,-245.25 885.62,-245.25 885.62,-281.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"835.62\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.AtomicPosition</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"426,-281.25 326,-281.25 326,-245.25 426,-245.25 426,-281.25\"/>\n",
+       "<text text-anchor=\"middle\" x=\"376\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.AtomicPosition</text>\n",
        "</g>\n",
-       "<!-- activity_8173&#45;&gt;asmo.AtomicPosition -->\n",
-       "<g id=\"edge5\" class=\"edge\">\n",
-       "<title>activity_8173&#45;&gt;asmo.AtomicPosition</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M922.38,-187.04C900.52,-191.5 873.17,-200.28 854.62,-217.5 849.63,-222.14 845.9,-228.3 843.13,-234.56\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"840,-232.93 839.84,-243.53 846.57,-235.34 840,-232.93\"/>\n",
-       "<text text-anchor=\"middle\" x=\"904.12\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasRelaxationDOF</text>\n",
+       "<!-- activity_8176&#45;&gt;asmo.AtomicPosition -->\n",
+       "<g id=\"edge3\" class=\"edge\">\n",
+       "<title>activity_8176&#45;&gt;asmo.AtomicPosition</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M462.75,-187.04C440.9,-191.5 413.54,-200.28 395,-217.5 390.01,-222.14 386.27,-228.3 383.5,-234.56\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"380.37,-232.93 380.22,-243.53 386.94,-235.34 380.37,-232.93\"/>\n",
+       "<text text-anchor=\"middle\" x=\"444.5\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasRelaxationDOF</text>\n",
        "</g>\n",
        "<!-- asmo.CellVolume -->\n",
-       "<g id=\"node10\" class=\"node\">\n",
+       "<g id=\"node6\" class=\"node\">\n",
        "<title>asmo.CellVolume</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"1000.12,-281.25 915.12,-281.25 915.12,-245.25 1000.12,-245.25 1000.12,-281.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"957.62\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.CellVolume</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"540.5,-281.25 455.5,-281.25 455.5,-245.25 540.5,-245.25 540.5,-281.25\"/>\n",
+       "<text text-anchor=\"middle\" x=\"498\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.CellVolume</text>\n",
        "</g>\n",
-       "<!-- activity_8173&#45;&gt;asmo.CellVolume -->\n",
-       "<g id=\"edge6\" class=\"edge\">\n",
-       "<title>activity_8173&#45;&gt;asmo.CellVolume</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M957.62,-199.8C957.62,-209.73 957.62,-222.44 957.62,-233.8\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"954.13,-233.47 957.63,-243.47 961.13,-233.47 954.13,-233.47\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1007.12\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasRelaxationDOF</text>\n",
+       "<!-- activity_8176&#45;&gt;asmo.CellVolume -->\n",
+       "<g id=\"edge4\" class=\"edge\">\n",
+       "<title>activity_8176&#45;&gt;asmo.CellVolume</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M498,-199.8C498,-209.73 498,-222.44 498,-233.8\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"494.5,-233.47 498,-243.47 501.5,-233.47 494.5,-233.47\"/>\n",
+       "<text text-anchor=\"middle\" x=\"547.5\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasRelaxationDOF</text>\n",
        "</g>\n",
-       "<!-- temperature_8173 -->\n",
-       "<g id=\"node12\" class=\"node\">\n",
-       "<title>temperature_8173</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"1118.5,-281.25 1026.75,-281.25 1026.75,-245.25 1118.5,-245.25 1118.5,-281.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1072.62\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">temperature_8173</text>\n",
+       "<!-- temperature_8176 -->\n",
+       "<g id=\"node8\" class=\"node\">\n",
+       "<title>temperature_8176</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"658.88,-281.25 567.12,-281.25 567.12,-245.25 658.88,-245.25 658.88,-281.25\"/>\n",
+       "<text text-anchor=\"middle\" x=\"613\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">temperature_8176</text>\n",
        "</g>\n",
-       "<!-- activity_8173&#45;&gt;temperature_8173 -->\n",
-       "<g id=\"edge8\" class=\"edge\">\n",
-       "<title>activity_8173&#45;&gt;temperature_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M992.8,-186.92C1014.12,-191.32 1040.44,-200.09 1057.62,-217.5 1062.16,-222.09 1065.32,-228.09 1067.53,-234.2\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1064.09,-234.89 1070.15,-243.58 1070.83,-233 1064.09,-234.89\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1115.62\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInputParameter</text>\n",
+       "<!-- activity_8176&#45;&gt;temperature_8176 -->\n",
+       "<g id=\"edge6\" class=\"edge\">\n",
+       "<title>activity_8176&#45;&gt;temperature_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M533.17,-186.92C554.5,-191.32 580.82,-200.09 598,-217.5 602.53,-222.09 605.7,-228.09 607.9,-234.2\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"604.46,-234.89 610.53,-243.58 611.2,-233 604.46,-234.89\"/>\n",
+       "<text text-anchor=\"middle\" x=\"656\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInputParameter</text>\n",
        "</g>\n",
-       "<!-- pressure_8173 -->\n",
-       "<g id=\"node14\" class=\"node\">\n",
-       "<title>pressure_8173</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"1343,-281.25 1266.25,-281.25 1266.25,-245.25 1343,-245.25 1343,-281.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1304.62\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">pressure_8173</text>\n",
+       "<!-- pressure_8176 -->\n",
+       "<g id=\"node10\" class=\"node\">\n",
+       "<title>pressure_8176</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"883.38,-281.25 806.62,-281.25 806.62,-245.25 883.38,-245.25 883.38,-281.25\"/>\n",
+       "<text text-anchor=\"middle\" x=\"845\" y=\"-260.52\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">pressure_8176</text>\n",
        "</g>\n",
-       "<!-- activity_8173&#45;&gt;pressure_8173 -->\n",
-       "<g id=\"edge10\" class=\"edge\">\n",
-       "<title>activity_8173&#45;&gt;pressure_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M992.9,-190.71C1006.52,-193.72 1022.25,-196.99 1036.62,-199.5 1095.82,-209.83 1112.09,-203.92 1170.62,-217.5 1199.14,-224.11 1230.19,-234.29 1255.21,-243.26\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1253.88,-246.5 1264.48,-246.63 1256.28,-239.92 1253.88,-246.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1255.62\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInputParameter</text>\n",
+       "<!-- activity_8176&#45;&gt;pressure_8176 -->\n",
+       "<g id=\"edge8\" class=\"edge\">\n",
+       "<title>activity_8176&#45;&gt;pressure_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M533.28,-190.71C546.89,-193.72 562.63,-196.99 577,-199.5 636.2,-209.83 652.46,-203.92 711,-217.5 739.51,-224.11 770.56,-234.29 795.59,-243.26\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"794.26,-246.5 804.85,-246.63 796.65,-239.92 794.26,-246.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"796\" y=\"-219.65\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInputParameter</text>\n",
        "</g>\n",
        "<!-- asmo.Isothermal–isobaricEnsemble -->\n",
-       "<g id=\"node11\" class=\"node\">\n",
+       "<g id=\"node7\" class=\"node\">\n",
        "<title>asmo.Isothermal–isobaricEnsemble</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"619.62,-363 459.62,-363 459.62,-327 619.62,-327 619.62,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"539.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.Isothermal–isobaricEnsemble</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"160,-363 0,-363 0,-327 160,-327 160,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"80\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.Isothermal–isobaricEnsemble</text>\n",
        "</g>\n",
-       "<!-- method_8173&#45;&gt;asmo.Isothermal–isobaricEnsemble -->\n",
-       "<g id=\"edge7\" class=\"edge\">\n",
-       "<title>method_8173&#45;&gt;asmo.Isothermal–isobaricEnsemble</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M646.23,-265.98C618.83,-269.11 581.96,-277.44 557.62,-299.25 552.71,-303.65 549.12,-309.58 546.5,-315.68\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"543.2,-314.52 543.25,-325.12 549.81,-316.8 543.2,-314.52\"/>\n",
-       "<text text-anchor=\"middle\" x=\"617.62\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasStatisticalEnsemble</text>\n",
+       "<!-- method_8176&#45;&gt;asmo.Isothermal–isobaricEnsemble -->\n",
+       "<g id=\"edge5\" class=\"edge\">\n",
+       "<title>method_8176&#45;&gt;asmo.Isothermal–isobaricEnsemble</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M186.6,-265.98C159.21,-269.11 122.34,-277.44 98,-299.25 93.09,-303.65 89.5,-309.58 86.87,-315.68\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"83.57,-314.52 83.62,-325.12 90.19,-316.8 83.57,-314.52\"/>\n",
+       "<text text-anchor=\"middle\" x=\"158\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasStatisticalEnsemble</text>\n",
        "</g>\n",
-       "<!-- potential_8173 -->\n",
-       "<g id=\"node16\" class=\"node\">\n",
-       "<title>potential_8173</title>\n",
-       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"718.38,-363 640.88,-363 640.88,-327 718.38,-327 718.38,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"679.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">potential_8173</text>\n",
+       "<!-- potential_8176 -->\n",
+       "<g id=\"node12\" class=\"node\">\n",
+       "<title>potential_8176</title>\n",
+       "<polygon fill=\"#d9d9d9\" stroke=\"#d9d9d9\" points=\"258.75,-363 181.25,-363 181.25,-327 258.75,-327 258.75,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"220\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">potential_8176</text>\n",
        "</g>\n",
-       "<!-- method_8173&#45;&gt;potential_8173 -->\n",
-       "<g id=\"edge12\" class=\"edge\">\n",
-       "<title>method_8173&#45;&gt;potential_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M681.97,-281.55C681.6,-291.48 681.12,-304.19 680.7,-315.55\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"677.21,-315.09 680.33,-325.22 684.21,-315.36 677.21,-315.09\"/>\n",
-       "<text text-anchor=\"middle\" x=\"742.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInteratomicPotential</text>\n",
+       "<!-- method_8176&#45;&gt;potential_8176 -->\n",
+       "<g id=\"edge10\" class=\"edge\">\n",
+       "<title>method_8176&#45;&gt;potential_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M222.35,-281.55C221.98,-291.48 221.5,-304.19 221.07,-315.55\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"217.59,-315.09 220.71,-325.22 224.58,-315.36 217.59,-315.09\"/>\n",
+       "<text text-anchor=\"middle\" x=\"282.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasInteratomicPotential</text>\n",
        "</g>\n",
        "<!-- matwerk.E457491 -->\n",
        "<g id=\"node17\" class=\"node\">\n",
        "<title>matwerk.E457491</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"910.75,-363 820.5,-363 820.5,-327 910.75,-327 910.75,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"865.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">matwerk.E457491</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"451.12,-363 360.88,-363 360.88,-327 451.12,-327 451.12,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"406\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">matwerk.E457491</text>\n",
        "</g>\n",
-       "<!-- method_8173&#45;&gt;matwerk.E457491 -->\n",
-       "<g id=\"edge14\" class=\"edge\">\n",
-       "<title>method_8173&#45;&gt;matwerk.E457491</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M719.21,-270.81C744.63,-276.26 778.79,-285.39 806.62,-299.25 817.5,-304.67 828.39,-312.18 837.79,-319.51\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"835.5,-322.16 845.48,-325.73 839.91,-316.72 835.5,-322.16\"/>\n",
-       "<text text-anchor=\"middle\" x=\"862.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasAssociatedWith</text>\n",
+       "<!-- method_8176&#45;&gt;matwerk.E457491 -->\n",
+       "<g id=\"edge18\" class=\"edge\">\n",
+       "<title>method_8176&#45;&gt;matwerk.E457491</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M259.59,-270.81C285,-276.26 319.17,-285.39 347,-299.25 357.88,-304.67 368.76,-312.18 378.17,-319.51\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"375.88,-322.16 385.85,-325.73 380.29,-316.72 375.88,-322.16\"/>\n",
+       "<text text-anchor=\"middle\" x=\"402.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">wasAssociatedWith</text>\n",
        "</g>\n",
        "<!-- unit.K -->\n",
-       "<g id=\"node13\" class=\"node\">\n",
+       "<g id=\"node9\" class=\"node\">\n",
        "<title>unit.K</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"991.62,-363 937.62,-363 937.62,-327 991.62,-327 991.62,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"964.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.K</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"532,-363 478,-363 478,-327 532,-327 532,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"505\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.K</text>\n",
        "</g>\n",
-       "<!-- temperature_8173&#45;&gt;unit.K -->\n",
-       "<g id=\"edge9\" class=\"edge\">\n",
-       "<title>temperature_8173&#45;&gt;unit.K</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1037.54,-281.74C1028.31,-286.92 1018.58,-292.91 1010.12,-299.25 1002.52,-304.95 994.91,-311.86 988.14,-318.52\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"985.66,-316.06 981.15,-325.64 990.65,-320.96 985.66,-316.06\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1038.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
+       "<!-- temperature_8176&#45;&gt;unit.K -->\n",
+       "<g id=\"edge7\" class=\"edge\">\n",
+       "<title>temperature_8176&#45;&gt;unit.K</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M577.91,-281.74C568.69,-286.92 558.95,-292.91 550.5,-299.25 542.9,-304.95 535.28,-311.86 528.51,-318.52\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"526.03,-316.06 521.52,-325.64 531.03,-320.96 526.03,-316.06\"/>\n",
+       "<text text-anchor=\"middle\" x=\"578.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
        "</g>\n",
-       "<!-- 33893be5&#45;082f&#45;457c&#45;a724&#45;2d78ba35c377 -->\n",
-       "<g id=\"node23\" class=\"node\">\n",
-       "<title>33893be5&#45;082f&#45;457c&#45;a724&#45;2d78ba35c377</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1123.71,-363 1032.9,-363 1009.54,-327 1100.35,-327 1123.71,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1066.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Temperature</text>\n",
+       "<!-- c28634b6&#45;575e&#45;4a85&#45;a1a5&#45;6d75bc798da8 -->\n",
+       "<g id=\"node19\" class=\"node\">\n",
+       "<title>c28634b6&#45;575e&#45;4a85&#45;a1a5&#45;6d75bc798da8</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"664.09,-363 573.27,-363 549.91,-327 640.73,-327 664.09,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"607\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Temperature</text>\n",
        "</g>\n",
-       "<!-- temperature_8173&#45;&gt;33893be5&#45;082f&#45;457c&#45;a724&#45;2d78ba35c377 -->\n",
-       "<g id=\"edge22\" class=\"edge\">\n",
-       "<title>temperature_8173&#45;&gt;33893be5&#45;082f&#45;457c&#45;a724&#45;2d78ba35c377</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1071.32,-281.55C1070.58,-291.48 1069.62,-304.19 1068.77,-315.55\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1065.3,-314.99 1068.04,-325.22 1072.28,-315.51 1065.3,-314.99\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1080.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "<!-- temperature_8176&#45;&gt;c28634b6&#45;575e&#45;4a85&#45;a1a5&#45;6d75bc798da8 -->\n",
+       "<g id=\"edge20\" class=\"edge\">\n",
+       "<title>temperature_8176&#45;&gt;c28634b6&#45;575e&#45;4a85&#45;a1a5&#45;6d75bc798da8</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M611.7,-281.55C610.95,-291.48 609.99,-304.19 609.14,-315.55\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"605.67,-314.99 608.41,-325.22 612.65,-315.51 605.67,-314.99\"/>\n",
+       "<text text-anchor=\"middle\" x=\"621.12\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
-       "<!-- c7172178&#45;e65a&#45;451d&#45;a26e&#45;78211ce3d9e4 -->\n",
-       "<g id=\"node24\" class=\"node\">\n",
-       "<title>c7172178&#45;e65a&#45;451d&#45;a26e&#45;78211ce3d9e4</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1207.7,-363 1155.09,-363 1141.55,-327 1194.16,-327 1207.7,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1174.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">500.0</text>\n",
+       "<!-- 28fd3ec9&#45;1c42&#45;4914&#45;a782&#45;37b30dab9227 -->\n",
+       "<g id=\"node20\" class=\"node\">\n",
+       "<title>28fd3ec9&#45;1c42&#45;4914&#45;a782&#45;37b30dab9227</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"748.07,-363 695.46,-363 681.93,-327 734.54,-327 748.07,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"715\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">500.0</text>\n",
        "</g>\n",
-       "<!-- temperature_8173&#45;&gt;c7172178&#45;e65a&#45;451d&#45;a26e&#45;78211ce3d9e4 -->\n",
-       "<g id=\"edge23\" class=\"edge\">\n",
-       "<title>temperature_8173&#45;&gt;c7172178&#45;e65a&#45;451d&#45;a26e&#45;78211ce3d9e4</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1094.76,-281.55C1109.06,-292.74 1127.88,-307.45 1143.65,-319.79\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1141.31,-322.39 1151.34,-325.8 1145.62,-316.88 1141.31,-322.39\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1161.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
+       "<!-- temperature_8176&#45;&gt;28fd3ec9&#45;1c42&#45;4914&#45;a782&#45;37b30dab9227 -->\n",
+       "<g id=\"edge21\" class=\"edge\">\n",
+       "<title>temperature_8176&#45;&gt;28fd3ec9&#45;1c42&#45;4914&#45;a782&#45;37b30dab9227</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M635.13,-281.55C649.43,-292.74 668.25,-307.45 684.03,-319.79\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"681.68,-322.39 691.72,-325.8 686,-316.88 681.68,-322.39\"/>\n",
+       "<text text-anchor=\"middle\" x=\"701.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
        "</g>\n",
        "<!-- unit.GigaPA -->\n",
-       "<g id=\"node15\" class=\"node\">\n",
+       "<g id=\"node11\" class=\"node\">\n",
        "<title>unit.GigaPA</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"1288.88,-363 1226.38,-363 1226.38,-327 1288.88,-327 1288.88,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1257.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.GigaPA</text>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"829.25,-363 766.75,-363 766.75,-327 829.25,-327 829.25,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"798\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.GigaPA</text>\n",
        "</g>\n",
-       "<!-- pressure_8173&#45;&gt;unit.GigaPA -->\n",
-       "<g id=\"edge11\" class=\"edge\">\n",
-       "<title>pressure_8173&#45;&gt;unit.GigaPA</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1279.73,-281.67C1274.13,-286.73 1268.77,-292.68 1265.12,-299.25 1262.41,-304.16 1260.62,-309.8 1259.46,-315.39\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1256.03,-314.64 1258.06,-325.03 1262.96,-315.64 1256.03,-314.64\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1293.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
+       "<!-- pressure_8176&#45;&gt;unit.GigaPA -->\n",
+       "<g id=\"edge9\" class=\"edge\">\n",
+       "<title>pressure_8176&#45;&gt;unit.GigaPA</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M820.11,-281.67C814.5,-286.73 809.14,-292.68 805.5,-299.25 802.78,-304.16 800.99,-309.8 799.83,-315.39\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"796.4,-314.64 798.44,-325.03 803.33,-315.64 796.4,-314.64\"/>\n",
+       "<text text-anchor=\"middle\" x=\"833.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
        "</g>\n",
-       "<!-- f230d3cb&#45;7144&#45;414d&#45;8b45&#45;7e3d3d5e1022 -->\n",
-       "<g id=\"node25\" class=\"node\">\n",
-       "<title>f230d3cb&#45;7144&#45;414d&#45;8b45&#45;7e3d3d5e1022</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1392.81,-363 1324.11,-363 1306.44,-327 1375.14,-327 1392.81,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1349.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Pressure</text>\n",
+       "<!-- 20658bc9&#45;06a9&#45;4003&#45;9c13&#45;509e346d5f41 -->\n",
+       "<g id=\"node21\" class=\"node\">\n",
+       "<title>20658bc9&#45;06a9&#45;4003&#45;9c13&#45;509e346d5f41</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"933.19,-363 864.49,-363 846.81,-327 915.51,-327 933.19,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"890\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Pressure</text>\n",
        "</g>\n",
-       "<!-- pressure_8173&#45;&gt;f230d3cb&#45;7144&#45;414d&#45;8b45&#45;7e3d3d5e1022 -->\n",
+       "<!-- pressure_8176&#45;&gt;20658bc9&#45;06a9&#45;4003&#45;9c13&#45;509e346d5f41 -->\n",
+       "<g id=\"edge22\" class=\"edge\">\n",
+       "<title>pressure_8176&#45;&gt;20658bc9&#45;06a9&#45;4003&#45;9c13&#45;509e346d5f41</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M854.76,-281.55C860.6,-291.9 868.15,-305.27 874.75,-316.98\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"871.55,-318.42 879.51,-325.41 877.64,-314.98 871.55,-318.42\"/>\n",
+       "<text text-anchor=\"middle\" x=\"881.12\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "</g>\n",
+       "<!-- 0042105c&#45;fd16&#45;4778&#45;aeeb&#45;6408b322a1b6 -->\n",
+       "<g id=\"node22\" class=\"node\">\n",
+       "<title>0042105c&#45;fd16&#45;4778&#45;aeeb&#45;6408b322a1b6</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1006.99,-363 962.46,-363 951.01,-327 995.54,-327 1006.99,-363\"/>\n",
+       "<text text-anchor=\"middle\" x=\"979\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">0.0</text>\n",
+       "</g>\n",
+       "<!-- pressure_8176&#45;&gt;0042105c&#45;fd16&#45;4778&#45;aeeb&#45;6408b322a1b6 -->\n",
+       "<g id=\"edge23\" class=\"edge\">\n",
+       "<title>pressure_8176&#45;&gt;0042105c&#45;fd16&#45;4778&#45;aeeb&#45;6408b322a1b6</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M874.08,-281.55C893.75,-293.26 919.92,-308.84 941.2,-321.5\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"939.22,-324.39 949.6,-326.5 942.8,-318.38 939.22,-324.39\"/>\n",
+       "<text text-anchor=\"middle\" x=\"951.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
+       "</g>\n",
+       "<!-- 5a0e55bc&#45;afeb&#45;4d22&#45;b5e1&#45;72b8692a6e6c -->\n",
+       "<g id=\"node23\" class=\"node\">\n",
+       "<title>5a0e55bc&#45;afeb&#45;4d22&#45;b5e1&#45;72b8692a6e6c</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"353.72,-444.75 136.23,-444.75 80.28,-408.75 297.77,-408.75 353.72,-444.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"217\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">2001&#45;&#45;Mishin&#45;Y&#45;&#45;Cu&#45;1&#45;&#45;Lammps&#45;&#45;Ipr1</text>\n",
+       "</g>\n",
+       "<!-- potential_8176&#45;&gt;5a0e55bc&#45;afeb&#45;4d22&#45;b5e1&#45;72b8692a6e6c -->\n",
        "<g id=\"edge24\" class=\"edge\">\n",
-       "<title>pressure_8173&#45;&gt;f230d3cb&#45;7144&#45;414d&#45;8b45&#45;7e3d3d5e1022</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1314.39,-281.55C1320.23,-291.9 1327.77,-305.27 1334.38,-316.98\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1331.17,-318.42 1339.14,-325.41 1337.27,-314.98 1331.17,-318.42\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1340.75\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "<title>potential_8176&#45;&gt;5a0e55bc&#45;afeb&#45;4d22&#45;b5e1&#45;72b8692a6e6c</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M219.35,-363.3C218.98,-373.23 218.5,-385.94 218.07,-397.3\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"214.59,-396.84 217.71,-406.97 221.58,-397.11 214.59,-396.84\"/>\n",
+       "<text text-anchor=\"middle\" x=\"229.12\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
-       "<!-- 9c649324&#45;bb8c&#45;4b5a&#45;a27c&#45;5992e0af8c39 -->\n",
-       "<g id=\"node26\" class=\"node\">\n",
-       "<title>9c649324&#45;bb8c&#45;4b5a&#45;a27c&#45;5992e0af8c39</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1466.62,-363 1422.09,-363 1410.63,-327 1455.16,-327 1466.62,-363\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1438.62\" y=\"-342.27\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">0.0</text>\n",
+       "<!-- 8176_TotalEnergy&#45;&gt;activity_8176 -->\n",
+       "<g id=\"edge13\" class=\"edge\">\n",
+       "<title>8176_TotalEnergy&#45;&gt;activity_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M343.84,-118.07C357.04,-127.11 374.03,-137.85 390.25,-145.5 409.73,-154.69 432.26,-162.42 451.67,-168.26\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"450.65,-171.61 461.23,-171.05 452.62,-164.89 450.65,-171.61\"/>\n",
+       "<text text-anchor=\"middle\" x=\"437.88\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.wasCalculatedBy</text>\n",
        "</g>\n",
-       "<!-- pressure_8173&#45;&gt;9c649324&#45;bb8c&#45;4b5a&#45;a27c&#45;5992e0af8c39 -->\n",
+       "<!-- unit.EV -->\n",
+       "<g id=\"node14\" class=\"node\">\n",
+       "<title>unit.EV</title>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"153,-199.5 99,-199.5 99,-163.5 153,-163.5 153,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"126\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.EV</text>\n",
+       "</g>\n",
+       "<!-- 8176_TotalEnergy&#45;&gt;unit.EV -->\n",
+       "<g id=\"edge12\" class=\"edge\">\n",
+       "<title>8176_TotalEnergy&#45;&gt;unit.EV</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M275.22,-114.87C272.1,-115.85 269,-116.82 266,-117.75 240.03,-125.83 232.55,-125.15 207.5,-135.75 192.57,-142.07 176.82,-150.31 163.18,-158\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"161.45,-154.96 154.53,-162.98 164.94,-161.03 161.45,-154.96\"/>\n",
+       "<text text-anchor=\"middle\" x=\"235.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
+       "</g>\n",
+       "<!-- a919bb29&#45;412b&#45;4b7a&#45;8a9e&#45;67c280ab5cbe -->\n",
+       "<g id=\"node24\" class=\"node\">\n",
+       "<title>a919bb29&#45;412b&#45;4b7a&#45;8a9e&#45;67c280ab5cbe</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"278.93,-199.5 193.14,-199.5 171.07,-163.5 256.86,-163.5 278.93,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"225\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Totalenergy</text>\n",
+       "</g>\n",
+       "<!-- 8176_TotalEnergy&#45;&gt;a919bb29&#45;412b&#45;4b7a&#45;8a9e&#45;67c280ab5cbe -->\n",
        "<g id=\"edge25\" class=\"edge\">\n",
-       "<title>pressure_8173&#45;&gt;9c649324&#45;bb8c&#45;4b5a&#45;a27c&#45;5992e0af8c39</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1333.7,-281.55C1353.37,-293.26 1379.54,-308.84 1400.82,-321.5\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1398.84,-324.39 1409.22,-326.5 1402.42,-318.38 1398.84,-324.39\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1411.38\" y=\"-301.4\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
+       "<title>8176_TotalEnergy&#45;&gt;a919bb29&#45;412b&#45;4b7a&#45;8a9e&#45;67c280ab5cbe</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M299.39,-118.05C286.19,-129.13 268.87,-143.68 254.26,-155.94\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"252.14,-153.15 246.73,-162.26 256.64,-158.51 252.14,-153.15\"/>\n",
+       "<text text-anchor=\"middle\" x=\"289.12\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
-       "<!-- e6481ff8&#45;7f93&#45;4aed&#45;9b58&#45;9e7550a74af9 -->\n",
-       "<g id=\"node27\" class=\"node\">\n",
-       "<title>e6481ff8&#45;7f93&#45;4aed&#45;9b58&#45;9e7550a74af9</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"813.34,-444.75 595.86,-444.75 539.91,-408.75 757.39,-408.75 813.34,-444.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"676.62\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">2001&#45;&#45;Mishin&#45;Y&#45;&#45;Cu&#45;1&#45;&#45;Lammps&#45;&#45;Ipr1</text>\n",
+       "<!-- 30de06a7&#45;9ca9&#45;4b53&#45;b42a&#45;65230b0aa37d -->\n",
+       "<g id=\"node25\" class=\"node\">\n",
+       "<title>30de06a7&#45;9ca9&#45;4b53&#45;b42a&#45;65230b0aa37d</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"385.45,-199.5 314.74,-199.5 296.55,-163.5 367.26,-163.5 385.45,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"341\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">&#45;13.7346</text>\n",
        "</g>\n",
-       "<!-- potential_8173&#45;&gt;e6481ff8&#45;7f93&#45;4aed&#45;9b58&#45;9e7550a74af9 -->\n",
+       "<!-- 8176_TotalEnergy&#45;&gt;30de06a7&#45;9ca9&#45;4b53&#45;b42a&#45;65230b0aa37d -->\n",
        "<g id=\"edge26\" class=\"edge\">\n",
-       "<title>potential_8173&#45;&gt;e6481ff8&#45;7f93&#45;4aed&#45;9b58&#45;9e7550a74af9</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M678.97,-363.3C678.6,-373.23 678.12,-385.94 677.7,-397.3\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"674.21,-396.84 677.33,-406.97 681.21,-397.11 674.21,-396.84\"/>\n",
-       "<text text-anchor=\"middle\" x=\"688.75\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "<title>8176_TotalEnergy&#45;&gt;30de06a7&#45;9ca9&#45;4b53&#45;b42a&#45;65230b0aa37d</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M308.66,-117.99C304.57,-126.41 301.78,-136.61 305.5,-145.5 306.78,-148.57 308.48,-151.51 310.44,-154.28\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"307.77,-156.54 316.91,-161.89 313.1,-152.01 307.77,-156.54\"/>\n",
+       "<text text-anchor=\"middle\" x=\"336.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
        "</g>\n",
-       "<!-- matwerk.E447986 -->\n",
-       "<g id=\"node18\" class=\"node\">\n",
-       "<title>matwerk.E447986</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"1007.75,-444.75 917.5,-444.75 917.5,-408.75 1007.75,-408.75 1007.75,-444.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"962.62\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">matwerk.E447986</text>\n",
+       "<!-- 8176_TotalVolume&#45;&gt;activity_8176 -->\n",
+       "<g id=\"edge16\" class=\"edge\">\n",
+       "<title>8176_TotalVolume&#45;&gt;activity_8176</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M602.55,-110.12C582.43,-115.58 559.12,-123.81 540.25,-135.75 532.25,-140.81 524.73,-147.73 518.31,-154.61\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"515.77,-152.2 511.82,-162.03 521.04,-156.81 515.77,-152.2\"/>\n",
+       "<text text-anchor=\"middle\" x=\"587.88\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.wasCalculatedBy</text>\n",
        "</g>\n",
-       "<!-- matwerk.E457491&#45;&gt;matwerk.E447986 -->\n",
+       "<!-- unit.ANGSTROM3 -->\n",
+       "<g id=\"node16\" class=\"node\">\n",
+       "<title>unit.ANGSTROM3</title>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"671.5,-199.5 586.5,-199.5 586.5,-163.5 671.5,-163.5 671.5,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"629\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.ANGSTROM3</text>\n",
+       "</g>\n",
+       "<!-- 8176_TotalVolume&#45;&gt;unit.ANGSTROM3 -->\n",
        "<g id=\"edge15\" class=\"edge\">\n",
-       "<title>matwerk.E457491&#45;&gt;matwerk.E447986</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M886.67,-363.3C900.15,-374.38 917.83,-388.93 932.75,-401.19\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"930.5,-403.87 940.45,-407.52 934.95,-398.46 930.5,-403.87\"/>\n",
-       "<text text-anchor=\"middle\" x=\"955.5\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">actedOnBehalfOf</text>\n",
+       "<title>8176_TotalVolume&#45;&gt;unit.ANGSTROM3</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M643.88,-118.05C641.51,-127.98 638.48,-140.69 635.78,-152.05\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"632.38,-151.22 633.47,-161.76 639.19,-152.84 632.38,-151.22\"/>\n",
+       "<text text-anchor=\"middle\" x=\"667.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
        "</g>\n",
-       "<!-- 12548f54&#45;03d7&#45;4501&#45;8c43&#45;9f0ad08fe88d -->\n",
-       "<g id=\"node28\" class=\"node\">\n",
-       "<title>12548f54&#45;03d7&#45;4501&#45;8c43&#45;9f0ad08fe88d</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"899.96,-444.75 845.34,-444.75 831.29,-408.75 885.91,-408.75 899.96,-444.75\"/>\n",
-       "<text text-anchor=\"middle\" x=\"865.62\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Pyiron</text>\n",
+       "<!-- 64a38d93&#45;403d&#45;471a&#45;91a1&#45;c52bfb00ef77 -->\n",
+       "<g id=\"node26\" class=\"node\">\n",
+       "<title>64a38d93&#45;403d&#45;471a&#45;91a1&#45;c52bfb00ef77</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"800.19,-199.5 712.39,-199.5 689.81,-163.5 777.61,-163.5 800.19,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"745\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Totalvolume</text>\n",
        "</g>\n",
-       "<!-- matwerk.E457491&#45;&gt;12548f54&#45;03d7&#45;4501&#45;8c43&#45;9f0ad08fe88d -->\n",
+       "<!-- 8176_TotalVolume&#45;&gt;64a38d93&#45;403d&#45;471a&#45;91a1&#45;c52bfb00ef77 -->\n",
        "<g id=\"edge27\" class=\"edge\">\n",
-       "<title>matwerk.E457491&#45;&gt;12548f54&#45;03d7&#45;4501&#45;8c43&#45;9f0ad08fe88d</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M865.62,-363.3C865.62,-373.23 865.62,-385.94 865.62,-397.3\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"862.13,-396.97 865.63,-406.97 869.13,-396.97 862.13,-396.97\"/>\n",
-       "<text text-anchor=\"middle\" x=\"875.75\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "<title>8176_TotalVolume&#45;&gt;64a38d93&#45;403d&#45;471a&#45;91a1&#45;c52bfb00ef77</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M675.09,-118.09C683,-123.48 691.52,-129.62 699,-135.75 706.27,-141.71 713.75,-148.6 720.5,-155.16\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"717.97,-157.58 727.53,-162.14 722.9,-152.61 717.97,-157.58\"/>\n",
+       "<text text-anchor=\"middle\" x=\"720.12\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
-       "<!-- 04b8fe58&#45;e7f8&#45;475a&#45;b86b&#45;eb91a6360617 -->\n",
-       "<g id=\"node29\" class=\"node\">\n",
-       "<title>04b8fe58&#45;e7f8&#45;475a&#45;b86b&#45;eb91a6360617</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1005.18,-526.5 937.49,-526.5 920.07,-490.5 987.76,-490.5 1005.18,-526.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"962.62\" y=\"-505.77\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Lammps</text>\n",
+       "<!-- 0358a436&#45;7878&#45;4e47&#45;86de&#45;053abfece585 -->\n",
+       "<g id=\"node27\" class=\"node\">\n",
+       "<title>0358a436&#45;7878&#45;4e47&#45;86de&#45;053abfece585</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"901.92,-199.5 835.23,-199.5 818.08,-163.5 884.77,-163.5 901.92,-199.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"860\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">48.2558</text>\n",
        "</g>\n",
-       "<!-- matwerk.E447986&#45;&gt;04b8fe58&#45;e7f8&#45;475a&#45;b86b&#45;eb91a6360617 -->\n",
+       "<!-- 8176_TotalVolume&#45;&gt;0358a436&#45;7878&#45;4e47&#45;86de&#45;053abfece585 -->\n",
        "<g id=\"edge28\" class=\"edge\">\n",
-       "<title>matwerk.E447986&#45;&gt;04b8fe58&#45;e7f8&#45;475a&#45;b86b&#45;eb91a6360617</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M962.62,-445.05C962.62,-454.98 962.62,-467.69 962.62,-479.05\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"959.13,-478.72 962.63,-488.72 966.13,-478.72 959.13,-478.72\"/>\n",
-       "<text text-anchor=\"middle\" x=\"972.75\" y=\"-464.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
+       "<title>8176_TotalVolume&#45;&gt;0358a436&#45;7878&#45;4e47&#45;86de&#45;053abfece585</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M693.48,-117.86C727,-130.47 772.66,-147.64 807.69,-160.82\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"806.19,-164 816.78,-164.24 808.65,-157.44 806.19,-164\"/>\n",
+       "<text text-anchor=\"middle\" x=\"797.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalEnergy&#45;&gt;activity_8173 -->\n",
-       "<g id=\"edge17\" class=\"edge\">\n",
-       "<title>8173_TotalEnergy&#45;&gt;activity_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M803.46,-118.07C816.67,-127.11 833.66,-137.85 849.88,-145.5 869.36,-154.69 891.89,-162.42 911.29,-168.26\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"910.28,-171.61 920.86,-171.05 912.24,-164.89 910.28,-171.61\"/>\n",
-       "<text text-anchor=\"middle\" x=\"897.5\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.wasCalculatedBy</text>\n",
+       "<!-- matwerk.E447986 -->\n",
+       "<g id=\"node18\" class=\"node\">\n",
+       "<title>matwerk.E447986</title>\n",
+       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"548.12,-444.75 457.88,-444.75 457.88,-408.75 548.12,-408.75 548.12,-444.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"503\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">matwerk.E447986</text>\n",
        "</g>\n",
-       "<!-- unit.EV -->\n",
-       "<g id=\"node20\" class=\"node\">\n",
-       "<title>unit.EV</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"612.62,-199.5 558.62,-199.5 558.62,-163.5 612.62,-163.5 612.62,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"585.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.EV</text>\n",
+       "<!-- matwerk.E457491&#45;&gt;matwerk.E447986 -->\n",
+       "<g id=\"edge19\" class=\"edge\">\n",
+       "<title>matwerk.E457491&#45;&gt;matwerk.E447986</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M427.05,-363.3C440.52,-374.38 458.21,-388.93 473.13,-401.19\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"470.88,-403.87 480.82,-407.52 475.32,-398.46 470.88,-403.87\"/>\n",
+       "<text text-anchor=\"middle\" x=\"495.88\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">actedOnBehalfOf</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalEnergy&#45;&gt;unit.EV -->\n",
-       "<g id=\"edge16\" class=\"edge\">\n",
-       "<title>8173_TotalEnergy&#45;&gt;unit.EV</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M734.82,-115.18C732.05,-116.05 729.3,-116.92 726.62,-117.75 700.25,-125.97 692.59,-125.04 667.12,-135.75 652.18,-142.03 636.43,-150.27 622.79,-157.96\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"621.06,-154.92 614.14,-162.94 624.55,-160.99 621.06,-154.92\"/>\n",
-       "<text text-anchor=\"middle\" x=\"695.38\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
-       "</g>\n",
-       "<!-- 79389594&#45;1584&#45;4763&#45;a243&#45;5d35ca8ccf10 -->\n",
-       "<g id=\"node30\" class=\"node\">\n",
-       "<title>79389594&#45;1584&#45;4763&#45;a243&#45;5d35ca8ccf10</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"738.55,-199.5 652.77,-199.5 630.7,-163.5 716.48,-163.5 738.55,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"684.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Totalenergy</text>\n",
-       "</g>\n",
-       "<!-- 8173_TotalEnergy&#45;&gt;79389594&#45;1584&#45;4763&#45;a243&#45;5d35ca8ccf10 -->\n",
-       "<g id=\"edge29\" class=\"edge\">\n",
-       "<title>8173_TotalEnergy&#45;&gt;79389594&#45;1584&#45;4763&#45;a243&#45;5d35ca8ccf10</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M759.01,-118.05C745.82,-129.13 728.49,-143.68 713.88,-155.94\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"711.77,-153.15 706.36,-162.26 716.27,-158.51 711.77,-153.15\"/>\n",
-       "<text text-anchor=\"middle\" x=\"748.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
-       "</g>\n",
-       "<!-- eec92a85&#45;1911&#45;49ce&#45;a483&#45;b3d892942b01 -->\n",
-       "<g id=\"node31\" class=\"node\">\n",
-       "<title>eec92a85&#45;1911&#45;49ce&#45;a483&#45;b3d892942b01</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"845.07,-199.5 774.37,-199.5 756.18,-163.5 826.88,-163.5 845.07,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"800.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">&#45;13.7346</text>\n",
-       "</g>\n",
-       "<!-- 8173_TotalEnergy&#45;&gt;eec92a85&#45;1911&#45;49ce&#45;a483&#45;b3d892942b01 -->\n",
-       "<g id=\"edge30\" class=\"edge\">\n",
-       "<title>8173_TotalEnergy&#45;&gt;eec92a85&#45;1911&#45;49ce&#45;a483&#45;b3d892942b01</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M768.28,-117.99C764.2,-126.41 761.41,-136.61 765.12,-145.5 766.41,-148.57 768.11,-151.51 770.07,-154.28\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"767.39,-156.54 776.53,-161.89 772.73,-152.01 767.39,-156.54\"/>\n",
-       "<text text-anchor=\"middle\" x=\"796.38\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
+       "<!-- 2785804e&#45;e4e8&#45;415d&#45;860b&#45;62fa830b5dfa -->\n",
+       "<g id=\"node28\" class=\"node\">\n",
+       "<title>2785804e&#45;e4e8&#45;415d&#45;860b&#45;62fa830b5dfa</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"440.34,-444.75 385.71,-444.75 371.66,-408.75 426.29,-408.75 440.34,-444.75\"/>\n",
+       "<text text-anchor=\"middle\" x=\"406\" y=\"-424.02\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Pyiron</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalVolume&#45;&gt;activity_8173 -->\n",
-       "<g id=\"edge20\" class=\"edge\">\n",
-       "<title>8173_TotalVolume&#45;&gt;activity_8173</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1062.17,-110.12C1042.06,-115.58 1018.74,-123.81 999.88,-135.75 991.88,-140.81 984.35,-147.73 977.93,-154.61\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"975.39,-152.2 971.44,-162.03 980.66,-156.81 975.39,-152.2\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1047.5\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.wasCalculatedBy</text>\n",
+       "<!-- matwerk.E457491&#45;&gt;2785804e&#45;e4e8&#45;415d&#45;860b&#45;62fa830b5dfa -->\n",
+       "<g id=\"edge29\" class=\"edge\">\n",
+       "<title>matwerk.E457491&#45;&gt;2785804e&#45;e4e8&#45;415d&#45;860b&#45;62fa830b5dfa</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M406,-363.3C406,-373.23 406,-385.94 406,-397.3\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"402.5,-396.97 406,-406.97 409.5,-396.97 402.5,-396.97\"/>\n",
+       "<text text-anchor=\"middle\" x=\"416.12\" y=\"-383.15\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
-       "<!-- unit.ANGSTROM3 -->\n",
-       "<g id=\"node22\" class=\"node\">\n",
-       "<title>unit.ANGSTROM3</title>\n",
-       "<polygon fill=\"#c9daf8\" stroke=\"#c9daf8\" points=\"1131.12,-199.5 1046.12,-199.5 1046.12,-163.5 1131.12,-163.5 1131.12,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1088.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">unit.ANGSTROM3</text>\n",
+       "<!-- 3b64e836&#45;85ed&#45;4e47&#45;b3dd&#45;8bea5e000434 -->\n",
+       "<g id=\"node29\" class=\"node\">\n",
+       "<title>3b64e836&#45;85ed&#45;4e47&#45;b3dd&#45;8bea5e000434</title>\n",
+       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"545.55,-526.5 477.86,-526.5 460.45,-490.5 528.14,-490.5 545.55,-526.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"503\" y=\"-505.77\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Lammps</text>\n",
        "</g>\n",
-       "<!-- 8173_TotalVolume&#45;&gt;unit.ANGSTROM3 -->\n",
-       "<g id=\"edge19\" class=\"edge\">\n",
-       "<title>8173_TotalVolume&#45;&gt;unit.ANGSTROM3</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1103.5,-118.05C1101.14,-127.98 1098.11,-140.69 1095.4,-152.05\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1092,-151.22 1093.09,-161.76 1098.81,-152.84 1092,-151.22\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1127.38\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasUnit</text>\n",
-       "</g>\n",
-       "<!-- 8a700e67&#45;6e09&#45;4d19&#45;861f&#45;6c423d9c28f7 -->\n",
-       "<g id=\"node32\" class=\"node\">\n",
-       "<title>8a700e67&#45;6e09&#45;4d19&#45;861f&#45;6c423d9c28f7</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1259.82,-199.5 1172.02,-199.5 1149.43,-163.5 1237.23,-163.5 1259.82,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1204.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">Totalvolume</text>\n",
-       "</g>\n",
-       "<!-- 8173_TotalVolume&#45;&gt;8a700e67&#45;6e09&#45;4d19&#45;861f&#45;6c423d9c28f7 -->\n",
-       "<g id=\"edge31\" class=\"edge\">\n",
-       "<title>8173_TotalVolume&#45;&gt;8a700e67&#45;6e09&#45;4d19&#45;861f&#45;6c423d9c28f7</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1134.72,-118.09C1142.63,-123.48 1151.15,-129.62 1158.62,-135.75 1165.9,-141.71 1173.37,-148.6 1180.13,-155.16\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1177.59,-157.58 1187.15,-162.14 1182.52,-152.61 1177.59,-157.58\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1179.75\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
-       "</g>\n",
-       "<!-- fad73c39&#45;653b&#45;4764&#45;a6ae&#45;43e8e1b051ad -->\n",
-       "<g id=\"node33\" class=\"node\">\n",
-       "<title>fad73c39&#45;653b&#45;4764&#45;a6ae&#45;43e8e1b051ad</title>\n",
-       "<polygon fill=\"#e6b8af\" stroke=\"#e6b8af\" points=\"1361.55,-199.5 1294.86,-199.5 1277.7,-163.5 1344.39,-163.5 1361.55,-199.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1319.62\" y=\"-178.78\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">48.2558</text>\n",
-       "</g>\n",
-       "<!-- 8173_TotalVolume&#45;&gt;fad73c39&#45;653b&#45;4764&#45;a6ae&#45;43e8e1b051ad -->\n",
-       "<g id=\"edge32\" class=\"edge\">\n",
-       "<title>8173_TotalVolume&#45;&gt;fad73c39&#45;653b&#45;4764&#45;a6ae&#45;43e8e1b051ad</title>\n",
-       "<path fill=\"none\" stroke=\"#263238\" d=\"M1153.1,-117.86C1186.62,-130.47 1232.28,-147.64 1267.31,-160.82\"/>\n",
-       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"1265.81,-164 1276.4,-164.24 1268.28,-157.44 1265.81,-164\"/>\n",
-       "<text text-anchor=\"middle\" x=\"1257.38\" y=\"-137.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">asmo.hasValue</text>\n",
+       "<!-- matwerk.E447986&#45;&gt;3b64e836&#45;85ed&#45;4e47&#45;b3dd&#45;8bea5e000434 -->\n",
+       "<g id=\"edge30\" class=\"edge\">\n",
+       "<title>matwerk.E447986&#45;&gt;3b64e836&#45;85ed&#45;4e47&#45;b3dd&#45;8bea5e000434</title>\n",
+       "<path fill=\"none\" stroke=\"#263238\" d=\"M503,-445.05C503,-454.98 503,-467.69 503,-479.05\"/>\n",
+       "<polygon fill=\"#263238\" stroke=\"#263238\" points=\"499.5,-478.72 503,-488.72 506.5,-478.72 499.5,-478.72\"/>\n",
+       "<text text-anchor=\"middle\" x=\"513.12\" y=\"-464.9\" font-family=\"Helvetica,sans-Serif\" font-size=\"8.00\">label</text>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
       ],
       "text/plain": [
-       "<graphviz.graphs.Digraph at 0x7fcf5bf68dd0>"
+       "<graphviz.graphs.Digraph at 0x7f7a6d6cda90>"
       ]
      },
      "execution_count": 14,
diff --git a/examples/08_dislocation.ipynb b/examples/08_dislocation.ipynb
index c5c14f5..9ceae60 100644
--- a/examples/08_dislocation.ipynb
+++ b/examples/08_dislocation.ipynb
@@ -23,7 +23,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 6,
    "id": "6e34870d-4172-49e5-b3bb-dbadf6d15cea",
    "metadata": {},
    "outputs": [],
@@ -35,7 +35,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 7,
    "id": "b293bfc3-8dea-437a-82a7-4cd01bc7a2ae",
    "metadata": {},
    "outputs": [],
@@ -45,29 +45,38 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 8,
    "id": "42017ed4-7ea2-4df6-b939-e011280fe96e",
    "metadata": {},
+   "outputs": [],
+   "source": [
+    "sys = System.create.defect.dislocation(burgers_vector,\n",
+    "                                      slip_vector,\n",
+    "                                      dislocation_line,\n",
+    "                                      elastic_constant_dict,\n",
+    "                                      element='Cu',\n",
+    "                                      dislocation_type='periodicarray')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "db1195bc-f810-45f8-9f81-a266b00c095f",
+   "metadata": {},
    "outputs": [
     {
      "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "4defb7646fa54bf288abf1f9f11f514e",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": []
+      "text/plain": [
+       "96"
+      ]
      },
+     "execution_count": 9,
      "metadata": {},
-     "output_type": "display_data"
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "sys = System.create.defect.dislocation(burgers_vector,\n",
-    "                                      slip_vector,\n",
-    "                                      dislocation_line,\n",
-    "                                      elastic_constant_dict,\n",
-    "                                      element='Cu')"
+    "sys.natoms"
    ]
   },
   {
diff --git a/setup.py b/setup.py
index 4808f78..2f2ffa1 100644
--- a/setup.py
+++ b/setup.py
@@ -6,7 +6,7 @@
 
 setup(
     name='atomrdf',
-    version='0.5.4',
+    version='0.5.5',
     author='Abril Azocar Guzman, Sarath Menon',
     author_email='sarath.menon@pyscal.org',
     description='Ontology based structural manipulation and quering',


Test patch:
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index d7856d1..7f1627f 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -28,5 +28,11 @@ jobs:
         pip install -e .
         pip install pytest
         pip install pytest-cov
-        pytest tests/
-        #pytest --cov-report=xml --cov=pyscal tests/    
+        #pytest tests/
+        pytest --cov-report=xml --cov=atomrdf tests/    
+
+    - name: Upload coverage reports to Codecov
+      uses: codecov/codecov-action@v4.0.1
+      with:
+        token: ${{ secrets.CODECOV_TOKEN }}
+        slug: pyscal/atomRDF
\ No newline at end of file
diff --git a/tests/conf.dump b/tests/conf.dump
new file mode 100644
index 0000000..37ab323
--- /dev/null
+++ b/tests/conf.dump
@@ -0,0 +1,11 @@
+ITEM: TIMESTEP
+0
+ITEM: NUMBER OF ATOMS
+2
+ITEM: BOX BOUNDS pp pp pp
+0.0 2.87
+0.0 2.87
+0.0 2.87
+ITEM: ATOMS x y z type id
+0.0 0.0 0.0 1 1
+1.435 1.435 1.435 1 2
diff --git a/tests/test_encoder_and_write.py b/tests/test_encoder_and_write.py
index e0b4ba0..ff9e45f 100644
--- a/tests/test_encoder_and_write.py
+++ b/tests/test_encoder_and_write.py
@@ -11,8 +11,14 @@ def test_encoder():
     dumpdata = json.dumps(data, cls=NumpyArrayEncoder)
     assert(np.abs(float(dumpdata.split(',')[-2]) - arr[-2]) < 1E-5)
 
+    enc = NumpyArrayEncoder()
+    assert type(enc.default(np.float64(23))) == float
+    assert type(enc.default(np.int64(23))) == int
+    assert type(enc.default(np.array([23]))) == list
+
 def test_writer(tmp_path):
     arr = np.linspace(0, 10, 100)
     data = {"array": arr}
     write_file("test_json", data)
-    assert(os.path.exists("test_json.json"))
\ No newline at end of file
+    assert(os.path.exists("test_json.json"))
+
diff --git a/tests/test_graph.py b/tests/test_graph.py
index 39e2dc3..df7c400 100644
--- a/tests/test_graph.py
+++ b/tests/test_graph.py
@@ -1,5 +1,8 @@
 import pytest
+import os
 from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
 
 def test_structuregraph():
 	s = KnowledgeGraph()
@@ -21,4 +24,114 @@ def test_structuregraph():
 	sys = System.create.element.Fe(graph=s)
 	assert s.n_samples == 1
 	#res = s.query_sample("NumberOfAtoms", 2)
-	#assert(len(res) == 1)
\ No newline at end of file
+	#assert(len(res) == 1)
+
+
+def test_logger():
+	if os.path.exists('tests/atomrdf.log'):
+		os.remove('tests/atomrdf.log')
+	s = KnowledgeGraph(enable_log=True)
+	s.log('testing-logger')
+	assert str(type(s.log).__name__) == "method"
+ 
+def test_add_structure():
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe()
+	s.add_structure(sys)
+	assert sys.sample in s.samples
+
+def test_add_cross_triple():
+	
+	s = KnowledgeGraph(enable_log=True)
+	sys = System.create.element.Fe(graph=s)
+	status, _ = s._check_domain_if_uriref((sys.material, CMSO.hasDefect, PLDO.AntiphaseBoundary))
+	assert status == True
+	
+
+def test_add_quantity():
+	s = KnowledgeGraph(enable_log=True)
+	sys = System.create.element.Fe(graph=s)
+	s.add_calculated_quantity(sys.sample,
+		'Energy',
+		str(23),
+		unit='eV')
+	cp = s.value(sys.sample, CMSO.hasCalculatedProperty)
+	val = s.value(cp, CMSO.hasValue)
+	assert val.toPython() == '23'
+
+	insp = s.inspect_sample(sys.sample)
+	assert 'Im-3m' in insp
+	assert '23' in insp
+
+def test_archive():
+	s = KnowledgeGraph(enable_log=True)
+	sys = System.create.element.Fe(graph=s)
+	sys = System.create.element.Cu(graph=s)
+	if os.path.exists('test_archive.tar.gz'):
+		os.remove('test_archive.tar.gz')
+	if os.path.exists('test_archive'):
+		shutil.rmtree('test_archive')
+	s.archive('test_archive')
+	assert os.path.exists('test_archive.tar.gz')
+
+	s = KnowledgeGraph.unarchive('test_archive.tar.gz')
+	assert s.n_samples == 2
+	os.remove('test_archive.tar.gz')
+	shutil.rmtree('test_archive')
+
+def test_sparql_query():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+	struct_Si = System.create.element.Si(graph=kg)
+	struct_l12 = System.create.lattice.l12(element=['Al', 'Ni'], 
+                         lattice_constant=3.57, graph=kg)
+	query = """
+	PREFIX cmso: <http://purls.helmholtz-metadaten.de/cmso/>
+	SELECT DISTINCT ?symbol
+	WHERE {
+	    ?sample cmso:hasNumberOfAtoms ?number .
+	    ?sample cmso:hasMaterial ?material .
+	    ?material cmso:hasStructure ?structure .
+	    ?structure cmso:hasSpaceGroup ?spgroup .
+	    ?spgroup cmso:hasSpaceGroupSymbol ?symbol .
+	FILTER (?number="4"^^xsd:integer)
+	}"""
+	res = kg.query(query)
+	assert res.symbol.values[0].toPython() == 'Pm-3m'
+
+	res = kg.query_sample(kg.ontology.terms.cmso.hasAltName, 
+	             condition=(kg.ontology.terms.cmso.hasAltName=='bcc'))
+	assert res.hasAltNamevalue.values[0].toPython() == 'bcc'
+
+	res = kg.query_sample(kg.ontology.terms.cmso.hasAltName, 
+	             condition=(kg.ontology.terms.cmso.hasAltName=='bcc'),
+	             enforce_types=True)
+	assert res.hasAltNamevalue.values[0].toPython() == 'bcc'
+
+def test_extract_sample():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+	sample_graph, no_atoms = kg.get_sample(struct_Fe.sample, no_atoms=True)
+	assert no_atoms == 2
+	assert sample_graph.samples[0] == struct_Fe.sample
+
+	struct = kg.get_system_from_sample(struct_Fe.sample)
+	assert len(struct.atoms.positions) == 2
+
+	kg.to_file(struct_Fe.sample, filename='POSCAR')
+	assert os.path.exists('POSCAR')
+	os.remove('POSCAR')
+
+	kg.to_file(struct_Fe.sample, filename='POSCAR', format='cif')
+	assert os.path.exists('POSCAR')
+	os.remove('POSCAR')
+
+#def test_add_domain_ontoterm():
+#	from atomrdf.namespace import CMSO, PLDO
+#	s = KnowledgeGraph()
+#	sys = System.create.element.Fe(graph=s)
+#	status, _ = s._check_domain_if_ontoterm((CMSO.Material, CMSO.hasDefect, PLDO.AntiphaseBoundary))
+#	assert status == True
+
+
+
diff --git a/tests/test_network.py b/tests/test_network.py
new file mode 100644
index 0000000..d552d4e
--- /dev/null
+++ b/tests/test_network.py
@@ -0,0 +1,11 @@
+import pytest
+import os
+from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+
+
+def test_network_draw():
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe(graph=s)
+	assert s.ontology.draw() != None
\ No newline at end of file
diff --git a/tests/test_store.py b/tests/test_store.py
new file mode 100644
index 0000000..b3cdb6d
--- /dev/null
+++ b/tests/test_store.py
@@ -0,0 +1,10 @@
+import pytest
+import os
+from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+
+
+def test_sqlalchemy():
+	s = KnowledgeGraph(store='SQLAlchemy', store_file='aa')
+	sys = System.create.element.Fe(graph=s)
\ No newline at end of file
diff --git a/tests/test_structure.py b/tests/test_structure.py
new file mode 100644
index 0000000..19795e8
--- /dev/null
+++ b/tests/test_structure.py
@@ -0,0 +1,82 @@
+import pytest
+import os
+import numpy as np
+from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+
+def test_custom():
+	kg = KnowledgeGraph()
+	struct = System.create.lattice.custom([[0.   , 0.   , 0.   ],
+	       [1.435, 1.435, 1.435]],
+	    [1, 1], 
+	    [[2.87, 0.  , 0.  ],
+	       [0.  , 2.87, 0.  ],
+	       [0.  , 0.  , 2.87]],
+	    lattice_constant = 2.87, 
+	    element='Fe',
+	    graph=kg)
+	assert kg.value(struct.sample, CMSO.hasNumberOfAtoms).toPython() == 2
+
+def test_dislocation():
+	burgers_vector = 0.5*np.array([1, 0, -1])
+	slip_vector = np.array([1, 1, 1])
+	dislocation_line = np.array([1, 0, -1])
+	elastic_constant_dict = {'C11': 169, 'C12': 122, 'C44': 75.4}
+	sys = System.create.defect.dislocation(burgers_vector,
+	                                      slip_vector,
+	                                      dislocation_line,
+	                                      elastic_constant_dict,
+	                                      element='Cu')
+	assert sys.natoms == 96
+
+	sys = System.create.defect.dislocation(burgers_vector,
+	                                      slip_vector,
+	                                      dislocation_line,
+	                                      elastic_constant_dict,
+	                                      element='Cu',
+	                                      dislocation_type='periodicarray')
+	assert sys.natoms == 96
+
+
+def test_read_in():
+	kg = KnowledgeGraph()
+	struct = System.read.file('tests/conf.dump', graph=kg, lattice='bcc', lattice_constant=2.861)
+	assert kg.n_samples == 1
+
+def test_delete():
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe(graph=s)
+	sys.delete(indices=[0])
+	assert sys.natoms == 1
+	ss, n= s.get_sample(sys.sample, no_atoms=True)
+	assert n==1
+
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe(graph=s)
+	del sys[0]
+	assert sys.natoms == 1
+	ss, n= s.get_sample(sys.sample, no_atoms=True)
+	assert n==1
+
+def test_substitute():
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe(graph=s)
+	sys.substitute_atoms('Li', indices=[0])
+	species = s.value(sys.sample, CMSO.hasSpecies)
+	elements = [k[2] for k in s.triples((species, CMSO.hasElement, None))]
+	assert len(elements) == 2
+
+def test_interstitials():
+	s = KnowledgeGraph()
+	sys = System.create.element.Fe(graph=s)
+	sys = sys.add_interstitial_impurities(['Li', 'Au'], void_type='tetrahedral')
+	species = s.value(sys.sample, CMSO.hasSpecies)
+	elements = [k[2] for k in s.triples((species, CMSO.hasElement, None))]
+	assert len(elements) == 3
+
+	sys = System.create.element.Fe(graph=s)
+	sys = sys.add_interstitial_impurities(['Li', 'Au'], void_type='octahedral')
+	species = s.value(sys.sample, CMSO.hasSpecies)
+	elements = [k[2] for k in s.triples((species, CMSO.hasElement, None))]
+	assert len(elements) == 3
diff --git a/tests/test_term.py b/tests/test_term.py
new file mode 100644
index 0000000..89e7f62
--- /dev/null
+++ b/tests/test_term.py
@@ -0,0 +1,67 @@
+import pytest
+import os
+from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+
+def test_lt():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term < 2
+	assert term._condition == '(?hasNumberOfAtomsvalue<"2"^^xsd:int)'
+
+def test_eq():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term == 2
+	assert term._condition == '(?hasNumberOfAtomsvalue="2"^^xsd:int)'	
+
+def test_gt():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term > 2
+	assert term._condition == '(?hasNumberOfAtomsvalue>"2"^^xsd:int)'
+
+def test_lte():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term <= 2
+	assert term._condition == '(?hasNumberOfAtomsvalue<="2"^^xsd:int)'
+
+def test_gte():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term >= 2
+	assert term._condition == '(?hasNumberOfAtomsvalue>="2"^^xsd:int)'
+
+def test_ne():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = kg.ontology.terms.cmso.hasNumberOfAtoms
+	term != 2
+	assert term._condition == '(?hasNumberOfAtomsvalue!="2"^^xsd:int)'
+
+def test_and():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = (kg.ontology.terms.cmso.hasVolume > 2) & (kg.ontology.terms.cmso.hasVolume < 4)
+	assert term._condition == '((?hasVolumevalue<"4"^^xsd:float)&&(?hasVolumevalue<"4"^^xsd:float))'
+
+def test_or():
+	kg = KnowledgeGraph()
+	struct_Fe = System.create.element.Fe(graph=kg)
+
+	term = (kg.ontology.terms.cmso.hasVolume > 2) | (kg.ontology.terms.cmso.hasVolume < 4)
+	assert term._condition == '((?hasVolumevalue<"4"^^xsd:float)||(?hasVolumevalue<"4"^^xsd:float))'
\ No newline at end of file
diff --git a/tests/test_visualise.py b/tests/test_visualise.py
new file mode 100644
index 0000000..c01770f
--- /dev/null
+++ b/tests/test_visualise.py
@@ -0,0 +1,29 @@
+import pytest
+import os
+import numpy as np
+from atomrdf import KnowledgeGraph, System
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+import atomrdf.visualize as viz
+
+
+def test_switch_box():
+	assert viz._switch_box("box") == "rectangle"
+
+def test_fix_id():
+	assert viz._fix_id('hello', 'random') == 'hello'
+	assert viz._fix_id('hello', 'Literal') != 'hello'
+
+def test_visualise():
+	s = KnowledgeGraph()
+	sys = System.create.element.Cr(graph=s)
+
+	styledict = {"edgecolor": "#D9D9D9",
+	"BNode": {"color": "#263238"}}
+	vis = s.visualise(styledict=styledict)
+	assert(vis != None)
+
+	s = KnowledgeGraph()
+	sys = System.create.element.Cr(graph=s)
+	vis = s.visualise(workflow_view=True, hide_types=True)
+	assert(vis != None)
diff --git a/tests/test_workflow.py b/tests/test_workflow.py
new file mode 100644
index 0000000..c0d68bc
--- /dev/null
+++ b/tests/test_workflow.py
@@ -0,0 +1,56 @@
+import pytest
+import os
+import numpy as np
+from atomrdf import KnowledgeGraph, System, Workflow
+from atomrdf.namespace import CMSO, PLDO
+import shutil
+
+def test_wf_creation():
+	s = KnowledgeGraph()
+	wf = Workflow(s)
+
+def test_lattice_props():
+	s = KnowledgeGraph()
+	wf = Workflow(s)
+	parent_sys = System.create.element.Cr(graph=s)
+	#add some defects
+	parent_sys.delete(indices=[0])
+	child_sys = System.create.element.Cr(graph=s)
+	#trick workflow and add info
+	wf.parent_sample = parent_sys.sample
+	wf.structure = child_sys
+	wf.sample = child_sys.sample
+	wf.add_structural_relation()
+
+
+def test_add_method():
+	for pot in ['meam', 'eam', 'lj', 'ace', 'nequip']:
+		s = KnowledgeGraph()
+		wf = Workflow(s)
+		parent_sys = System.create.element.Cr(graph=s)
+		#add some defects
+		parent_sys.delete(indices=[0])
+		child_sys = System.create.element.Cr(graph=s)
+		#trick workflow and add info
+		wf.parent_sample = parent_sys.sample
+		wf.structure = child_sys
+		wf.sample = child_sys.sample
+		wf.add_structural_relation()
+		wf.main_id = 2314
+		wf.mdict = {"method": "MolecularDynamics",
+		"temperature": 100,
+		"pressure": 0,
+		"dof": ["AtomicPosition", "CellVolume"],
+		"ensemble": "IsothermalisobaricEnsemble",
+		"id": 2314,
+		"potential": {"uri": "https://doi.org/xxx",
+		  "type": pot,
+		  "label": "string" },
+		"workflow_manager": {"uri": "xxxx",
+		  "label": "pyiron"},
+		"software": [ {"uri": "xxxx", "label": "lammps"},],
+		"outputs": [{"label": "TotalEnergy", "value": 2.301, "unit": "EV", 
+		"associate_to_sample": True}],
+		"inputs": [ {"label": "AnotherInput", "value": 0.1, "unit": None },]
+		}
+		wf.add_method()