This tutorial extends the first tutorial by examples on metamodeling, i.e. to scenarios where you define objects, classes, and meta classes. Metamodeling is particularily useful in situations where you need to define your own modeling languages (domain-specific languages). You will see that you can use the ConceptBase query language to analyze the models created in your dedicated modeling languages and that it is rather easy to define simple modeling languages. Solutions to the exercises are at the end of this tutorial.
We start with a simple version of entity-relationship diagrams. First, we will define entity types and relationship types (meta classes). Then, define an example entity-relationship diagram (classes) plus some example data (objects).
In the next part, we add a simple process language to the existing entity-relationship language. We are interested in analyzing process models. In particular, we want to check whether one agent is responsible for two tasks t1 and t2, and there is a task t on the path between t1 and t2 that is assigned to another agent.
There are several methods to start the ConceptBase server and its user interface CBIva. We decide for the simplest way: start the ConceptBase server from within CBIva. So, switch to the directory to which ConceptBase is installed on your computer and start the ConceptBase.cc user interface CBiva:
cbiva
On Windows and Mac OS-X you can also start CBIva by double-clicking on the command file cbiva[.bat] in the directory where you installed ConceptBase.
Figure 1 shows the CBIva window just after starting it. If the indicator on the buttom left corner is green and has the label "Connected", then your CBIva client is auto-connected to a ConceptBase server. If it is red and displays "Disconnected", then the CBIva is not yet connected to a ConceptBase server. Press the "connect" icon just below the "File" menu in such cases to start/connect to a local ConceptBase server.