Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>

[[ 🗃 ^yEzqv rel4tion-wiki ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/yEzqv

SSH: git clone USERNAME@vervis.peers.community:yEzqv

Branches

Tags

master :: projects / smaoin / design / realization /

named-graphs.mdwn

Purpose

Explain what named graphs are and how they are used in database software.

Content

So far, it was assumed that a single program process runs and manages a single semantic database. In practice, for example in relational databases, it is common to have several separate databases, all managed by a single program. The program may use many threads and manage different databases in different processes, but it has a single interface which takes queries for all the stored databases.

A similar concept exists for semantic databases: A single server can manage many different graphs, i.e. different groups of statements. There is no semantic difference between the graphs: They can refer to each other and link to each other as if they were a single large database. The only difference is that different databases may be stored as separate files in separate locations.

Ways to implement this feature may be:

The third option should be preferred, because otherwise the result is a property without any actual semantic meaning. The separation to databases has no meaning but the ability to store them on the disk separately and move or copy them independently of other databases, and make it easy to choose their location in the file system and even put them under version control.

It is possible to use separate programs for seperate graphs, and it’s probably better in some cases, but in general a single interface can serve clients of all graphs: then queries combining data from several graphs can be executed efficiently, without the overhead of inter-process communication and synchronization protocols.

It is important to note that the separation of the database into separate graphs has no semantic value at all, and even if it seems that some graphs are used only for specific types of content, it is only an implementation detail, and only exists outside the data itself. For example, assume there is a separate graph storing the file system details. In order to perform efficient queries and help the user find information, it is okay for a database to have a statement like this:

Now the existence of this separate graph does have a meaning and a purpose, but the data inside the graph doesn’t “know” about it, e.g. a File resource doesn’t know it belongs to a graph specific to file system details. The separation into graphs serves only for physical organization of the data, and has no meaning to the data itself.

[See repo JSON]