Ticket #109 (closed Enhancement: fixed)

Opened 9 years ago

Last modified 9 years ago

Add facets to the core data model

Reported by: jri Owned by: jri
Priority: Major Milestone: Release 4.1
Component: DeepaMehta Standard Distribution Version: 4.0.4
Keywords: Cc: JuergeN, dgf
Complexity: 13 Area:
Module: deepamehta-core

Description (last modified by jri) (diff)

Regardless of its type a topic can be attached to any number of domain-specific "facets". Facets are on a per-topic basis. E.g. a File topic which has an underlying MP3 file can be attached to a "ID3 Tags" facet. Or any topic with a geo-reference can be attached to a "Geo Coordinate" facet.

A facet is modeled like a type. E.g. "ID3 Tags" or "Geo Coordinate" are (composite) types. A File or a Person instance is then attached to "ID3 Tags" or "GPS coordinate" instances respectively. Attachment happens through associations of a special association type (or role type) named "Facet". The "Facet" meta-type is part of the DM core. The actual facet types in turn are provided by domain-specific modules/plugins. The mentioned facets can be provided e.g. by the "Music Jukebox" and "Geo Mapping" modules respectively.

Being part of the DM core model facets can be exploited e.g. by the REST API and by the web client's page and form generators. Requesting a topic via REST API involves selected facets which are retrieved along with the topic. The page and form generators can be configured to involve selected facets in its rendering/processing procedures. Which facets are involved in each case depends on the application context. E.g. in a multi-site scenario with *one* underlying DM storage each site can be setup to present a different facet of the same topic.

The overall goal of the facet feature is to cope with multi-dimensionality of information without relying on rigid multiple-inheritance. Its rather a multi-typing system.

Attachments

Facets.png (126.8 KB) - added by jri 9 years ago.
Facet example (version 1)

Change History

comment:1 Changed 9 years ago by jri

  • Description modified (diff)

Changed 9 years ago by jri

Facet example (version 1)

comment:2 Changed 9 years ago by Jörg Richter

Geomaps: add a geo facet to address topics (#53).

Facets module (#109) provide public service:

  • associateWithFacetType()
  • addFacet()

Furthermore in core:

  • DeepaMehtaObject?'s update() method is public
  • Class ChangeReport? is public (moved from "impl" package to "service")
  • POST_CREATE_TOPIC hook has a "directives" parameter
  • POST_UPDATE_TOPIC hook has a "clientContext" parameter

See ticket 53, ticket 109

comment:3 Changed 9 years ago by Jörg Richter

Geomaps: add a geo facet to address topics (#53).

Facets module (#109) provide public service:

  • associateWithFacetType()
  • addFacet()

Furthermore in core:

  • DeepaMehtaObject?'s update() method is public
  • Class ChangeReport? is public (moved from "impl" package to "service")
  • POST_CREATE_TOPIC hook has a "directives" parameter
  • POST_UPDATE_TOPIC hook has a "clientContext" parameter

See ticket 53, ticket 109

comment:4 Changed 9 years ago by jri

  • Status changed from new to closed
  • Resolution set to fixed
  • Description modified (diff)

A first 0.1 version is released as external plugin:
https://github.com/jri/dm4-facets

According to the first draft there are 2 differences:

  • Facets are not part of the DM core but realized as an external plugin (however, this might change in the future).
  • The "Facet" type is not realized as additional meta model entity but solely as a role type.
Note: See TracTickets for help on using tickets.