RollupOp

From www.b-kaempgen.de
Jump to: navigation, search

This operator rolls up a Dimension of a Cube (the former LogicalOlapOp) to a specific higher Level. We assume a LEAN Data Cube (i.e., dataset with observations on the lowest levels only).

SliceOp gets as input an input operator, a List<Node[]> list with a header and levels according to Olap4ld_Metadata#getLevels.28.29 to rollup to.

Problem: How to rollup in Linked Data?

  • In ROLAP, the LEVEL_NUMBER of a level does not lead to more difficult queries, since we simply need to group by the specific level column of the dimension table
  • In OLAP4LD, the lower the level depth (the higher the level in the hierarchy), the longer the skos:narrower path.
  • A hierarchy in Linked Data is represented using a skos:narrower path starting from skos:hasTopConcept from the skos:ConceptScheme. In a LEAN Data Cube, we only have observations on the lowest levels (the most detailed levels). How do we know which levels are the lowest levels?
  • Solutions
    • We add a new property HIERARCHY_MAX_LEVEL_NUMBER to HIERARCHY saying the number of levels. This number we can retrieve by aggregating the number of skos:ClassificationLevels attached to the code list.
    • We compute the skos:narrowerTransitive closure from all skos:Concepts and either take observations that are linked to each concept directly or linked to a concept that is linked via skos:narrowerTransitive to the concept.
  • We try solution 1.

Relationship between level_number, hierarchy_max_level_number and levelHeight

Olap4ld level number vs levelHeight.png

LevelHeight = MAX_LEVEL_NUMBER - LEVEL_NUMBER

Note: root level number = 0, but root level is implicit (slice).

Problem 3

Problem 4