Browse Source

Updated the wrappers documentation for hierarchy as well

Yentl Van Tendeloo 8 years ago
parent
commit
396175dcbf
1 changed files with 119 additions and 116 deletions
  1. 119 116
      doc/wrappers.rst

+ 119 - 116
doc/wrappers.rst

@@ -79,15 +79,15 @@ Functions
 
 
    * To create a new model called PetriNets, conforming to SimpleClassDiagrams, and load the model stored in models/PetriNets.mvc.
    * To create a new model called PetriNets, conforming to SimpleClassDiagrams, and load the model stored in models/PetriNets.mvc.
 
 
-     >>> model_add("PetriNets", "SimpleClassDiagrams", open("models/PetriNets.mvc", "r").read())
+     >>> model_add("formalisms/PetriNets", "formalisms/SimpleClassDiagrams", open("models/PetriNets.mvc", "r").read())
 
 
    * To create a minimal instance of the language afterwards, which only contains a single place (and no attributes).
    * To create a minimal instance of the language afterwards, which only contains a single place (and no attributes).
 
 
-     >>> model_add("my_pn", "PetriNets", "Place p1 {}")
+     >>> model_add("models/my_pn", "formalisms/PetriNets", "Place p1 {}")
 
 
    * To create a less minimal instance of the language, stored in models/my_pn2.mvc.
    * To create a less minimal instance of the language, stored in models/my_pn2.mvc.
 
 
-     >>> model_add("my_pn2", "PetriNets", open("models/my_pn2.mvc", "r").read())
+     >>> model_add("models/my_pn2", "formalisms/PetriNets", open("models/my_pn2.mvc", "r").read())
 
 
 .. function:: upload_code(code)
 .. function:: upload_code(code)
 
 
@@ -115,50 +115,60 @@ Functions
 
 
    * To delete a previously created model.
    * To delete a previously created model.
 
 
-     >>> model_delete("my_pn2")
+     >>> model_delete("models/my_pn2")
 
 
    * Or to delete a metamodel, which is itself just a model.
    * Or to delete a metamodel, which is itself just a model.
 
 
-     >>> model_delete("PetriNets")
+     >>> model_delete("formalisms/PetriNets")
 
 
-.. function:: model_list()
+   * To delete a full folder.
 
 
-   Returns a list of all models existing in the Modelverse, together with their type.
+     >>> model_delete("formalisms")
+
+.. function:: model_list(location)
+
+   Returns a list of all models existing in the specified folder.
+   Sub-folders can be recognized because they have a trailing forward slash in their name.
 
 
    Examples:
    Examples:
 
 
-   * To get a list of all currently present models.
+   * To get a list of all models in the formalisms directory.
 
 
-     >>> model_list()
-     [("my_pn", "PetriNets"), ("my_pn2", "PetriNets"), ("PetriNets", "SimpleClassDiagrams"), ("SimpleClassDiagrams", "SimpleClassDiagrams")]
+     >>> model_list("formalisms")
+     ["PetriNets", "SimpleClassDiagrams", "Bottom", "Tracability", ...]
 
 
-.. function:: model_list_full()
+.. function:: model_list_full(location)
 
 
-   Returns a detailed list of all models existing in the Modelverse.
+   Returns a detailed list of all models existing in the specified folder in the Modelverse.
    This list includes information on permissions, owner, and group.
    This list includes information on permissions, owner, and group.
 
 
    Examples:
    Examples:
 
 
    * To get a detailed list of all currently present models.
    * To get a detailed list of all currently present models.
 
 
-     >>> model_list_full()
-     [("my_pn", "PetriNets", "user1", "users", "200"), ("my_pn2", "PetriNets", "user1", "users", "200"), ("PetriNets", "SimpleClassDiagrams", "user1", "users", "211"), ("SimpleClassDiagrams", "SimpleClassDiagrams", "admin", "admin", "211")]
+     >>> model_list_full("models")
+     [("my_pn", "user1", "users", "200"), ("my_pn2", "user1", "users", "200"), ...]
 
 
-.. function:: verify(model_name)
+.. function:: verify(model_name, metamodel_name)
 
 
-   Verify whether *model_name* conforms to its specified metamodel, as stored in the Modelverse.
+   Verify whether *model_name* conforms to *metammodel_name*, as both stored in the Modelverse.
    Returns either "OK" if the model conforms, or a string specifying the reason for non-conformance.
    Returns either "OK" if the model conforms, or a string specifying the reason for non-conformance.
 
 
    Examples:
    Examples:
 
 
    * Verifying a conforming model.
    * Verifying a conforming model.
 
 
-     >>> verify("PetriNets")
+     >>> verify("formalisms/PetriNets", "formalisms/SimpleClassDiagrams")
+     OK
+
+   * Or verify using the alternative conformance relation (conformance bottom).
+    
+     >>> verify("formalisms/PetriNets", "formalisms/Bottom")
      OK
      OK
 
 
    * Verifying a non-conforming model.
    * Verifying a non-conforming model.
 
 
-     >>> verify("my_pn")
+     >>> verify("models/my_pn")
      Lower cardinality violation for attribute "name" at Place p1.
      Lower cardinality violation for attribute "name" at Place p1.
 
 
 .. function:: model_overwrite(model_name, new_model_code=None)
 .. function:: model_overwrite(model_name, new_model_code=None)
@@ -171,11 +181,11 @@ Functions
 
 
    * To overwrite the PetriNets metamodel with a newer version, thereby also updating the metamodel of all existing instances ("my_pn" and "my_pn2").
    * To overwrite the PetriNets metamodel with a newer version, thereby also updating the metamodel of all existing instances ("my_pn" and "my_pn2").
 
 
-     >>> model_overwrite("PetriNets", open("models/PetriNets2.mvc", "r").read())
+     >>> model_overwrite("formalisms/PetriNets", open("models/PetriNets2.mvc", "r").read())
 
 
    * To overwrite an existing PetriNets instance.
    * To overwrite an existing PetriNets instance.
 
 
-     >>> model_overwrite("my_pn", """Place p2 {}""")
+     >>> model_overwrite("models/my_pn", """Place p2 {}""")
 
 
 .. function:: user_logout()
 .. function:: user_logout()
 
 
@@ -213,7 +223,7 @@ Functions
 
 
    * To render the PetriNets instance using the PetriNetsMapper.
    * To render the PetriNets instance using the PetriNetsMapper.
 
 
-     >>> model_render("my_pn", "PetriNetsMapper")
+     >>> model_render("models/my_pn", "formalisms/PetriNetsMapper")
      [{"id": "__12345", "type": "Ellipse", "x": 100, "y": 150, "height": 20, "width: "20"}]
      [{"id": "__12345", "type": "Ellipse", "x": 100, "y": 150, "height": 20, "width: "20"}]
 
 
 .. function:: transformation_between(source, target)
 .. function:: transformation_between(source, target)
@@ -225,7 +235,7 @@ Functions
 
 
    * To fetch all endogenous transformations on PetriNets, assuming that some were previously defined.
    * To fetch all endogenous transformations on PetriNets, assuming that some were previously defined.
 
 
-     >>> transformation_between("PetriNets", "PetriNets")
+     >>> transformation_between("formalisms/PetriNets", "formalisms/PetriNets")
      ["PN_simulate", "PN_optimize"]
      ["PN_simulate", "PN_optimize"]
 
 
    * To fetch all transformations from a DSL to PetriNets, assuming that multiple people created different denotational semantics.
    * To fetch all transformations from a DSL to PetriNets, assuming that multiple people created different denotational semantics.
@@ -249,18 +259,18 @@ Functions
 
 
    * To create a new model transformation for PetriNets simulation.
    * To create a new model transformation for PetriNets simulation.
 
 
-     >>> transformation_add_MT({"pn": "PetriNets"}, {"pn": "PetriNets"}, "pn_simulate", open("models/PN_simulate.mvc", "r").read())
+     >>> transformation_add_MT({"pn": "formalisms/PetriNets"}, {"pn": "formalisms/PetriNets"}, "models/pn_simulate", open("models/PN_simulate.mvc", "r").read())
 
 
    * To create a model transformation from a DSL to PetriNets, which requires tracability links.
    * To create a model transformation from a DSL to PetriNets, which requires tracability links.
 
 
      >>> def tracability_links():
      >>> def tracability_links():
      ...     instantiate("Association", ID="Tile2Place", ("dsl/Tile", "pn/Place"))
      ...     instantiate("Association", ID="Tile2Place", ("dsl/Tile", "pn/Place"))
      ...     instantiate("Association", ID="Dirrection2Transition", ("dsl/Direction", "pn/Transition"))
      ...     instantiate("Association", ID="Dirrection2Transition", ("dsl/Direction", "pn/Transition"))
-     >>> transformation_add_MT({"dsl": "RPGame"}, {"pn": "PetriNets"}, "denotational_1", open("models/denotational_1.mvc", "r").read(), tracability_links)
+     >>> transformation_add_MT({"dsl": "formalisms/RPGame"}, {"pn": "formalisms/PetriNets"}, "models/denotational_1", open("models/denotational_1.mvc", "r").read(), tracability_links)
 
 
    * To create a multi-input model transformation.
    * To create a multi-input model transformation.
 
 
-     >>> transformation_add_MT({"pn_1": "PetriNets", "pn_2": "PetriNets", "architecture: "Architecture"}, {"result": "PetriNets"}, "PN_merge", open("models/PN_merge.mvc", "r").read())
+     >>> transformation_add_MT({"pn_1": "formalisms/PetriNets", "pn_2": "formalisms/PetriNets", "architecture: "formalisms/Architecture"}, {"result": "formalisms/PetriNets"}, "models/PN_merge", open("models/PN_merge.mvc", "r").read())
 
 
 .. function:: transformation_add_AL(source_metamodels, target_metamodels, operation_name, code, callback=lambda: None)
 .. function:: transformation_add_AL(source_metamodels, target_metamodels, operation_name, code, callback=lambda: None)
 
 
@@ -272,13 +282,13 @@ Functions
 
 
    * To create a new action language operation for PetriNets reachability analysis.
    * To create a new action language operation for PetriNets reachability analysis.
 
 
-     >>> transformation_add_AL({"pn": "PetriNets"}, {"graph": "ReachabilityGraph"}, "pn_analyze", open("models/PN_reachability.alc", "r").read())
+     >>> transformation_add_AL({"pn": "formalisms/PetriNets"}, {"graph": "formalisms/ReachabilityGraph"}, "models/pn_analyze", open("models/PN_reachability.alc", "r").read())
 
 
    * To create an action language operation from a Scheduling DSL to a list, which requires tracability links.
    * To create an action language operation from a Scheduling DSL to a list, which requires tracability links.
 
 
      >>> def tracability_links():
      >>> def tracability_links():
      ...     instantiate("Association", ID="Task2Event", ("schedule/Task", "list/Event"))
      ...     instantiate("Association", ID="Task2Event", ("schedule/Task", "list/Event"))
-     >>> transformation_add_AL({"schedule": "SchedulingDSL"}, {"list": "EventList"}, "sequentialize", open("models/sequentialize_schedule.alc", "r").read(), tracability_links)
+     >>> transformation_add_AL({"schedule": "formalisms/SchedulingDSL"}, {"list": "formalisms/EventList"}, "models/sequentialize", open("models/sequentialize_schedule.alc", "r").read(), tracability_links)
 
 
 .. function:: transformation_add_MANUAL(source_metamodels, target_metamodels, operation_name, callback=lambda: None)
 .. function:: transformation_add_MANUAL(source_metamodels, target_metamodels, operation_name, callback=lambda: None)
 
 
@@ -289,11 +299,11 @@ Functions
 
 
    * To create a manual refinement operation on PetriNets.
    * To create a manual refinement operation on PetriNets.
 
 
-     >>> transformation_add_MANUAL({"pn": "PetriNets"}, {"pn": "PetriNets"}, "pn_refine")
+     >>> transformation_add_MANUAL({"pn": "formalisms/PetriNets"}, {"pn": "formalisms/PetriNets"}, "models/pn_refine")
 
 
    * To create a multi-input refinement operation on PetriNets.
    * To create a multi-input refinement operation on PetriNets.
 
 
-     >>> transformation_add_MANUAL({"pn": "PetriNets", "requirements": "Requirements"}, {"pn": "PetriNets"}, "pn_refine_req")
+     >>> transformation_add_MANUAL({"pn": "formalisms/PetriNets", "requirements": "formalisms/Requirements"}, {"pn": "formalisms/PetriNets"}, "models/pn_refine_req")
 
 
 .. function:: transformation_execute_AL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 .. function:: transformation_execute_AL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 
 
@@ -307,14 +317,14 @@ Functions
 
 
    * To execute reachability analysis on an existing petri net.
    * To execute reachability analysis on an existing petri net.
 
 
-     >>> transformation_execute_AL("pn_analyze", {"pn": "my_pn"}, {"graph": "my_pn_reachability"})
+     >>> transformation_execute_AL("models/pn_analyze", {"pn": "models/my_pn"}, {"graph": "models/my_pn_reachability"})
 
 
    * To execute reachability analysis which prompts the user, for example because it is a debugging prompt.
    * To execute reachability analysis which prompts the user, for example because it is a debugging prompt.
 
 
      >>> def callback(value):
      >>> def callback(value):
      ...     print(value)       # Prints out the prompt of the execution of the Action Language fragment
      ...     print(value)       # Prints out the prompt of the execution of the Action Language fragment
      ...     return raw_input() # Sends a raw request from the user to the Modelverse, consumed in the Action Language
      ...     return raw_input() # Sends a raw request from the user to the Modelverse, consumed in the Action Language
-     >>> transformation_execute_AL("pn_simulate", {"pn": "my_pn"}, {"graph": "my_pn_reachability"}, callback)
+     >>> transformation_execute_AL("models/pn_simulate", {"pn": "models/my_pn"}, {"graph": "models/my_pn_reachability"}, callback)
 
 
 .. function:: transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 .. function:: transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 
 
@@ -331,7 +341,7 @@ Functions
      ...     p1 = instantiate(None, "pn/Place")
      ...     p1 = instantiate(None, "pn/Place")
      ...     t1 = instantiate(None, "pn/Transition")
      ...     t1 = instantiate(None, "pn/Transition")
      ...     instantiate(None, "pn/P2T", (p1, t1))
      ...     instantiate(None, "pn/P2T", (p1, t1))
-     >>> transformation_execute_MANUAL("pn_refine", {"pn": "my_pn"}, {"pn": "my_pn"}, callback)
+     >>> transformation_execute_MANUAL("models/pn_refine", {"pn": "models/my_pn"}, {"pn": "models/my_pn"}, callback)
 
 
 .. function:: transformation_execute_MT(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 .. function:: transformation_execute_MT(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
 
 
@@ -342,25 +352,14 @@ Functions
 
 
    * To execute a model transformation on a PetriNets instance, thereby putting the result in a different model.
    * To execute a model transformation on a PetriNets instance, thereby putting the result in a different model.
 
 
-     >>> transformation_execute_MT("pn_simulate", {"pn": "my_pn"}, {"pn": "my_simulated_pn"})
+     >>> transformation_execute_MT("models/pn_simulate", {"pn": "models/my_pn"}, {"pn": "models/my_simulated_pn"})
 
 
    * To execute a model transformation which prompts the user.
    * To execute a model transformation which prompts the user.
 
 
      >>> def callback(value):
      >>> def callback(value):
      ...     print(value)
      ...     print(value)
      ...     return raw_input()
      ...     return raw_input()
-     >>> transformation_execute_MT("pn_simulate_prompt", {"pn": "my_pn"}, {"pn": "my_simulated_pn"}, callback)
-
-.. function:: transformation_list()
-
-   Returns a list of all operations specified in the Modelverse, together with their type.
-
-   Examples:
-
-   * To fetch a list of all transformations and their type of operation.
-
-     >>> transformation_list()
-     [("pn_simulate", "ModelTransformation"), ("pn_reachability", "ActionLanguage"), ("pn_simulate_prompt", "ModelTransformation"), ("pn_refine", "ManualOperation")]
+     >>> transformation_execute_MT("models/pn_simulate_prompt", {"pn": "models/my_pn"}, {"pn": "models/my_simulated_pn"}, callback)
 
 
 .. function:: process_execute(process_name, prefix, callbacks)
 .. function:: process_execute(process_name, prefix, callbacks)
 
 
@@ -374,7 +373,7 @@ Functions
 
 
    * To execute a process model for the power window example.
    * To execute a process model for the power window example.
 
 
-     >>> process_execute("pm_powerwindow", "pw_")
+     >>> process_execute("models/pm_powerwindow", "pw_")
 
 
    * To execute a process model for the power window example, which requires user input for some operations.
    * To execute a process model for the power window example, which requires user input for some operations.
 
 
@@ -392,7 +391,7 @@ Functions
      ...     # Do some operation on the safety query model here
      ...     # Do some operation on the safety query model here
      ...     p1 = instantiate(None, "Place")
      ...     p1 = instantiate(None, "Place")
      ...     attr_assign(None, p1, "tokens", 2)
      ...     attr_assign(None, p1, "tokens", 2)
-     >>> process_execute("pm_powerwindow", "pw_", {"refine_plant": refine_plant, "refine_control": refine_control, "refine_query": refine_query})
+     >>> process_execute("models/pm_powerwindow", "pw_", {"models/refine_plant": refine_plant, "models/refine_control": refine_control, "models/refine_query": refine_query})
 
 
 .. function:: permission_modify(model_name, permissions)
 .. function:: permission_modify(model_name, permissions)
 
 
@@ -406,11 +405,11 @@ Functions
 
 
    * To modify the permissions of the PetriNets metamodel, allowing only the owner to read and write to it.
    * To modify the permissions of the PetriNets metamodel, allowing only the owner to read and write to it.
 
 
-     >>> permission_modify("PetriNets", "200")
+     >>> permission_modify("formalisms/PetriNets", "200")
 
 
    * To modify the permissions of a PetriNets model, granting everyone read/write access.
    * To modify the permissions of a PetriNets model, granting everyone read/write access.
 
 
-     >>> permission_modify("PetriNets", "222")
+     >>> permission_modify("formalisms/PetriNets", "222")
 
 
 .. function:: permission_owner(model_name, owner)
 .. function:: permission_owner(model_name, owner)
 
 
@@ -421,7 +420,7 @@ Functions
 
 
    * To change the owning user of the PetriNets metamodel to user2.
    * To change the owning user of the PetriNets metamodel to user2.
 
 
-     >>> permission_owner("PetriNets", "user2")
+     >>> permission_owner("formalisms/PetriNets", "user2")
 
 
 .. function:: permission_group(model_name, group)
 .. function:: permission_group(model_name, group)
 
 
@@ -432,7 +431,7 @@ Functions
 
 
    * To change the owning group of the PetriNets metamodel to group1.
    * To change the owning group of the PetriNets metamodel to group1.
 
 
-     >>> permission_group("PetriNets", "group1")
+     >>> permission_group("formalisms/PetriNets", "group1")
 
 
 .. function:: group_create(group_name)
 .. function:: group_create(group_name)
 
 
@@ -530,7 +529,7 @@ Functions
 
 
    * To get a list of all elements in the PetriNets metamodel.
    * To get a list of all elements in the PetriNets metamodel.
 
 
-     >>> element_list("PetriNets")
+     >>> element_list("formalisms/PetriNets")
      [("Place", "Class"), ("Transition", "Class"), ("P2T", "Association"), ("T2P", "Association"), ...]
      [("Place", "Class"), ("Transition", "Class"), ("P2T", "Association"), ("T2P", "Association"), ...]
 
 
 .. function:: types(model_name)
 .. function:: types(model_name)
@@ -543,7 +542,7 @@ Functions
 
 
    * To get a list of all types usable in the PetriNets metamodel (i.e., when altering the metamodel itself).
    * To get a list of all types usable in the PetriNets metamodel (i.e., when altering the metamodel itself).
 
 
-     >>> types("PetriNets")
+     >>> types("formalisms/PetriNets")
      ["Class", "Association", "SimpleAttribute", ...]
      ["Class", "Association", "SimpleAttribute", ...]
 
 
 .. function:: types_full(model_name)
 .. function:: types_full(model_name)
@@ -555,7 +554,7 @@ Functions
 
 
    * To get a list of all types usable in the PetriNets metamodel (i.e., when altering the metamodel itself).
    * To get a list of all types usable in the PetriNets metamodel (i.e., when altering the metamodel itself).
 
 
-     >>> types("PetriNets")
+     >>> types("formalisms/PetriNets")
      ["Class", "Association", "SimpleAttribute", "__12345", ...]
      ["Class", "Association", "SimpleAttribute", "__12345", ...]
 
 
 .. function:: read(model_name, ID)
 .. function:: read(model_name, ID)
@@ -567,12 +566,12 @@ Functions
 
 
    * To read out the P2T link in the PetriNets metamodel.
    * To read out the P2T link in the PetriNets metamodel.
 
 
-     >>> read("PetriNets", "P2T")
+     >>> read("formalisms/PetriNets", "P2T")
      ["Association", ("Place", "Transition")]
      ["Association", ("Place", "Transition")]
 
 
    * To read out the Place node in the PetriNets metamodel.
    * To read out the Place node in the PetriNets metamodel.
 
 
-     >>> read("PetriNets", "Place")
+     >>> read("formalisms/PetriNets", "Place")
      ["Class", None]
      ["Class", None]
 
 
    * To read out some P2T instance in a PetriNets model.
    * To read out some P2T instance in a PetriNets model.
@@ -595,12 +594,12 @@ Functions
 
 
    * To read out the attributes of the Place class.
    * To read out the attributes of the Place class.
 
 
-     >>> read_attrs("PetriNets", "Place")
+     >>> read_attrs("formalisms/PetriNets", "Place")
      {"lower_cardinality": None, "upper_cardinality": None}
      {"lower_cardinality": None, "upper_cardinality": None}
 
 
    * To read out the attributes of a Place instance.
    * To read out the attributes of a Place instance.
 
 
-     >>> read_attrs("my_pn", "p1")
+     >>> read_attrs("models/my_pn", "p1")
      {"name": "critical_section", "tokens": 1}
      {"name": "critical_section", "tokens": 1}
 
 
 .. function:: instantiate(model_name, typename, edge=None, ID="")
 .. function:: instantiate(model_name, typename, edge=None, ID="")
@@ -615,29 +614,29 @@ Functions
 
 
    * To create a new Place instance in a PetriNets model.
    * To create a new Place instance in a PetriNets model.
 
 
-     >>> instantiate("my_pn", "Place")
+     >>> instantiate("models/my_pn", "Place")
      "__12345"
      "__12345"
 
 
    * To create a new Place instance with a preferred ID, which is granted.
    * To create a new Place instance with a preferred ID, which is granted.
 
 
-     >>> instantiate("my_pn", "Place", ID="critical_section")
+     >>> instantiate("models/my_pn", "Place", ID="critical_section")
     "critical_section"
     "critical_section"
 
 
    * To create a new Place instance with a preferred ID, which is not granted.
    * To create a new Place instance with a preferred ID, which is not granted.
 
 
-     >>> instantiate("my_pn", "Place", ID="critical_section")
+     >>> instantiate("models/my_pn", "Place", ID="critical_section")
      critical_section_12345"
      critical_section_12345"
 
 
    * To create a new P2T instance in a PetriNets model.
    * To create a new P2T instance in a PetriNets model.
 
 
-     >>> instantiate("my_pn", "P2T", ("p1", "t1"))
+     >>> instantiate("models/my_pn", "P2T", ("p1", "t1"))
      "__12345"
      "__12345"
 
 
    * To create a new concept in the PetriNets metamodel, which can later on be used in all instances immediately.
    * To create a new concept in the PetriNets metamodel, which can later on be used in all instances immediately.
 
 
-     >>> instantiate("PetriNets", "Association", ("Place", "Transition"), ID="InhibitorArc")
+     >>> instantiate("formalisms/PetriNets", "Association", ("Place", "Transition"), ID="InhibitorArc")
      "InhibitorArc"
      "InhibitorArc"
-     >>> instantiate("my_pn", "InhibitorArc", ("p1", "t1"))
+     >>> instantiate("models/my_pn", "InhibitorArc", ("p1", "t1"))
      "__12345"
      "__12345"
 
 
 .. function:: delete_element(model_name, ID)
 .. function:: delete_element(model_name, ID)
@@ -649,16 +648,16 @@ Functions
 
 
    * To delete an existing element in a PetriNets model.
    * To delete an existing element in a PetriNets model.
 
 
-     >>> delete_element("my_pn", "critical_section")
+     >>> delete_element("models/my_pn", "critical_section")
 
 
    * To delete an existing exdge in a PetriNets model.
    * To delete an existing exdge in a PetriNets model.
 
 
-     >>> delete_element("my_pn", "p1_to_t1")
+     >>> delete_element("models/my_pn", "p1_to_t1")
 
 
    * When deleting an element "p1", the arc "p1_to_t1" is also removed automatically.
    * When deleting an element "p1", the arc "p1_to_t1" is also removed automatically.
 
 
-     >>> delete_element("my_pn", "p1")
-     >>> delete_element("my_pn", "p1_to_t1")
+     >>> delete_element("models/my_pn", "p1")
+     >>> delete_element("models/my_pn", "p1_to_t1")
      UnknownIdentifierException("p1_to_t1")
      UnknownIdentifierException("p1_to_t1")
 
 
 .. function:: attr_assign(model_name, ID, attr, value)
 .. function:: attr_assign(model_name, ID, attr, value)
@@ -670,12 +669,12 @@ Functions
 
 
    * To assign some attributes to a Place instance.
    * To assign some attributes to a Place instance.
 
 
-     >>> attr_assign("my_pn", "p1", "name", "my first place")
-     >>> attr_assign("my_pn", "p1", "tokens", 1)
+     >>> attr_assign("models/my_pn", "p1", "name", "my first place")
+     >>> attr_assign("models/my_pn", "p1", "tokens", 1)
 
 
    * To assign some attributes to the Place class itself.
    * To assign some attributes to the Place class itself.
 
 
-     >>> attr_assign("PetriNets", "Place", "upper_cardinality", 1)
+     >>> attr_assign("formalisms/PetriNets", "Place", "upper_cardinality", 1)
 
 
 .. function:: attr_assign_code(model_name, ID, attr, code)
 .. function:: attr_assign_code(model_name, ID, attr, code)
 
 
@@ -687,7 +686,7 @@ Functions
 
 
    * To assign a piece of action code to a Statecharts transition, loaded from file.
    * To assign a piece of action code to a Statecharts transition, loaded from file.
 
 
-     >>> attr_assign_code("my_sc", "t1", "script", open("models/t1_script", "r").read())
+     >>> attr_assign_code("models/my_sc", "t1", "script", open("models/t1_script", "r").read())
 
 
    * To assign a piece of action code to a Statecharts transition, defined inline.
    * To assign a piece of action code to a Statecharts transition, defined inline.
 
 
@@ -697,7 +696,7 @@ Functions
      ...        dict_overwrite(attributes, "counter", 1)
      ...        dict_overwrite(attributes, "counter", 1)
      ...        return!
      ...        return!
      ...   """
      ...   """
-     >>> attr_assign_code("my_sc", "t1", "script", code)
+     >>> attr_assign_code("models/my_sc", "t1", "script", code)
 
 
 .. function:: attr_delete(model_name, ID, attr)
 .. function:: attr_delete(model_name, ID, attr)
 
 
@@ -709,7 +708,7 @@ Functions
 
 
    * To unset the name attribute of a place.
    * To unset the name attribute of a place.
 
 
-     >>> attr_delete("my_pn", "p1", "name")
+     >>> attr_delete("models/my_pn", "p1", "name")
 
 
 .. function:: read_outgoing(model_name, ID, typename)
 .. function:: read_outgoing(model_name, ID, typename)
 
 
@@ -721,12 +720,12 @@ Functions
 
 
    * To get all arcs starting in place p1.
    * To get all arcs starting in place p1.
 
 
-     >>> read_outgoing("my_pn", "p1", "P2T")
+     >>> read_outgoing("models/my_pn", "p1", "P2T")
      ["p1_to_t1"]
      ["p1_to_t1"]
 
 
    * To get all allowed connections starting in a Place.
    * To get all allowed connections starting in a Place.
 
 
-     >>> read_outgoing("PetriNets", "Place", "Association")
+     >>> read_outgoing("formalisms/PetriNets", "Place", "Association")
      ["P2T", "InhibitorArc"]
      ["P2T", "InhibitorArc"]
 
 
 .. function:: read_incoming(model_name, ID, typename)
 .. function:: read_incoming(model_name, ID, typename)
@@ -739,12 +738,12 @@ Functions
 
 
    * To get all arcs going to place p1.
    * To get all arcs going to place p1.
 
 
-     >>> read_incoming("my_pn", "p1", "T2P")
+     >>> read_incoming("models/my_pn", "p1", "T2P")
      ["t1_to_p1"]
      ["t1_to_p1"]
 
 
    * To get all allowed connections going to a Place.
    * To get all allowed connections going to a Place.
 
 
-     >>> read_incoming("PetriNets", "Place", "Association")
+     >>> read_incoming("formalisms/PetriNets", "Place", "Association")
      ["T2P"]
      ["T2P"]
 
 
 .. function:: read_association_source(model_name, ID)
 .. function:: read_association_source(model_name, ID)
@@ -755,12 +754,12 @@ Functions
 
 
    * To read out the source of the P2T link.
    * To read out the source of the P2T link.
 
 
-     >>> read_association_source("PetriNets", "P2T")
+     >>> read_association_source("formalisms/PetriNets", "P2T")
      "Place"
      "Place"
 
 
    * To read out the source of an arc.
    * To read out the source of an arc.
 
 
-     >>> read_association_source("my_pn", "p1_to_t1")
+     >>> read_association_source("models/my_pn", "p1_to_t1")
      "p1"
      "p1"
 
 
 .. function:: read_association_destination(model_name, ID)
 .. function:: read_association_destination(model_name, ID)
@@ -771,12 +770,12 @@ Functions
 
 
    * To read out the target of the P2T link.
    * To read out the target of the P2T link.
 
 
-     >>> read_association_destination("PetriNets", "P2T")
+     >>> read_association_destination("formalisms/PetriNets", "P2T")
      "Transition"
      "Transition"
 
 
    * To read out the target of an arc.
    * To read out the target of an arc.
 
 
-     >>> read_association_destination("my_pn", "p1_to_t1")
+     >>> read_association_destination("models/my_pn", "p1_to_t1")
      "t1"
      "t1"
 
 
 .. function:: service_register(name, function)
 .. function:: service_register(name, function)
@@ -868,8 +867,8 @@ Functions
 
 
    * To read out the signature of the "plant_refine" operation.
    * To read out the signature of the "plant_refine" operation.
 
 
-     >>> transformation_read_signature("plant_refine")
-     ({"req": "Requirements", "plant": "Plant"}, {"plant": "Plant"})
+     >>> transformation_read_signature("models/plant_refine")
+     ({"req": "formalisms/Requirements", "plant": "formalisms/Plant"}, {"plant": "formalisms/Plant"})
 
 
 .. function:: element_list_nice(model_name)
 .. function:: element_list_nice(model_name)
 
 
@@ -881,7 +880,7 @@ Functions
 
 
    * To read out a list of a PetriNets instance model.
    * To read out a list of a PetriNets instance model.
 
 
-     >>> element_list_nice("my_pn")
+     >>> element_list_nice("models/my_pn")
      [{"id": "p1", "name": "a place", "tokens": 1}, {"id": "t1", "name": "a transition"}, {"id": "p1_to_t1", "name": "transition", "__source": "p1", "__target": "t1", "weight": 1}]
      [{"id": "p1", "name": "a place", "tokens": 1}, {"id": "t1", "name": "a transition"}, {"id": "p1_to_t1", "name": "transition", "__source": "p1", "__target": "t1", "weight": 1}]
 
 
 .. function:: connections_between(model_name, source_element, target_element)
 .. function:: connections_between(model_name, source_element, target_element)
@@ -893,12 +892,12 @@ Functions
 
 
    * To read out the allowed connections between elements "p1" and "t1".
    * To read out the allowed connections between elements "p1" and "t1".
 
 
-     >>> connections_between("my_pn", "p1", "t1")
+     >>> connections_between("models/my_pn", "p1", "t1")
      ["P2T"]
      ["P2T"]
 
 
    * To read out the allowed connections from the Place class to itself.
    * To read out the allowed connections from the Place class to itself.
 
 
-     >>> connections_between("PetriNets", "Place", "Place")
+     >>> connections_between("formalisms/PetriNets", "Place", "Place")
      ["Association", "Inheritance"]
      ["Association", "Inheritance"]
 
 
 .. function:: define_attribute(model_name, node, attr_name, attr_type)
 .. function:: define_attribute(model_name, node, attr_name, attr_type)
@@ -913,7 +912,7 @@ Functions
 
 
    * To define a new attribute "tokens" on a PetriNet Place, which is of a Natural type.
    * To define a new attribute "tokens" on a PetriNet Place, which is of a Natural type.
 
 
-     >>> define_attribute("PetriNets", "Place", "tokens", Natural)
+     >>> define_attribute("formalisms/PetriNets", "Place", "tokens", Natural)
 
 
 .. function:: all_instances(model_name, type_name)
 .. function:: all_instances(model_name, type_name)
 
 
@@ -924,12 +923,12 @@ Functions
 
 
    * To get all places in a PetriNet model.
    * To get all places in a PetriNet model.
 
 
-     >>> all_instances("my_pn", "Place")
+     >>> all_instances("models/my_pn", "Place")
      ["p1", "__12345"]
      ["p1", "__12345"]
 
 
    * To get all nodes that can be instantiated directly for PetriNets.
    * To get all nodes that can be instantiated directly for PetriNets.
 
 
-     >>> all_instances("PetriNets", "Class")
+     >>> all_instances("formalisms/PetriNets", "Class")
      ["Place", "Transition", "P2T", "T2P"]
      ["Place", "Transition", "P2T", "T2P"]
 
 
 .. function:: service_poll(port)
 .. function:: service_poll(port)
@@ -976,7 +975,9 @@ Functions
 
 
    Examples:
    Examples:
 
 
-   * To 
+   * To change the default metamodel of PetriNets to Bottom.
+
+     >>> alter_context("formalisms/PetriNets", "formalisms/Bottom")
 
 
 .. function:: allowed_metamodels(model_name)
 .. function:: allowed_metamodels(model_name)
 
 
@@ -990,17 +991,17 @@ Functions
 
 
    * To fetch the metamodels to which a PetriNet model conforms, where it is explicitly set that it also conforms to PetriNets which use inhibitor arcs.
    * To fetch the metamodels to which a PetriNet model conforms, where it is explicitly set that it also conforms to PetriNets which use inhibitor arcs.
 
 
-     >>> allowed_metamodels("my_pn")
-     ["PetriNets", "Bottom", "PetriNets_Inhibitor"]
+     >>> allowed_metamodels("models/my_pn")
+     ["formalisms/PetriNets", "formalisms/Bottom", "formalisms/PetriNets_Inhibitor"]
 
 
    * When all typing relations were explicitly removed.
    * When all typing relations were explicitly removed.
 
 
-     >>> allowed_metamodels("my_pn")
+     >>> allowed_metamodels("models/my_pn")
      []
      []
 
 
    * Usual situation when there is no metamodel specified.
    * Usual situation when there is no metamodel specified.
 
 
-     >>> allowed_metamodels("my_pn")
+     >>> allowed_metamodels("models/my_pn")
      ["Bottom"]
      ["Bottom"]
 
 
 .. function:: remove_metamodel(model_name, metamodel_name)
 .. function:: remove_metamodel(model_name, metamodel_name)
@@ -1012,7 +1013,7 @@ Functions
 
 
    * To remove the PetriNets_Inhibitor metamodel for my_pn.
    * To remove the PetriNets_Inhibitor metamodel for my_pn.
 
 
-     >>> remove_metamodel("my_pn", "PetriNets_Inhibitor")
+     >>> remove_metamodel("models/my_pn", "formalisms/PetriNets_Inhibitor")
 
 
 .. function:: add_metamodel(model_name, metamodel_name, partial_type_mapping=None)
 .. function:: add_metamodel(model_name, metamodel_name, partial_type_mapping=None)
 
 
@@ -1020,12 +1021,14 @@ Functions
    It creates the relation, and will try to find a type mapping between them automatically.
    It creates the relation, and will try to find a type mapping between them automatically.
    A *partial_type_mapping* can be passed, which will be used as a starting point when searching for a conformance relation.
    A *partial_type_mapping* can be passed, which will be used as a starting point when searching for a conformance relation.
    Multiple possible relations might be found, in which case an arbitrary type mapping is taken.
    Multiple possible relations might be found, in which case an arbitrary type mapping is taken.
+
+   TODO: allow for the partial type mapping
    
    
    Examples:
    Examples:
 
 
    * To try and make my_pn conform to PetriNets_Inhibitor again; this results in multiple options!
    * To try and make my_pn conform to PetriNets_Inhibitor again; this results in multiple options!
 
 
-     >>> add_metamodel("my_pn", "PetriNets_Inhibitor")
+     >>> add_metamodel("models/my_pn", "formalisms/PetriNets_Inhibitor")
 
 
 Exceptions
 Exceptions
 ^^^^^^^^^^
 ^^^^^^^^^^
@@ -1049,7 +1052,7 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When the Modelverse is suddenly killed during execution, while there was an outstanding request.
    * When the Modelverse is suddenly killed during execution, while there was an outstanding request.
 
 
-     >>> element_list("PetriNets") # <-- Modelverse killed during execution
+     >>> element_list("formalisms/PetriNets") # <-- Modelverse killed during execution
      UnknownError()
      UnknownError()
 
 
 .. exception:: UnknownIdentifier
 .. exception:: UnknownIdentifier
@@ -1061,22 +1064,22 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When reading out a non-existing element in a PetriNets model.
    * When reading out a non-existing element in a PetriNets model.
 
 
-     >>> read("my_pn", "p0")
+     >>> read("models/my_pn", "p0")
      UnknownIdentifier("p0")
      UnknownIdentifier("p0")
 
 
    * When reading out the allowed connections between two elements, of which neither exists.
    * When reading out the allowed connections between two elements, of which neither exists.
 
 
-     >>> connections_between("my_pn", "p0", "t0")
+     >>> connections_between("models/my_pn", "p0", "t0")
      UnkownIdentifier("p0")
      UnkownIdentifier("p0")
 
 
    * When reading out the allowed connections between two elements, of which the target doesn't exists.
    * When reading out the allowed connections between two elements, of which the target doesn't exists.
 
 
-     >>> connections_between("my_pn", "p1", "t0")
+     >>> connections_between("models/my_pn", "p1", "t0")
      UnkownIdentifier("t0")
      UnkownIdentifier("t0")
 
 
    * When instantiating a non-existing element in the meta-model.
    * When instantiating a non-existing element in the meta-model.
 
 
-     >>> instantiate("my_pn", "CapacityConstrainedPlace")
+     >>> instantiate("models/my_pn", "CapacityConstrainedPlace")
      UnkownIdentifier("CapacityConstrainedPlace")
      UnkownIdentifier("CapacityConstrainedPlace")
 
 
 .. exception:: UnsupportedValue
 .. exception:: UnsupportedValue
@@ -1088,12 +1091,12 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When assigning a list as attribute.
    * When assigning a list as attribute.
 
 
-      >>> attr_assign("my_pn", "p1", "tokens", [1, 2, 3])
+      >>> attr_assign("models/my_pn", "p1", "tokens", [1, 2, 3])
       UnsupporteValue("[1, 2, 3] : list")
       UnsupporteValue("[1, 2, 3] : list")
 
 
    * When assigning a None value to an attribute.
    * When assigning a None value to an attribute.
 
 
-      >>> attr_assign("my_pn", "p1", "name", None)
+      >>> attr_assign("models/my_pn", "p1", "name", None)
       UnsupportedValue("None : NoneType")
       UnsupportedValue("None : NoneType")
 
 
 .. exception:: CompilationError
 .. exception:: CompilationError
@@ -1106,7 +1109,7 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When assigning a code block which cannot be parsed as action language.
    * When assigning a code block which cannot be parsed as action language.
 
 
-     >>> attr_assign_code("my_pn", "p1", "tokens", "1")
+     >>> attr_assign_code("models/my_pn", "p1", "tokens", "1")
      CompilationError("Parsing error at line 1: ...")
      CompilationError("Parsing error at line 1: ...")
 
 
 .. exception:: NoSuchAttribute
 .. exception:: NoSuchAttribute
@@ -1118,7 +1121,7 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When assigning a non-existing attribute.
    * When assigning a non-existing attribute.
 
 
-     >>> attr_assign("my_pn", "p1", "capacity", 2)
+     >>> attr_assign("models/my_pn", "p1", "capacity", 2)
      NoSuchAttribute("capacity")
      NoSuchAttribute("capacity")
 
 
 .. exception:: UnknownModel
 .. exception:: UnknownModel
@@ -1130,7 +1133,7 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When trying to execute a non-existing transformation.
    * When trying to execute a non-existing transformation.
 
 
-     >>> transformation_execute_MT("pn_optimize", {"pn": "my_pn"}, {"pn": "my_optimized_pn"})
+     >>> transformation_execute_MT("models/pn_optimize", {"pn": "models/my_pn"}, {"pn": "models/my_optimized_pn"})
      UnknownModel("pn_optimize")
      UnknownModel("pn_optimize")
 
 
 .. exception:: ConnectionError
 .. exception:: ConnectionError
@@ -1157,8 +1160,8 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When the model "my_pn" already exists.
    * When the model "my_pn" already exists.
 
 
-     >>> model_add("my_pn", "PetriNets")
-     ModelExists("my_pn")
+     >>> model_add("models/my_pn", "PetriNets")
+     ModelExists("models/my_pn")
 
 
 .. exception:: PermissionDenied
 .. exception:: PermissionDenied
 
 
@@ -1174,13 +1177,13 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When listing the elements of a model which we aren't allowed to read.
    * When listing the elements of a model which we aren't allowed to read.
 
 
-     >>> element_list("secret_model")
-     PermissionDenied("secret_model")
+     >>> element_list("models/secret_model")
+     PermissionDenied("models/secret_model")
 
 
    * When altering a model which we are only allowed to read.
    * When altering a model which we are only allowed to read.
 
 
-     >>> instantiate("SimpleClassDiagrams", "NewClass")
-     PermissionDenied("SimpleClassDiagrams")
+     >>> instantiate("formalisms/SimpleClassDiagrams", "NewClass")
+     PermissionDenied("formalisms/SimpleClassDiagrams")
 
 
 .. exception:: InvalidMode
 .. exception:: InvalidMode
 
 
@@ -1194,7 +1197,7 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
      >>> login("admmin", "wrong_password")
      >>> login("admmin", "wrong_password")
      PermissionDenied("admin")
      PermissionDenied("admin")
-     >>> element_list("SimpleClassDiagrams")
+     >>> element_list("formalisms/SimpleClassDiagrams")
      InvalidMode()
      InvalidMode()
 
 
 .. exception:: InterfaceMismatch
 .. exception:: InterfaceMismatch
@@ -1213,9 +1216,9 @@ Below is a list of all exceptions that the wrappers can raise, together with a s
 
 
    * When erroneously trying to interpret a petrinet model as a Class Diagram.
    * When erroneously trying to interpret a petrinet model as a Class Diagram.
    
    
-     >>> alter_context("my_pn", "SimpleClassDiagrams")
+     >>> alter_context("models/my_pn", "formalisms/SimpleClassDiagrams")
      >>> element_list()
      >>> element_list()
-     UnknownMetamodellingHierarchy("my_pn")
+     UnknownMetamodellingHierarchy("models/my_pn")
 
 
 Custom
 Custom
 ------
 ------