Concept Versioning

From Developer Documents
Jump to navigation Jump to search

Basic concepts

Rationale

Many concepts stored in the Simantics database evolve through modelling projects. Each time a concept gets changed a new version of the concepts gets created. The Simantics database provides many mechanisms for dealing with such changes

  • The semantic database stores complete modification history of any concept in the database.
  • The shared team repository stores selected database snapshots, revisions.
  • Concept versioning can be used to represent multiple versions of a logical concept. These versions can co-exist in the same database snapshot.

The database client has only limited support for browsing the database modification history and remote revisions also need to be imported into the database for processing. With concept versions the user can apply the semantic modelling framework.

Use cases

  • Management of shared modelling concepts using export/import or shared repository
  • Controlled transitioning between concept versions in model migration
  • Full-featured inspection of old versions
  • Version comparison analysis tools

Technical details

  • A concept version can be attached to all resources with L0.HasName
  • The version identifier is textual and is encoded into the resource name as <logical name>@<version identifier>
  • Version identifiers have a complete ordering defined by alphanumeric sorting
  • A version identifier in the concept hierarchy (L0.ConsistsOf) effectively creates a version of the complete sub-tree of the concept
  • User interfaces may use hiding and grouping to visualize the different versions to the user

Examples

Open Questions