wiki:StorageModel

Storage Model for V2

I'll give here an example of a fictitious repository with sample resources, that I will represent with their URL (I removed the URL prefix that could be for example:  http://resources.calenco.com/workspaces/neodoc/)

A few files aka the real content:

  • content/en/userguide.xml
  • content/en/intro.xml
  • content/fr/intro.xml
  • content/fr/userguide.xml
  • content/logo.png
  • content/docbook-fo.xsl

Workflows

I'm not sure about this part. There are Open-Source workflow engine we could reuse ( http://www.manageability.org/blog/stuff/workflow_in_java  http://java-source.net/open-source/workflow-engines)

  • workflows/myworkflow[type=content]/write
  • workflows/myworkflow/proofread
  • workflows/myworkflow/validate
  • workflows/myworkflow/publish
  • workflows/mycomments[type=comment]/tobedone
  • workflows/mycomments/discarded
  • workflows/mycomments/fixed

Ontologies

  • ontologies/classification/technology/OpenOffice
  • ontologies/classification/marketing

Publications

  • publications/1[content/en/userguide.xml|content/docbook-fo.xsl|.......]1

Comments

  • comments/1[This paragraph is too vague, must be rephrased]
  • comments/2[Can you be more specific? What's Wrong?]

Releases

  • releases/1[1.0|2008-04-12]
  • releases/2[1.1|2009-01-04]
  • releases/3[2009Spring|2009-05-14]

Associations

  • rdf/1[content/en/userguide.xml|hasADepCalled|content/en/intro.xml]
  • rdf/2[content/en/userguide.xml|hasADepCalled|content/logo.png]
  • rdf/3[content/fr/userguide.xml|hasADepCalled|content/fr/intro.xml]
  • rdf/4[content/fr/userguide.xml|hasADepCalled|content/logo.png]
  • rdf/5[content/fr/userguide.xml|isTranslationOf|content/en/userguide.xml]
  • rdf/6[content/fr/intro.xml|isTranslationOf|content/en/intro.xml]
  • rdf/7[content/en/userguide.xml|isSortedAs|classification/technology/OpenOffice]
  • rdf/8[content/logo.png|isSortedAs|classification/marketing]
  • rdf/9[content/en/userguide.xml|currentTaskIs|workflow/myworkflow/write]
  • rdf/10[workflow/myworkflow/write|defaultOwnerIs| http://resources.calenco.com/system/users/camille]
  • rdf/11[content/en/userguide.xml|currentTaskOwnerIs| http://resources.calenco.com/system/users/fabian] 2
  • rdf/12[publications/1|hasADepCalled|content/en/userguide.xml]
  • rdf/13[publications/1|hasADepCalled|content/docbook-fo.xsl]
  • rdf/14[content/fr/intro.xml#p12|hasAComment|comments/1]
  • rdf/15[comments/1|hasAComment|comments/2]
  • rdf/16[content/en/userguide.xml|hasAuthor| http://resources.calenco.com/system/users/camille]
  • rdf/17[comments/1|hasAuthor| http://resources.calenco.com/system/users/fabian]
  • rdf/18[comments/2|hasAuthor| http://resources.calenco.com/system/users/camille]
  • rdf/19[comments/1|currentTaskIs|workflows/mycomments/tobedone] 3
  • rdf/20[releases/1|hasADepCalled|content/en/userguide.xml|45]
  • rdf/20[releases/1|hasADepCalled|content/logo.png|5]
  • rdf/20[releases/1|hasADepCalled|content/docbook-fo.xsl|12]
  • rdf/20[releases/1|hasADepCalled|content/publications/1|16]

A Note About versioning

Only content is versionned. So modules can be referenced as content/en/userguide.xml?rev=1.2


The text below is obsolete.

Let's see what happens for example when a task is passed on a specific XML file:

Association \ Version N N+1
en/userguide.xml current Task rdf/9[content/en/userguide.xml|currentTaskIs|workflow/myworkflow/write] rdf/9[content/en/userguide.xml|currentTaskIs|workflow/myworkflow/write]
en/userguide.xml current Task Owner rdf/11[content/en/userguide.xml|currentTaskOwnerIs|system/users/fabian] rdf/11[content/en/userguide.xml|currentTaskOwnerIs|system/users/john]

Thanks to this, one can know the exact workflow state of a module at all versions, who was in charge, what was the module content at that time, etc.

That also means that there must be a version parameter for all the URLs of this page. It is set to HEAD by default.

For more details see VersioningSpecs


  1. 1. See PublicationsManagement
  2. 2. currentTaskOwner is defaultOwner unless currentTaskOwner attributes the task to someone else
  3. 3. The user that writes the comment optionaly chooses a workflow for it