Data model
This is an overview of Category:data model.
The data model should be very well thought. All other programming related things like servers, clients and programming languages may change with time, but the data model should not, since entering data takes the most effort.
Contents
Database type
We use a (distributed) relational database system to store the ontology. There are alternatives, but we think an RDBS is best. Especially object oriented databases (like GOODS) seem interesting, but searching a big list of instances with them is less performant than with an RDBS; we have not tried it, though. (To be more precise: Suppose we have an object A with some string valued attribute A1 and an attribute A2 referring to an instance ob object B, which has a property B1; we want to do a search for all instances of object A, which have a certain value of A1 and refer to an instance of object B with a certain value of B1. This is where object-oriented databases are slower than table joins in an RDBS.)
Why do we not use RDF triple stores? - Since we want a distributed storage, we have one object on one node, and we think that querying it for two (or more) attributes simultaneously (which is the common situation) is much faster with relational databases than with triple stores, because that's what RDBS are made for.
Mapping knowledge to data stuctures
- All knowledge is contained in tables.
- We have to face the table join problem.
Some definitions
Decision, Group, K-attribute, K-class, K-inheritance, K-instance, K-object, K-relation, K-relation class, K-relation instance, Membership, Node, Time coordinate, Topic coordinate, User
k-objects
- k-objects consist of a definition (k-class) and individuals (k-instance).
- k-objects are mapped to tables like this (each object has its own table):
knowledge entity data entity k-object table k-instance table row k-attribute table column
- The definitions (k-classes) are kept in a single table.
k-relations
- k-relations consist of a definition (K-relation class) and individuals (K-relation instances).
- k-relations are mapped to tables like this:
knowledge entity data entity k-relation table k-relation instance table row related item table column
- The definitions (k-relation classes) are kept in a single table (alhtough possibly distributed among several nodes due to space limitations).
special k-objects
These objects are interconnected with the functionality of the ontology editor and are handled differently in code:
Decision, Group, Topic coordinate, User
special k-relations
These relations are interconnected with the functionality of the ontology editor and are handled differently in code:
k-coordinates
All knowledge has three fundamental coordinates (contained, at least implicitly, in each table):
access to data
Each user can control the access to data entered by her/him. Read more.
Continue with: database