Data model

From cosmopool meta
Jump to navigation Jump to search

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.

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

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

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

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-inheritance, Membership

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