Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>
Clone
HTTPS:
git clone https://vervis.peers.community/repos/yEzqv
SSH:
git clone USERNAME@vervis.peers.community:yEzqv
Branches
Tags
basics.mdwn
Purpose
Develop the wiki ontology, used for describing research/project wikis.
Descriptions
BASICS
The two basic components of a wiki are page and container. A resource can be both, i.e. a page which has sub-pages.
What if the pages under a container are ordered? How is it modeled? using a List of Pages is not a good idea, because it creates a relation of cardinality bigger than 2 (tripes of container, position and page). It can be modeled indirectly using a new concept, let’s call it item.
An item has three connections: container, page, and position which is a number.
Another idea!!! Instead of using a numeric index, use relative ordering! Allow a page to be “after” or “before” another page, and use that to determine the order! Much easier for the model. More work for software maybe, but that’s okay.
Another model: In the model above we assume a strict tree structure. I prefer to try defining a more general model for linking nodes, and then use a wiki model based on it. For example, nodes can link not just by containment, but by other relaitions like “references”, “also see”, “related to” and more specific things like “sub-topic”.
Let’s define a superclass for pages and containers. For now it’s called node.
FORGET about item for now. I’ll use an ordering relation.
There are nodes. Two kind of nodes exist: Pages and containers. Containers can contain other containers, and containers can precede other containers. Specifically they can be before or after other containers.
Question: Is it okay for a container to contain a mix of containers and pages? Answer: Yes, it can. Some nodes are simple pages, and others can be rendered as Tables Of Content of their contents. An example is API references in Devhelp: Some pages jus contain links to the hierarchy under them, and are mixed with plain pages.
STATUS
In order to track the work on pages, there is a mechanism in addition to tasks, to specify the development level of the content. More information exists on other pages in this wiki, I don’t remember where. The first question is how to model the levels: Numbers? Resources with an ordering relation?
Numbers have a problem because inserting something in the middle is diffuicult and because they are not meaningful labels. I could also use a new enumeration type, but enum values have no meaning and therefore are not suitable here, since development levels do have a meaning.
I’ll model them using a Level.
I also want it to be possible to mark the same thing for sections, i.e. I’m going to need to model __sections__s too. And I’m adding support for having pages point to their files.
Definitions
BASICS
class Node
class Page: - superclass: Node
class Container: - superclass: Node
property isAncestorOf: - domain: Container - range: Node - cardinality: unlimited
property isParentOf: - superproperty: isAncestorOf
property isBefore: - domain: Node - range: Node - cardinality: unlimited
property isFollowedBy: - superproperty: isBefore
SECTIONS AND FILES
class Section
property contains: - domain: Page - range: Section - cardinality: unlimited
external class File
property isStoredIn: - domain: Page - range: File - cardinality: 0-1
STATUS
class Level
property isLowerThan: - domain: Level - range: Level - cardinality: unlimited
property comesBefore: - superproperty: isLowerThan
property hasLevel: - domain: Section - range: Level - cardinality: 0-1