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 / razom /

architecture.mdwn

I’d like to design a high level structure for the software system. What is the system? Razom is a system and a framwork for describing, managing and sharing information.

The focus is on the user. The user wants to access information and do manipulations and queries on it. However, in most cases the access is not the goal but a means, e.g. get a playlist to display in a media player application. So Razom makes the information sources available. That is the core of it.

Razom makes information available via an interface called Repository. A repository is an actual physical digital storage of the information. Repositories provide the basic high-level functionality user applications need:

In order to query backends which don’t have query handlers such as text files, and translate between query syntaxes and between SQL/SPARQL/etc., there is a separate query component, much like Redland has Rasqal. And in order to convert between different file syntaxes and feed one repo with another, there’s a syntax component much like Redland has Rapper or whatever its name was.

Other things may be supported as well, such as registering signals, e.g. to get notified when some data changes. This is much like inotify for files or like some SQL databases’ notification capability. But all/most interfaces are optional: A backend may decide to not support some of them.

The Repository interface also has a web interface, maybe something like XML-RPC but using YAML instead, which allows to control it remotely. It also has a web backend which uses the exact same interface, allowing it to communicate with a remote instance of itself, which in turn uses a local backend (or even a remote one, if it serves as a proxy).

As inspiration, I can use Redland and Soprano.

Things imported directly from rdd-wiki, waiting to be reorganized:

[See repo JSON]