Olap4ld Metadata
On this page, we describe the Metadata that olap4ld uses to build and query data cubes.
Contents
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 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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getDatabases)
- Post-processing of results: -
- Column schema
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: |
“Data following the Linked Data principles.” |
PROVIDER_NAME | String |
The name of the provider behind the data source. Example: |
“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.
|
- |
AUTHENTICATION_MODE | String | Specification of what type of security mode the data source
uses. Values can be one of the following, never null:
|
- |
- 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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getCatalogs)
- Post-processing of results: -
- Column schema
* no schema
- SPARQL query Open Virtuoso
?TABLE_CAT {{{TABLE_CAT}}}
- SPARQL query Sesame
see above
getSchemas()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getSchemas)
- Post-processing of results: -
- Column schema
* no schema
- SPARQL query Open Virtuoso
?TABLE_SCHEM ?TABLE_CAT {{{TABLE_SCHEM}}} {{{TABLE_CAT}}}
- SPARQL query Sesame
see above
getCubes()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getCubes)
- Post-processing of results: -
- Column schema
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" |
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. | - |
- QB (http://www.w3.org/TR/vocab-data-cube/#dsd)
- Note in spec: "Every qb:DataSet has exactly one associated qb:DataStructureDefinition."
- 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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getMeasures)
- Post-processing of results: -
- Column schema
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 |
?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. |
- |
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 isnull . |
- |
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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getDimensions)
- Post-processing of results: -
- Column schema
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 |
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.
|
- |
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:
|
- |
DIMENSION_MASTER_ UNIQUE_NAME |
String | Always null . |
- |
DIMENSION_IS_VISIBLE | boolean | Always true . |
- |
- QB (http://www.w3.org/TR/vocab-data-cube/#dsd-dimensions)
- Note in spec: "Every dimension declared in a qb:DataStructureDefinition must have a declared rdfs:range."
- 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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getHierarchies)
- Post-processing of results: -
- Column schema
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:
|
- |
IS_VIRTUAL | boolean | Always returns false . |
- |
IS_READWRITE | boolean | A Boolean that indicates whether the Write Back to dimension
column is enabled. Returns |
- |
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 |
- |
HIERARCHY_ORIGIN | int | A bit mask that determines the source of the hierarchy:
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:
|
- |
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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getLevels)
- Post-processing of results: -
- Column schema
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:
|
- |
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:
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:
|
- |
- 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()
- Olap4j (http://www.olap4j.org/olap4j_fs.html#getMembers)
- Post-processing of results: -
- Column schema
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
---