Olap4ld Metadata

From www.b-kaempgen.de
(Redirected from Olap4ld Metadata Schema)
Jump to: navigation, search

On this page, we describe the Metadata that olap4ld uses to build and query data cubes.

General Information

  • Generally, data shall be published as Linked Data.
  • Aim is to tell publishers how to model and publish their data so that it is understood by olap4ld.
  • We use the multidimensional model as specified in olap4j (http://www.olap4j.org/olap4j_fs.html).
  • We explain here the mapping between the olap4j specification and Linked Data for metadata queries.

Conceptual Model

For olap4ld metadata, we have to distinguish:

  • Olap4j Metadata, i.e., the metadata that an olap4j driver such as olap4ld has to return. Olap4j exposes metadata in two very different ways:
    • A metadata object is a Java object which represents a particular metadata class. For example, org.olap4j.metadata.Cube. Note: Providers are at liberty to implement metadata objects using a cache, and therefore over the course of time, different java objects may represent the same underlying metadata object. Always use equals(), not the == operator, when comparing metadata objects, and do not use IdentityHashMap.
    • A schema result set is a JDBC ResultSet which returns a record for each instance of a particular metadata class. There is a method in the OlapDatabaseMetaData interface to create a schema result set for each metadata class. Some of these methods accept parameters to filter the rows returned. For example, OlapDatabaseMetaData.getCubes(String catalog, String schemaNamePattern, String cubeNamePattern). Note: All columns defined for the result sets are required, and they must be returned in the order shown. However, additional columns (which should be ignored by clients not expecting them) can be added at the end, and some columns can contain null data for info that does not apply.
  • Linked Data Engine Metadata, i.e., the metadata that a Linked Data Engine has to return. Such metadata is represented as List<Node[]> by the NxParser library. It is our assumption that the metadata is aligning with XMLA.
  • Rough overview of olap4ld metadata objects and their relation to Linked Data:

Olap4ld metadata objects overview.png

Olap4ld Metadata Objects Overview with Edges showing "part of" relationships

How to query programmatically?

There is more information about Olap4ld Metadata/Query Design.

Metadata Schema

Accessing the Metadata Schema in Linked Data

  • Olap4ld assumes that:
    • URIs of instances of qb:DataSet describe single Data Cubes. (CUBE_NAME)
    • If resolved, Data Cubes link via qb:structure to URIs of instances of qb:DataStructureDefinition, Data Cube Schemas.
    • Data Cubes may point via qb:slice to Slices, via qb:component and qb:componentProperty to Dimensions and Measures. (DIMENSION_UNIQUE_NAME, MEASURE_UNIQUE_NAME)
    • If resolved, Dimensions and Measures may point via rdfs:range and qb:codeList to Hierarchies. (HIERARCHY_UNIQUE_NAME, LEVEL_UNIQUE_NAME)
    • If resolved, Hierarchies may point via skos:hasTopConcept etc. to Members. (MEMBER_UNIQUE_NAME)

A Word about Naming

  • MDX does not allow certain characters in names.
  • Therefore, referring to URIs within olap4ld is done after the following transformations:
    • See: convertNodeToMDX(Node)
    • name = URLEncoder.encode(name, "UTF-8");
    • name = name.replace("%", "XXX");
    • name = name.replace(".", "YYY");
    • name = name.replace("-", "ZZZ");
    • Add square brackets
    • Note: No nesting of names (e.g., [Dim].[Hier].[Level]...) is supported.

getDatabases()

Column name Type Description Linked Data
DATA_SOURCE_NAME String The name of the data source, such as FoodMart 2000. Never null. Database name from configuration URL.
DATA_SOURCE_DESCRIPTION String A description of the data source, as entered by the publisher. “Catalog of Linked Data”
URL String The unique path that shows where to invoke the XML for Analysis methods for that data source. Server URL from configuration URL.
DATA_SOURCE_INFO String

A string containing any additional information required to connect to the data source. This can include the Initial Catalog property or other information for the provider.

Example: "Provider=MSOLAP;Data Source=Local;"

“Data following the Linked Data principles.”
PROVIDER_NAME String

The name of the provider behind the data source.

Example: "MSDASQL"

“The community.”
PROVIDER_TYPE String

Comma-separated list of the types of data supported by the provider. May include one or more of the following types. Example follows this table.

  • TDP: tabular data provider.
  • MDP: multidimensional data provider.
  • DMP: data mining provider. A DMP provider implements the OLE DB for Data Mining specification.
-
AUTHENTICATION_MODE String Specification of what type of security mode the data source

uses. Values can be one of the following, never null:

  • Unauthenticated: no user ID or password needs to be sent.
  • Authenticated: User ID and Password must be included in the information required for the connection.
  • Integrated: the data source uses the underlying security to determine authorization, such as Integrated Security provided by Microsoft Internet Information Services (IIS).
-
  • SPARQL query Open Virtuoso (OV)
?DATA_SOURCE_NAME ?DATA_SOURCE_DESCRIPTION ?PROVIDER_NAME ?URL ?DATA_SOURCE_INFO
{{{DATASOURCENAME}}} {{{DATASOURCEDESCRIPTION}}} {{{PROVIDERNAME}}} {{{URL}}} {{{DATASOURCEINFO}}}
  • SPARQL query Sesame
see OV

getCatalogs()

* no schema
  • SPARQL query Open Virtuoso
?TABLE_CAT
{{{TABLE_CAT}}}
  • SPARQL query Sesame
see above


getSchemas()

* no schema
  • SPARQL query Open Virtuoso
?TABLE_SCHEM ?TABLE_CAT
{{{TABLE_SCHEM}}} {{{TABLE_CAT}}}
  • SPARQL query Sesame
see above

getCubes()

Column name Type Description Linked Data
CATALOG_NAME String The name of the database. Constant
SCHEMA_NAME String Not supported. Constant
CUBE_NAME String The name of the cube or dimension. Dimension names are prefaced by a dollar sign ($) symbol. ?CUBE_NAME a qb:DataSet
CUBE_TYPE String The type of the cube. Valid values are:
  • CUBE
  • DIMENSION
"CUBE"
CUBE_GUID String Not supported. -
CREATED_ON Timestamp Not supported. -
LAST_SCHEMA_UPDATE Timestamp The time that the cube was last processed. -
SCHEMA_UPDATED_BY String Not supported. -
LAST_DATA_UPDATE Timestamp The time that the cube was last processed. -
DATA_UPDATED_BY String Not supported. -
DESCRIPTION String A user-friendly description of the cube. OPTIONAL {?CUBE_NAME rdfs:comment ?DESCRIPTION FILTER ( lang(?DESCRIPTION) = "en" )}
IS_DRILLTHROUGH_ENABLED boolean A Boolean that always returns true. -
IS_LINKABLE boolean A Boolean that indicates whether a cube can be used in a linked cube. -
IS_WRITE_ENABLED boolean A Boolean that indicates whether a cube is write-enabled. -
IS_SQL_ENABLED boolean A Boolean that indicates whether SQL can be used on the cube. -
CUBE_CAPTION String The caption of the cube. OPTIONAL {?CUBE_NAME rdfs:label ?CUBE_CAPTION FILTER ( lang(?CUBE_CAPTION) = "en" )}
BASE_CUBE_NAME String The name of the source cube if this cube is a perspective cube. -
ANNOTATIONS String (Optional) A set of notes, in XML format. -
  • SPARQL query Open Virtuoso
{{{STANDARDPREFIXES}}}
SELECT DISTINCT
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME "CUBE" as ?CUBE_TYPE min(?DESCRIPTION) as ?DESCRIPTION min(?CUBE_CAPTION) as ?CUBE_CAPTION 
{{{STANDARDFROM}}}
WHERE {
?ds qb:structure ?CUBE_NAME.
?CUBE_NAME a qb:DataStructureDefinition.
OPTIONAL {?CUBE_NAME rdfs:label ?CUBE_CAPTION FILTER ( lang(?CUBE_CAPTION) = "en")}
OPTIONAL {?CUBE_NAME rdfs:comment ?DESCRIPTION FILTER ( lang(?DESCRIPTION) = "en" )}
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ORDER BY ?CUBE_NAME
  • SPARQL query Sesame
---

getMeasures()

Column name Type Description Linked Data
CATALOG_NAME String The name of the catalog to which this measure belongs. null if the provider does not support catalogs. Constant
SCHEMA_NAME String The name of the schema to which this measure belongs. null if the provider does not support schemas. Constant
CUBE_NAME String The name of the cube to which this measure belongs. ?CUBE_NAME a qb:DataStructureDefinition.
MEASURE_NAME String The name of the measure. ?MEASURE_PROPERTY
MEASURE_UNIQUE_NAME String The Unique name of the measure. For providers that generate unique names by qualification, each component of this name is delimited. ?MEASURE_UNIQUE_NAME: ?CUBE_NAME qb:componentProperty ?COMPONENT_SPECIFICATION. ?COMPONENT_SPECIFICATION qb:measure ?MEASURE_UNIQUE_NAME. (in case of no specific aggregation function, we explicitly define aggregation functions and add the aggregation as a suffix to the measure unique name)
MEASURE_CAPTION String A label or caption associated with the measure. Used

primarily for display purposes. If a caption does not exist, MEASURE_NAME

is returned.
?MEASURE_UNIQUE_NAME rdfs:label ?MEASURE_CAPTION. (for now, we simply use ?MEASURE_UNIQUE_NAME + ?MEASURE_AGGREGATOR)
MEASURE_GUID String Not supported. -
MEASURE_AGGREGATOR int An enumeration that identifies how a measure was derived. Can

be one of the values allowed by the xmlaOrdinal field of the <a class="javadoc" href="api/org/olap4j/metadata/Measure.Aggregator.html">org.olap4j.Measure.Aggregator</a>

enum.
?COMPONENT_SPECIFICATION qb:aggregator ?MEASURE_AGGREGATOR. (Note: in our conceptual scheme, a measure always only has exactly one aggregation function that describes how the measure was computed from published facts. In theory, an aggregation function could change depending on the dimension that is used in the query. However, this is 1) difficult to efficiently compute 2) difficult to understand
DATA_TYPE int The data type of the measure. ?MEASURE_UNIQUE_NAME rdfs:range ?DATA_TYPE (will in MeasureHandler then be translated into proper data type). Since publishers sometimes add ranges to sdmx-measure:obsValue which would result in "conflicting" ranges, we replace "OPTIONAL {?MEASURE_UNIQUE_NAME rdfs:range ?DATA_TYPE. }" by "BIND('http://www.w3.org/2001/XMLSchema#decimal' as ?DATA_TYPE)."
NUMERIC_PRECISION int The maximum precision of the property if the measure object's

data type is exact numeric. null for all other property

types.
-
NUMERIC_SCALE int The number of digits to the right of the decimal point if the

measure object's type indicator is DBTYPE_NUMERIC or DBTYPE_DECIMAL.

Otherwise, this value is null.
-
MEASURE_UNITS String Not supported -
DESCRIPTION String A human-readable description of the measure. null if no description exists. ?DIMENSION_UNIQUE_NAME rdfs:comment ?DESCRIPTION.
EXPRESSION String An expression for the member. ?MEASURE_UNIQUE_NAME qb:expression ?EXPRESSION.
MEASURE_IS_VISIBLE boolean A Boolean that always returns True. If the measure is not visible, it will not be included in the schema rowset. -
LEVELS_LIST String A string that always returns null. -
MEASURE_NAME_
SQL_COLUMN_NAME
String The name of the column in the SQL query that corresponds to the measure's name. -
MEASURE_UNQUALIFIED_
CAPTION
String The name of the measure, not qualified with the measure group name. -
MEASUREGROUP_NAME String The name of the measure group to which the measure belongs. -
MEASURE_DISPLAY_FOLDER String The path to be used when displaying the measure in the user

interface. Folder names will be separated by a semicolon. Nested

folders are indicated by a backslash (\).
-
DEFAULT_FORMAT_STRING String The default format string for the measure. -
  • SPARQL query Open Virtuoso
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?MEASURE_UNIQUE_NAME ?MEASURE_UNIQUE_NAME as ?MEASURE_NAME min(?MEASURE_CAPTION) as ?MEASURE_CAPTION "5" as ?DATA_TYPE "true" as ?MEASURE_IS_VISIBLE min(?MEASURE_AGGREGATOR) as ?MEASURE_AGGREGATOR min(?EXPRESSION) as ?EXPRESSION
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?COMPONENT_SPECIFICATION.
?COMPONENT_SPECIFICATION qb:measure ?MEASURE_UNIQUE_NAME. 
OPTIONAL {?MEASURE_UNIQUE_NAME rdfs:label ?MEASURE_CAPTION FILTER ( lang(?MEASURE_CAPTION) = "en" )} 
OPTIONAL {?COMPONENT_SPECIFICATION qb:aggregator ?MEASURE_AGGREGATOR } 
OPTIONAL {?COMPONENT_SPECIFICATION qb:expression ?EXPRESSION }
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?MEASURE_UNIQUE_NAME ORDER BY ?CUBE_NAME ?MEASURE_UNIQUE_NAME
  • SPARQL query Sesame
---

getDimensions()

Column name Type Description Linked Data
CATALOG_NAME String The name of the database. Constant
SCHEMA_NAME String Not supported. Constant
CUBE_NAME String The name of the cube. ?CUBE_NAME a qb:DataSet.
DIMENSION_NAME String The name of the dimension. If a dimension is part of more

than one cube or measure group, then there is one row for each unique

combination of dimension, measure group, and cube.
?DIMENSION_UNIQUE_NAME
DIMENSION_UNIQUE_NAME String The unique name of the dimension. ?CUBE_NAME qb:structure ?dsd. ?dsd qb:componentProperty ?dimensionProperty.

?dimensionProperty qb:dimension ?DIMENSION_UNIQUE_NAME.

(or, the measures, with fixed names etc.)
DIMENSION_GUID String Not supported. -
DIMENSION_CAPTION String The caption of the dimension. This should be used when

displaying the name of the dimension to the user, such as in the user

interface or reports.
?DIMENSION_UNIQUE_NAME rdfs:label ?DIMENSION_CAPTION (for now, simply ?DIMENSION_UNIQUE_NAME)
DIMENSION_ORDINAL int The position of the dimension within the cube. 0
DIMENSION_TYPE int The type of the dimension. Valid values include the values of

the xmlaOrdinal attribute of the <a class="javadoc" href="api/org/olap4j/metadata/Dimension.Type.html">org.olap4j.Dimension.Type</a>

enum.
0
DIMENSION_CARDINALITY int The number of members in the key attribute. -
DEFAULT_HIERARCHY String A hierarchy from the dimension. Preserved for backwards compatibility. -
DESCRIPTION String A user-friendly description of the dimension. ?DIMENSION_UNIQUE_NAME rdfs:comment ?DESCRIPTION.
IS_VIRTUAL boolean Always false. -
IS_READWRITE boolean A Boolean that indicates whether the dimension is

write-enabled.

true if the dimension is write-enabled.

-
DIMENSION_UNIQUE_SETTINGS int A bitmap that specifies which columns contain unique values

if the dimension contains only members with unique names. The following bit value constants are defined for this bitmap:

  • MDDIMENSIONS_MEMBER_KEY_UNIQUE (1)
-
DIMENSION_MASTER_
UNIQUE_NAME
String Always null. -
DIMENSION_IS_VISIBLE boolean Always true. -
  • SPARQL query Open Virtuoso
Regular dimension:

{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME as ?DIMENSION_NAME ?DIMENSION_UNIQUE_NAME min(?DIMENSION_CAPTION) as ?DIMENSION_CAPTION min(?DESCRIPTION) as ?DESCRIPTION "0" as ?DIMENSION_TYPE "0" as ?DIMENSION_ORDINAL
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. 
OPTIONAL {?DIMENSION_UNIQUE_NAME rdfs:label ?DIMENSION_CAPTION FILTER ( lang(?DIMENSION_CAPTION) = "en" )} 
OPTIONAL {?DIMENSION_UNIQUE_NAME rdfs:comment ?DESCRIPTION FILTER ( lang(?DESCRIPTION) = "en" )}
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ORDER BY ?CUBE_NAME ?DIMENSION_NAME

Measure dimension:
{{{STANDARDPREFIXES}}}
SELECT DISTINCT
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME "Measures" as ?DIMENSION_NAME "Measures" as ?DIMENSION_UNIQUE_NAME "Measures" as ?DIMENSION_CAPTION "Measures" as ?DESCRIPTION "2" as ?DIMENSION_TYPE "0" as ?DIMENSION_ORDINAL
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:measure ?MEASURE_PROPERTY.

{{{SPECIFICFILTERS}}}
} ORDER BY ?CUBE_NAME ?MEASURE_PROPERTY

  • SPARQL query Sesame
---

getHierarchies()

Column name Type Description Linked Data
CATALOG_NAME String The name of the catalog to which this hierarchy belongs. null if the provider does not support catalogs. Constant
SCHEMA_NAME String Not supported Constant
CUBE_NAME String (Required) The name of the cube to which this hierarchy belongs. ?CUBE_NAME a qb:DataSet.
DIMENSION_UNIQUE_NAME String The unique name of the dimension to which this hierarchy

belongs. For providers that generate unique names by qualification,

each component of this name is delimited.
?CUBE_NAME qb:structure ?dsd. ?dsd qb:componentProperty ?dimensionProperty. ?dimensionProperty qb:dimension ?DIMENSION_UNIQUE_NAME.
HIERARCHY_NAME String The name of the hierarchy. Blank if there is only a single

hierarchy in the dimension. This will always have a value in Microsoft

SQL Server 2005 Analysis Services (SSAS).
?HIERARCHY_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME String The unique name of the hierarchy. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. (or, if no codeList exists, then simply the ?DIMENSION_UNIQUE_NAME)
HIERARCHY_GUID String Not supported -
HIERARCHY_CAPTION String A label or a caption associated with the hierarchy. Used

primarily for display purposes. If a caption does not exist, HIERARCHY_NAME is returned. If the dimension either does not contain a hierarchy or has just one hierarchy, this column will contain the name of the

dimension.
?HIERARCHY_UNIQUE_NAME rdfs:label ?HIERARCHY_CAPTION. (or, if no codeList exists, then simply the ?DIMENSION_CAPTION)
DIMENSION_TYPE int The type of the dimension. Valid values include the values of the xmlaOrdinal attribute of . 0
HIERARCHY_CARDINALITY int The number of members in the hierarchy. -
DEFAULT_MEMBER String The default member for this hierarchy. This is a unique name. Every hierarchy must have a default member. -
ALL_MEMBER String The member at the highest level of the rollup. -
DESCRIPTION String A human-readable description of the hierarchy. null if no description exists. OPTIONAL {?HIERARCHY_UNIQUE_NAME rdfs:comment ?DESCRIPTION }
STRUCTURE int The structure of the hierarchy. Valid values include the

following values:

  • MD_STRUCTURE_FULLYBALANCED (0)
  • MD_STRUCTURE_RAGGEDBALANCED (1)
  • MD_STRUCTURE_UNBALANCED (2)
  • MD_STRUCTURE_NETWORK (3)
-
IS_VIRTUAL boolean Always returns false. -
IS_READWRITE boolean A Boolean that indicates whether the Write Back to dimension

column is enabled.

Returns true if the Write Back to dimension column that represents this hierarchy is enabled.

-
DIMENSION_UNIQUE_SETTINGS int Always returns MDDIMENSIONS_MEMBER_KEY_UNIQUE (1). -
DIMENSION_MASTER_
UNIQUE_NAME
String Always returns null. -
DIMENSION_IS_VISIBLE boolean Always returns true. If the dimension is not visible, it will not appear in the schema rowset. -
HIERARCHY_ORDINAL int The ordinal number of the hierarchy across all hierarchies of the cube. -
DIMENSION_IS_SHARED boolean Always returns true. -
HIERARCHY_IS_VISIBLE boolean A Boolean that indicates whether the hieararchy is visible.

Returns true if the hierarchy is visible; otherwise, false.

-
HIERARCHY_ORIGIN int A bit mask that determines the source of the hierarchy:
  • MD_USER_DEFINED identifies user defined hierarchies, and has a value of 0x0000001.
  • MD_SYSTEM_ENABLED identifies attribute hierarchies, and has a value of 0x0000002.
  • MD_SYSTEM_INTERNAL identifies attributes with no attribute hierarchies, and has a value of 0x0000004.

A parent/child attribute hierarchy is both MD_USER_DEFINED and MD_SYSTEM_ENABLED.

-
HIERARCHY_DISPLAY_FOLDER String The path to be used when displaying the hierarchy in the user

interface. Folder names will be separated by a semicolon (;). Nested

folders are indicated by a backslash (\).
-
INSTANCE_SELECTION int A hint to the client application on how to show the

hierarchy. Valid values include the following values:

  • MD_INSTANCE_SELECTION_NONE
  • MD_INSTANCE_SELECTION_DROPDOWN
  • MD_INSTANCE_SELECTION_LIST
  • MD_INSTANCE_SELECTION_FILTEREDLIST
  • MD_INSTANCE_SELECTION_MANDATORYFILTER
-
HIERARCHY_MAX_LEVEL_NUMBER Integer The maximal level depth. Has been introduced to solve RollupOp#Problem:_How_to_rollup_in_Linked_Data.3F. Static for now.
  • QB (http://www.w3.org/TR/vocab-data-cube/#schemes)
    • Note in spec: "Every dimension with range skos:Concept must have a qb:codeList." <= This means, we do not necessarily need a code list in many cases. But, if we have a code list, then:
    • "If a dimension property has a qb:codeList, then the value of the dimension property on every qb:Observation must be in the code list."
  • SPARQL query Open Virtuoso

Hierarchies with code lists:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME as ?HIERARCHY_NAME min(?HIERARCHY_CAPTION) as ?HIERARCHY_CAPTION min(?DESCRIPTION) as ?DESCRIPTION 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. 
OPTIONAL {?HIERARCHY_UNIQUE_NAME rdfs:label ?HIERARCHY_CAPTION FILTER ( lang(?HIERARCHY_CAPTION) = "en" ) } 
OPTIONAL {?HIERARCHY_UNIQUE_NAME rdfs:comment ?DESCRIPTION FILTER ( lang(?DESCRIPTION) = "en" ) }
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME

Measure dimension hierarchy:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME "Measures" as ?DIMENSION_UNIQUE_NAME "Measures" as ?HIERARCHY_UNIQUE_NAME "Measures" as ?HIERARCHY_NAME "Measures" as ?HIERARCHY_CAPTION "Measures" as ?DESCRIPTION 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:measure ?MEASURE_PROPERTY.
{{{SPECIFICFILTERS}}}
} ORDER BY ?CUBE_NAME ?MEASURE_PROPERTY ?HIERARCHY_NAME

Dimension-without-code-list hierarchies:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?HIERARCHY_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?HIERARCHY_NAME ?DIMENSION_UNIQUE_NAME as ?HIERARCHY_CAPTION ?DIMENSION_UNIQUE_NAME as ?DESCRIPTION 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. 
FILTER NOT EXISTS { ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. }
{{{ADDITIONALFILTERS}}}
} ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME
  • SPARQL query Sesame
---

getLevels()

Column name Type Description Linked Data
CATALOG_NAME String The name of the catalog to which this level belongs. null if the provider does not support catalogs. Constant
SCHEMA_NAME String The name of the schema to which this level belongs. null if the provider does not support schemas. Constant
CUBE_NAME String The name of the cube to which this level belongs. ?CUBE_NAME a qb:DataStructureDefinition.
DIMENSION_UNIQUE_NAME String The unique name of the dimension to which this level belongs.

For providers that generate unique names by qualification, each

component of this name is delimited.
?CUBE_NAME qb:componentProperty ?dimensionProperty. ?dimensionProperty qb:dimension ?DIMENSION_UNIQUE_NAME.
HIERARCHY_UNIQUE_NAME String The unique name of the hierarchy. If the level belongs to

more than one hierarchy, there is one row for each hierarchy to which it belongs. For providers that generate unique names by qualification,

each component of this name is delimited.
?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. (or, if no codeList exists, then simply the ?DIMENSION_UNIQUE_NAME, also for LEVEL_UNIQUE_NAME)
LEVEL_NAME String The name of the level. ?LEVEL_UNIQUE_NAME
LEVEL_UNIQUE_NAME String The properly escaped unique name of the level. There are different ways to model levels; 1) The regular way to model levels is to have a code list that does not have xkos:ClassificationLevels and to use this code list (hierarchy) as a level. 2) The XKOS way to model levels is using xkos:ClassificationLevels (?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME.). 3) If there is no code list but only rdfs:range is used, then the level is simply named as the dimension. 4) Any "Measures" dimension has a level "Measures".
LEVEL_GUID String Not supported. -
LEVEL_CAPTION String A label or caption associated with the hierarchy. Used

primarily for display purposes. If a caption does not exist, LEVEL_NAME

is returned.
-
LEVEL_NUMBER int The distance of the level from the root of the hierarchy. Root level is zero (0). ?LEVEL_UNIQUE_NAME xkos:depth ?LEVEL_NUMBER. (according to XKOS spec [1], xkos:depth indicates a level's distance from the (abstract) root node of the hierarchy. The unique level of a flat classification would have a xkos:depth of 1. The abstract (implicit) all level has depth 0. Thus, XMLA and XKOS are identically defined.
LEVEL_CARDINALITY int The number of members in the level. 0
LEVEL_TYPE int Type of the level. Values are as allowed by the xmlaOrdinal

field of the <a class="javadoc" href="api/org/olap4j/metadata/Level.Type.html">org.olap4j.Level.Type</a>

enum.
0x0000
DESCRIPTION String A human-readable description of the level. null if no description exists. -
CUSTOM_ROLLUP_SETTINGS int A bitmap that specifies the custom rollup options:
  • MDLEVELS_CUSTOM_ROLLUP_EXPRESSION (0x01) indicates an expression exists for this level. (Deprecated)
  • MDLEVELS_CUSTOM_ROLLUP_COLUMN (0x02) indicates that there is a custom rollup column for this level.
  • MDLEVELS_SKIPPED_LEVELS (0x04) indicates that there is a skipped level associated with members of this level.
  • MDLEVELS_CUSTOM_MEMBER_PROPERTIES (0x08) indicates that members of the level have custom member properties.
  • MDLEVELS_UNARY_OPERATOR (0x10) indicates that members on the level have unary operators.
-
LEVEL_UNIQUE_SETTINGS int A bitmap that specifies which columns contain unique values,

if the level only has members with unique names or keys. The Msmd.h file defines the following bit value constants for this bitmap:

  • MDDIMENSIONS_MEMBER_KEY_UNIQUE (1)
  • MDDIMENSIONS_MEMBER_NAME_UNIQUE (2)

The key is always unique in Microsoft SQL Server 2005 Analysis Services (SSAS). The name will be unique if the setting on the attribute is UniqueInDimension or UniqueInAttribute

-
LEVEL_IS_VISIBLE boolean A Boolean that indicates whether the level is visible.

Always returns True. If the level is not visible, it will not be included in the schema rowset.

-
LEVEL_ORDERING_PROPERTY String The ID of the attribute that the level is sorted on. -
LEVEL_DBTYPE int The DBTYPE enumeration of the member key column that

is used for the level attribute.

Null if concatenated keys are used as the member key column.

-
LEVEL_MASTER_
UNIQUE_NAME
String Always returns null. -
LEVEL_NAME_
SQL_COLUMN_NAME
String The SQL representation of the level member names. -
LEVEL_KEY_
SQL_COLUMN_NAME
String The SQL representation of the level member key values. -
LEVEL_UNIQUE_NAME_
SQL_COLUMN_NAME
String The SQL representation of the member unique names. -
LEVEL_ATTRIBUTE_
HIERARCHY_NAME
String The name of the attribute hierarchy providing the source of the level. -
LEVEL_KEY_CARDINALITY int The number of columns in the level key. -
LEVEL_ORIGIN int A bit map that defines how the level was sourced:
  • MD_ORIGIN_USER_DEFINED identifies levels in a user defined hierarchy.
  • MD_ORIGIN_ATTRIBUTE identifies levels in an attribute hierarchy.
  • MD_ORIGIN_KEY_ATTRIBUTE identifies levels in a key attribute hierarchy.
  • MD_ORIGIN_INTERNAL identifies levels in attribute hierarchies that are not enabled.
-
  • SPARQL query Open Virtuoso
Regular codelist levels:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME as ?LEVEL_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME as ?LEVEL_CAPTION ?HIERARCHY_UNIQUE_NAME as ?LEVEL_NAME \"N/A\" as ?DESCRIPTION \"1\" as ?LEVEL_NUMBER \"0\" as ?LEVEL_CARDINALITY \"0x0000\" as ?LEVEL_TYPE 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. 
FILTER NOT EXISTS { ?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME. }
{{{ADDITIONALFILTERS}}}
} ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_NUMBER

Xkos levels:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME min(?LEVEL_CAPTION) as ?LEVEL_CAPTION ?LEVEL_UNIQUE_NAME as ?LEVEL_NAME min(?DESCRIPTION) as ?DESCRIPTION ?LEVEL_NUMBER "0" as ?LEVEL_CARDINALITY "0x0000" as ?LEVEL_TYPE 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. ?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME. ?LEVEL_UNIQUE_NAME skosclass:depth ?LEVEL_NUMBER. 
OPTIONAL {?LEVEL_UNIQUE_NAME rdfs:label ?LEVEL_CAPTION FILTER ( lang(?LEVEL_CAPTION) = "en" ) } 
OPTIONAL {?LEVEL_UNIQUE_NAME rdfs:comment ?DESCRIPTION FILTER ( lang(?DESCRIPTION) = "en" ) }
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER 
ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_NUMBER 

Measure dimension hierarchy levels:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME "Measures" as ?DIMENSION_UNIQUE_NAME "Measures" as ?HIERARCHY_UNIQUE_NAME "Measures" as ?LEVEL_UNIQUE_NAME "Measures" as ?LEVEL_CAPTION "Measures" as ?LEVEL_NAME "Measures" as ?DESCRIPTION "1" as ?LEVEL_NUMBER "0" as ?LEVEL_CARDINALITY "0x0000" as ?LEVEL_TYPE 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:measure ?MEASURE_PROPERTY.
{{{SPECIFICFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER 
ORDER BY ?MEASURE_PROPERTY 

Dimension-without-code-list levels:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?HIERARCHY_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?LEVEL_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?LEVEL_CAPTION ?DIMENSION_UNIQUE_NAME as ?LEVEL_NAME "N/A" as ?DESCRIPTION "1" as ?LEVEL_NUMBER "0" as ?LEVEL_CARDINALITY "0x0000" as ?LEVEL_TYPE 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. FILTER NOT EXISTS { ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. }
{{{SPECIFICFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER 
ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?LEVEL_NUMBER 

  • SPARQL query Sesame
---

getMembers()

Column name Type Description Linked Data
CATALOG_NAME String The name of the database to which this member belongs. Constant
SCHEMA_NAME String The name of the schema to which this member belongs. Constant
CUBE_NAME String The name of the cube to which this member belongs. ?CUBE_NAME a qb:DataStructureDefinition.
DIMENSION_UNIQUE_NAME String The unique name of the dimension to which this member belongs. 1) ?CUBE_NAME qb:componentProperty ?dimensionProperty.

?dimensionProperty qb:dimension ?DIMENSION_UNIQUE_NAME.

2) "Measures"
HIERARCHY_UNIQUE_NAME String The unique name of the hierarchy to which this member belongs. 1) ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME.

?HIERARCHY_UNIQUE_NAME skos:hasTopConcept ?MEMBER_UNIQUE_NAME. 2) ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. ?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME. ?MEMBER_UNIQUE_NAME skos:member ?LEVEL_UNIQUE_NAME. 3)(or, if no codeList exists, then simply the ?DIMENSION_UNIQUE_NAME, also for ?LEVEL_UNIQUE_NAME)

4) "Measures"
LEVEL_UNIQUE_NAME String The unique name of the level to which this member belongs. 1) ?MEMBER_UNIQUE_NAME skos:member ?LEVEL_UNIQUE_NAME.

?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME. 2) (or, if no codeList exists, then simply the ?DIMENSION_UNIQUE_NAME)

3) "Measures"
LEVEL_NUMBER int The distance of the member from the root of the hierarchy. The root level is zero (0). ?LEVEL_UNIQUE_NAME skosclass:depth ?LEVEL_NUMBER.
MEMBER_ORDINAL int (Deprecated) Always returns 0. 0
MEMBER_NAME String The name of the member. ?MEMBER_UNIQUE_NAME
MEMBER_UNIQUE_NAME String The unique name of the member. 1) (level structure) ?MEMBER_UNIQUE_NAME skos:member ?LEVEL_UNIQUE_NAME.

2) (simple hierarchy) ?HIERARCHY_UNIQUE_NAME skos:hasTopConcept ?MEMBER_UNIQUE_NAME. 3) if no codeList exists, then we ask for all the values that were used by observations described by the data cube ?obs qb:dataSet ?ds. ?ds qb:structure ?CUBE_NAME. ?obs ?DIMENSION_UNIQUE_NAME ?MEMBER_UNIQUE_NAME.) 4) (if measure member) ?COMPONENT_SPECIFICATION as ?MEMBER_UNIQUE_NAME {?CUBE_NAME qb:component ?COMPONENT_SPECIFICATION. ?COMPONENT_SPECIFICATION qb:measure ?MEASURE_PROPERTY.}

MEMBER_TYPE int The type of the member, one of the values of the ordinal

field of the <a class="javadoc" href="api/org/olap4j/metadata/Member.Type.html">org.olap4j.Member.Type</a> enum.

FORMULA takes precedence over MEASURE. For example, if there is a formula (calculated) member on the Measures dimension, it is listed as FORMULA.

1
MEMBER_GUID String The GUID of the member. null if no GUID exists. ?MEMBER_UNIQUE_NAME skos:notation ?MEMBER_CAPTION (or, if literal, simply the value)
MEMBER_CAPTION String A label or caption associated with the member. Used primarily

for display purposes. If a caption does not exist, MEMBER_NAME

is returned.
-
CHILDREN_CARDINALITY int The number of children that the member has. This can be an

estimate, so consumers should not rely on this to be the exact count.

Providers should return the best estimate possible.
-
PARENT_LEVEL int The distance of the member's parent from the root level of the hierarchy. The root level is zero (0). ?PARENT_UNIQUE_NAME skos:member ?PARENT_LEVEL_UNIQUE_NAME. ?PARENT_LEVEL_UNIQUE_NAME skosclass:depth ?PARENT_LEVEL.
PARENT_UNIQUE_NAME String The unique name of the member's parent. null is returned for any members at the root level. ?MEMBER_UNIQUE_NAME skos:narrower ?PARENT_UNIQUE_NAME.
PARENT_COUNT int The number of parents that this member has. -
DESCRIPTION String Always returns null. -
EXPRESSION String The expression for calculations, if the member is of type MDMEMBER_TYPE_FORMULA. -
MEMBER_KEY String The value of the member's key column. Returns null if the member has a composite key. -
IS_PLACEHOLDERMEMBER boolean A Boolean that indicates whether a member is a placeholder

member for an empty position in a dimension hierarchy.

It is valid only if the MDX Compatibility property has been set to 1.

-
IS_DATAMEMBER boolean A Boolean that indicates whether the member is a data member.

Returns True if the member is a data member.

-
Zero or more additional columns int No properties are returned if the members could be returned

from multiple levels. For example, if the Tree operator is PARENT and SELF for a non-parent child hierarchy, no member properties are returned.

This applies to ragged hierarchies where tree operators could return members from different levels (for example, if the prior level contains holes and parent on members is requested).

-
  • SPARQL query Open Virtuoso
Xkos members of levels of hierarchies:

-> TREE_OP:CHILDREN
-> TREE_OP:SELF

{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME as ?MEMBER_NAME ?MEMBER_UNIQUE_NAME min(?MEMBER_CAPTION) as ?MEMBER_CAPTION \"1\" as ?MEMBER_TYPE ?PARENT_UNIQUE_NAME min(?PARENT_LEVEL) as ?PARENT_LEVEL 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. ?LEVEL_UNIQUE_NAME skos:inScheme ?HIERARCHY_UNIQUE_NAME. ?MEMBER_UNIQUE_NAME skos:member ?LEVEL_UNIQUE_NAME. ?LEVEL_UNIQUE_NAME skosclass:depth ?LEVEL_NUMBER.
OPTIONAL { ?MEMBER_UNIQUE_NAME skos:narrower ?PARENT_UNIQUE_NAME. ?PARENT_UNIQUE_NAME skosclass:depth ?PARENT_LEVEL. }
OPTIONAL {?MEMBER_UNIQUE_NAME skos:notation ?MEMBER_CAPTION FILTER ( lang(?MEMBER_CAPTION) = "en" OR lang(?MEMBER_CAPTION) = "" ) }
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER ?PARENT_UNIQUE_NAME ?MEMBER_UNIQUE_NAME  
ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME

Measure members:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME "Measures" as ?DIMENSION_UNIQUE_NAME "Measures" as ?HIERARCHY_UNIQUE_NAME "Measures" as ?LEVEL_UNIQUE_NAME "0" as ?LEVEL_NUMBER ?MEASURE_UNIQUE_NAME as ?MEMBER_UNIQUE_NAME ?MEASURE_UNIQUE_NAME as ?MEMBER_NAME min(?MEMBER_CAPTION) as ?MEMBER_CAPTION "3" as ?MEMBER_TYPE "null" as ?PARENT_UNIQUE_NAME "0" as ?PARENT_LEVEL 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?COMPONENT_SPECIFICATION.
?COMPONENT_SPECIFICATION qb:measure ?MEASURE_UNIQUE_NAME. 
OPTIONAL {?MEASURE_UNIQUE_NAME rdfs:label ?MEMBER_CAPTION FILTER ( lang(?MEMBER_CAPTION) = "en" OR lang(?MEMBER_CAPTION) = "" ) }
{{{ADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?MEASURE_UNIQUE_NAME  
ORDER BY ?CUBE_NAME ?MEASURE_UNIQUE_NAME

TopConcept members:
{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME as ?LEVEL_UNIQUE_NAME "0" as ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME as ?MEMBER_NAME ?MEMBER_UNIQUE_NAME min(?MEMBER_CAPTION) as ?MEMBER_CAPTION "1" as ?MEMBER_TYPE "null" as ?PARENT_UNIQUE_NAME "null" as ?PARENT_LEVEL 
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME. ?DIMENSION_UNIQUE_NAME qb:codeList ?HIERARCHY_UNIQUE_NAME. ?HIERARCHY_UNIQUE_NAME skos:hasTopConcept ?MEMBER_UNIQUE_NAME. 
OPTIONAL {?MEMBER_UNIQUE_NAME skos:notation ?MEMBER_CAPTION FILTER ( lang(?MEMBER_CAPTION) = "en" OR lang(?MEMBER_CAPTION) = "" ) }
{{{SPECIFICFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME 
ORDER BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?HIERARCHY_UNIQUE_NAME ?LEVEL_UNIQUE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME

Degenerated members:

{{{STANDARDPREFIXES}}}
SELECT 
{{{TABLE_CAT}}} as ?CATALOG_NAME {{{TABLE_SCHEM}}} as ?SCHEMA_NAME ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?HIERARCHY_UNIQUE_NAME ?DIMENSION_UNIQUE_NAME as ?LEVEL_UNIQUE_NAME "0" as ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME as ?MEMBER_NAME ?MEMBER_UNIQUE_NAME min(?MEMBER_CAPTION) as ?MEMBER_CAPTION "1" as ?MEMBER_TYPE "null" as ?PARENT_UNIQUE_NAME "null" as ?PARENT_LEVEL
{{{STANDARDFROM}}}
WHERE {
?CUBE_NAME qb:component ?compSpec.
?compSpec qb:dimension ?DIMENSION_UNIQUE_NAME.
?obs qb:dataSet ?ds. ?ds qb:structure ?CUBE_NAME.
?obs ?DIMENSION_UNIQUE_NAME ?MEMBER_UNIQUE_NAME.
OPTIONAL {?MEMBER_UNIQUE_NAME skos:notation ?MEMBER_CAPTION FILTER ( lang(?MEMBER_CAPTION) = "en" OR lang(?MEMBER_CAPTION) = "" ) }
{{{ALTEREDADDITIONALFILTERS}}}
} GROUP BY ?CUBE_NAME ?DIMENSION_UNIQUE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME 
ORDER BY ?CUBE_NAME ?LEVEL_NUMBER ?MEMBER_UNIQUE_NAME
  • SPARQL query Sesame
---