A model is a simplified representation of certain aspects of the real world. Modelling languages and methods differ widely depending on which aspects are modelled and what we want to use models for. In ASR, we are interested in models that are backed by a rigorous theory, that allows us to employ powerful methods to analyse them, and even use them to control software systems.
We use models in Computer Science and otherwise, for a wide range of purposes: understanding, structuring, predicting, communicating whatever is expressed in the models.
Familiar (to computer scientists at least) examples of models are:
- Domain models such as UML class diagrams or OWL ontologies
- Data models such as ORM or ER diagrams
- Models of physical systems in the shape of differential equations
- Models of varieties of living things in the shape of biological taxonomies
There are two essential questions we are interested in when modelling for computer science:
- What will we do with the models? Do we want to be able to «execute» models directly, like programs? Or should they act as a reference, like dictionaries? Are they meant more for human consumption or for machines?
- How do we build the models? How can we ensure that models are correct with respect to the real world, even when they consist of thousands of entities? How can we maintain so large models? How can we ensure that they evolve in synch with other artefacts in our software system?
Here are some of the modelling approaches we use in ASR:
Rewriting Logic and ABS
Including ontology templates (OTTR), RDF constraints as data models,
Description logics, first-order logic, default logic, etc.