data type quarter, which is a restriction of xs:gYearMonth. The unitTypes clause in this example is empty. Querying Classification Nodes After having found out the dimensions and their classification hierarchies a client has gathered enough knowledge to request nodes of certain classification levels. This can be achieved by sending an XCubeQuery document consisting of a getClassNodes element to find out all nodes of a given level, or containing a getClassNode element only asking for detailed information on a single node. An example of the first choice is given in figure11 returning information on all branches including their attributes and roll-up-relationships. Requesting the Facts At this point the client should have gathered all necessary data to decide which part of the data cube he needs. The getFacts request displayed in figure 13 is obviously the most complex of all XCubeQuery elements. It contains an arbitrary number of cubes, a set of dimensions optionally restricted to certain classification nodes, and a number of facts. The example in figure 14 asks for the subsection of the sale cube defined by the dimensions geography and product; only the revenue fact is of interest and geography is restricted to two branches, branch48 and branch75. The functionality of getFacts is rather similar to the OLAP operations slice & dice ([27]). But it is important to know that these restrictions can only be applied to the basic granularity of the cubes, i.e. roll-up or drill-down operations
are not supported. As mentioned before XCube is not meant to be another OLAP dialect but only a data format for exchanging multidimensional data over the network. The result of the getFacts request is a set of cell elements consisting of multidimensional coordinates (dimensions with nodes) and the according fact value(s). 4.3 XCubeFunction The latest format of XCube is XCubeFunction which is still under development, so here only a brief outline can be given. The main idea behind this format is the ability to query an XCube server about its functionality. Primitive servers might only be able to deliver complete cubes, i.e. no restriction with regards to facts, dimensions or classification nodes is possible. Highly sophisticated servers on the other hand might even be able to process full-fledged OLAP queries including all kinds of multidimensional operations. 5. CONCLUSION AND OUTLOOK In this paper we presented XCube, an open, vendor independent and modular family of XML based document templates for describing data cubes as they are common in data warehouse systems. A short overview is given in table 1. The most important structures are XCubeSchema, XCubeDimension and XCubeFact because these are the common ingredients of every multidimensional model. However all three of them are flexible enough to express special features like shared roll-ups or multicubes. By splitting the description of a data cube into three parts, a client can easily explore if a certain cube is interesting for him or not, especially because schema and dimension data are by far smaller than the huge amount of fact data. As XCube is first of all meant to describe existing, multidimensional structures most of its templates are static (XCubeSchema, XCubeDimension, XCubeFact and XCubeText); but with XCubeQuery and XCubeFunction two dynamic document types are introduced that allow to discover the cubes and their structures step by step. They form a sound basis for a more complex and efficient infrastructure. We think that this representation of cubes can be very useful, because the cubes are now easily transferrable from one data warehouse to another. The approach can easily be combined with the new Web Service paradigm (the XCube documents simply have to be included into the body of SOAP messages, and XCubeQuery has to be translated to WSDL code). At least the technical heterogeneity problems when attempting to