essnet on sdmx - european commission · essnet on sdmx . wp3 parser module analysis and design pag....
TRANSCRIPT
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 1/21
ESSnet on SDMX
WP3 Parser module Analysis and Design
WP: 3 – SDMX Data Express
WP Responsible: João Poças Date: 24/11/2010 File: 03.D-5 WP3_Parser_Module_Analysis_and_Design.doc Annex: 03.D-5 WP3_Parser_Module_Analysis_and_Design_AnnexI.doc
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 2/21
Revision history
Version Date Description Author
draft 14/06/2010 Initial document João Poças
1.0 24/11/2010 Some changes (refined) and update João Poças
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 3/21
TABLE OF CONTENTS
TABLE OF CONTENTS .................................................................................................................................... 3
LIST OF FIGURES ............................................................................................................................................. 4
1. INTRODUCTION ....................................................................................................................................... 5
1.1. PURPOSE ............................................................................................................................................... 5
1.2. SCOPE ................................................................................................................................................... 5
2. SDMX.LIB ................................................................................................................................................... 6
2.1. PARSER MODULE INTEGRATION ........................................................................................................... 7
2.2. FOLDERS AND CLASSES IN SDMX.LIB PROJECT .................................................................................. 8
3. SDMX 2.0 INFORMATION MODEL .................................................................................................... 12
3.1. READING A GENERIC DATA MESSAGE ................................................................................................ 12
3.2. CREATING A QUERY DATA MESSAGE ................................................................................................. 13
3.3. VALIDATING A DATA STRUCTURE DEFINITION (DSD) ...................................................................... 14
4. MESSAGEDATASET: THE CORE OF PARSER MODULE ............................................................ 15
4.1. CLASS OVERVIEW ............................................................................................................................... 15
4.2. A SAMPLE CASE .................................................................................................................................. 17
4.3. USING THE MESSAGEDATASET CLASS ............................................................................................... 19
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 4/21
LIST OF FIGURES
Figure 2-1 – Context diagram for the SDMX Data Express ............................................................................. 7
Figure 2-2 – Context diagram for the SDMX-ML Parser ................................................................................. 8
Figure 2-3 – Aspect of SDMX.Lib project, in Visual Studio 2008 IDE ......................................................... 11
Figure 3-1 – Code example that allows to read a Generic data message, using the object model .................. 12
Figure 3-2 – Code example that shows how to create (and save to a file) a Query data message .................. 13
Figure 3-3 – Code example that shows the validation of a Data Structure DSD ............................................ 14
Figure 4-1 – MessageDataSet Classes (common to all data format) .............................................................. 16
Figure 4-2 – Excerpt of CPI data (Generic format message) .......................................................................... 17
Figure 4-3 – Representation, in a form of DataTable structure, of the CPI data ............................................. 18
Figure 4-4 – Creation of the MessageDataSet object and associated DataSet and DataTable ........................ 19
Figure 4-5 – List of methods and members of MessageDataSet class (using VS intellisense) ....................... 20
Figure 4-6 – Accessing DataTable and associated DataComponents ............................................................. 21
Figure 4-7 – Obtain component properties (using VS intellisense) ................................................................ 21
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 5/21
1. INTRODUCTION
1.1. Purpose
The main goal behind the WP3 parser module is to create a kind of intermediate layer able to
support all the others modules and functionalities of Work Package 3 (SDMX Data Express1
). We
can consider that Parser module includes the representation of SDMX Information Model (IM),
read and write functions and also some data manipulation classes.
During the development of this module the inclusion of the IM implemented in .Net by Eurostat
(available in Mapping Assistant tool) was analysed. It was decided not to use this implementation
because it introduces some changes in the model that makes it not fully compliant with the standard
SDMX 2.0.
This document can be refined during the development of the other modules of in order to answer
specific demands of each module.
1.2. Scope
This document presents the software specifications of the “Parser module”, useful for all the
partners involved in the project but also to any programmer that would be interested in understand
this software library. This is a dynamic document that can be further updated in order to reflect the
actual state of the software and to answer specific demands of each module.
1 Previous name “SDMX Data Express” was “SDMX Data Explorer”
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 6/21
2. SDMX.LIB
As previously said, in the Introduction, the parser module will provide the classes that will represent
the SDMX Information Model and also other common classes that will support other modules of
WP3.
These classes are implemented in the SDMX.Lib project, which is the class library that will be used
by SDMX Data Express (SDMX.DX) project and also SDMX Web Service project (SDMX.WS).
It is responsible for reading the DSD and SDMX data files, transforming it into a general object
(MessageDataSet object) that is useful for being used in other modules of the SDMX Data Express.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 7/21
2.1. Parser module integration
In the next diagram are represented the main components of the package, with user inputs and
outputs expected, to help to understand the conceptual idea of SDMX Data Express. This diagram
shows how the Parser module integrates and interacts with the other modules of the system.
Figure 2-1 – Context diagram for the SDMX Data Express
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 8/21
In a similar manner, the functionalities (with inputs and outputs) of the parser are represented in the
next diagram.
Figure 2-2 – Context diagram for the SDMX-ML Parser
2.2. Folders and Classes in SDMX.Lib project
The SDMX.Lib project is organized (Visual Studio) according the following structure of folders:
\Model
\V20
• classes to represent the SDMX 2.0 Information Model
\Validation
• Validade.cs
this is the base class for validation (use IsValid method to start validation)
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 9/21
• ValidateDataMessage.cs
validation of compact, XS or Generic
• ValidateDataQuery.cs
validation of SDMX Query files
• ValidateDataStructure.cs
validation of DSDs
\Data
• DataSet.cs
Class used for store data that comes from SDMX files (DSD and data files): defines the
MessageDataSet which will be populated with data from the SDMX Data Message;
• DataConcept.cs
This class stores information about the concepts that belong to the loaded DSD;
• DataComponent.cs
This class collects information about the components used in the DSD;
• DataCodelist.cs
Class responsible for storing data about the Codelists of the DSD.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 10/21
\IO
• Base.cs
Used for common IO operations;
• SchemaNamespace.cs
Used for set SDMX files namespace;
• WriteRead.cs
This class reads an XML File to a String and/or writes a String to an XML file.
\Conversion
• ConvertToCompact.cs
This class allows the conversion to SDMX Compact format;
• ConvertToCross.cs
This class allows the conversion to SDMX Cross-sectional format;
• ConvertToGeneric.cs
This class allows the conversion to SDMX Generic format;
\WriterCSV
• WriterCSV.cs
Define a WriterCSV class to create CSV file from DataTable item;
In the next figure we can watch how this folders and classes are organized in the Visual Studio
editor environment.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 11/21
Figure 2-3 – Aspect of SDMX.Lib project, in Visual Studio 2008 IDE
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 12/21
3. SDMX 2.0 INFORMATION MODEL
As referred before, it was decided not to use the Eurostat .Net implementation of SDMX
Information Model because it was not fully compliant with the standard SDMX 2.0 (at least it
wasn’t during the analysis phase of this module).
The adopted solution was to use an open source tool - CodeXS2
- to create the IM basic structure.
Although this tool may not represent, in an ideal manner, the entire model, it should be able to
support the most used SDMX 2.0 standard documents format.
Handling SDMX data files will be easier and more reliable with this model implementation. See
some examples below.
3.1. Reading a Generic data message
The next code sample show how to use the object model (that represents the SDMX Information Model) to get some data from a Generic message file (CPI_DataSet1_generic.xml sample, available in the package).
Figure 3-1 – Code example that allows to read a Generic data message, using the object model
2 CodeXS tool can be found at http://www.bware.biz/DotNet/Development/CodeXS/Article/Article_web.htm
// Create a Generic data message type SDMXModel.GenericDataType SDMXdoc; string filePath = Test.GetFilePath("_testingFiles\\data\\CPI_DataSet1_generic.xml"); // Put the SDMX file into a string string xmlStr = SDMX.Lib.IO.WriteRead.StringFromFile(filePath); string xsdPath = Test.GetFilePath("_sdmxSchemas\\V20\\SDMXGenericData.xsd"); // Convert the string into Generic data type (Deserialization) SDMXdoc = SDMXModel.GenericDataType.FromXml(xmlStr, xsdPath); // Getting Header Id Response.Write("SDMXdoc.Header.ID=" + SDMXdoc.Header.ID.ToString()); ("SDMXdoc.Header.ID=" + SDMXdoc.Header.ID.ToString());
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 13/21
3.2. Creating a Query data message
The next code sample show how to use the object model to create a sample Query message and save it as an XML file (QueryWrite.xml).
Figure 3-2 – Code example that shows how to create (and save to a file) a Query data message
// Create the Query message type SDMXModel.QueryMessageType queryMessage = new SDMXModel.QueryMessageType(); // Create an Header type SDMXModel.HeaderType header = new SDMXModel.HeaderType(); header.ID = "Test_DSD_1"; header.Test = true; // Add the header to the message queryMessage.Header = header; // Create a collection of DataWhere Type SDMXModel.DataWhereTypeCollection dwht = new SDMXModel.DataWhereTypeCollection(); // Create the DataWhere type SDMXModel.DataWhereType dwh1 = new SDMXModel.DataWhereType(); // Create the "And" operator SDMXModel.AndType and = new SDMXModel.AndType(); dwh1.ItemElementName = SDMXModel.ItemChoiceType.And; dwh1.Item = and; // Add the KeyFamily to the And operator and.KeyFamily.Add("ESTAT_CPI"); // Create and add the dimension (Frequency) with some value SDMXModel.DimensionType d1 = new SDMXModel.DimensionType(); d1.id = "FREQ"; d1.Value = "A"; and.Dimension.Add(d1); // Add DataWhere to the collection of DataWhere Type dwht.Add(dwh1); // Add the collection of DataWhere elements to the Query message queryMessage.Query.DataWhere = dwht; // Convert Query message to string string xmlStr = queryMessage.Xml.ToString(); string filePath = Test.GetFilePath("_testingFiles\\query\\QueryWrite.xml"); // Save the result to an XML file bool saveToDisc = SDMX.Lib.IO.WriteRead.StringToFile(filePath, xmlStr); if (saveToDisc)
Response.Write("Saved to disc, in " + filePath); else
Response.Write("NOT saved to disc, in " + filePath);
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 14/21
3.3. Validating a Data Structure Definition (DSD)
The next code sample shows how to use the object model to read a Data Structure Definition and validate it (StructureSample.xml).
Figure 3-3 – Code example that shows the validation of a Data Structure DSD
string schemaVersionStr; string schemaPath; string xmlFilePath; string xmlStr = null; string DSDStr = null; // schemaVersionStr should be "V20" if SDMX Standard schemas should be used schemaVersionStr = "V20"; schemaPath = Server.MapPath("\\") + "_sdmxSchemas"; xmlFilePath = Test.GetFilePath("_testingFiles\\dsd\\StructureSample.xml"); xmlStr = SDMX.Lib.IO.WriteRead.StringFromFile(xmlFilePath); SDMX.Lib.Validation.Validate validXml = new Validate(); List<string> validationList = validXml.IsValid(xmlStr, DSDStr, schemaPath, schemaVersionStr, SDMXFileTypes.DataStructure); // Show report if it has errors in validation list if (validationList.Count == 0)
Response.Write(xmlFilePath + " is well-formed and valid (using '" + schemaVersionStr + "' Schemas version)."); else { Response.Write(xmlFilePath + " is NOT well-formed or valid (using '" + schemaVersionStr + "' Schemas version).");
Response.Write("<br><br>Validation report:"); Response.Write("<ul>"); foreach (string vError in validationList) { Response.Write("<li>"); Response.Write(vError.ToString()); Response.Write("</li>");
} Response.Write("</ul>"); }
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 15/21
4. MESSAGEDATASET: THE CORE OF PARSER MODULE
In order to help manipulating data in SDMX data messages an “intermediate data layer” was
created. This layer intention is to provide a common MessageDataset Class that is able to store the
datasets available in any kind of SDMX data message format (Compact, Generic or Cross-sectional
format). It is able to gather information from a DSD and from a SDMX data file provided by the
user.
4.1. Class overview
The main purpose is to store the data from one SDMX data message into a DataTable object which
is derived from a Class (MessageDataSet class) that has some properties which represent the DSD
components (DataComponent class) in a simplified manner.
Beside those properties there are some methods to help the developer to obtain information about
the components of the DSD. Those methods include several operations like, for instance:
• GetCodelistMemberDescriptionByCode;
• GetComponentByConceptRef;
• GetComponentByOrder;
• GetConceptNameById;
• GetDataTableCategoriesByComponent;
• GetDataTableValuesByComponents;
• GetFrequenceComponent;
• GetPrimaryMeasureComponent;
• GetSeriesDefaultDimensionComponent;
• GetTimeDimensionComponent;
The next class diagram represents the main classes used to instantiate MessageDataSet. The
complete description of the classes can be found in annexI of this document (03.D-5
WP3_Parser_Module_Analysis_and_Design_AnnexI.doc).
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 16/21
Figure 4-1 – MessageDataSet Classes (common to all data format)
Next, we will see an example about how to represent the data available in one SDMX data file using
the corresponding MessageDataSet class.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 17/21
4.2. A sample case
Suppose we would like to get the data from an SDMX data file, and populate one
MessageDatasSet with this data. For this sample case we will consider an excerpt of an SDMX
message which contains data from Consumer Price Index in Generic format.
Figure 4-2 – Excerpt of CPI data (Generic format message)
Suppose, also, we have the corresponding DSD (estat_cpi_v1.0.xml, which can be downloaded
from Eurostat SDMX registry). At this moment we will be able to identify the components that
defined in the DSD and are used in the Generic data message.
(...) <DataSet> <generic:KeyFamilyRef>CPI</generic:KeyFamilyRef> <generic:Series> <generic:SeriesKey> <generic:Value concept="FREQ" value="M" /> <generic:Value concept="REF_AREA" value="LU" /> <generic:Value concept="CPI_ITEM" value="01" /> <generic:Value concept="CPI_SUFFIX" value="WEIGHT" /> <generic:Value concept="IND_REF_YEAR" value="0000" /> </generic:SeriesKey> <generic:Attributes> <generic:Value concept="TIME_FORMAT" value="P1M" /> </generic:Attributes> <generic:Obs> <generic:Time>1998-02</generic:Time> <generic:ObsValue value="314.15" /> <generic:Attributes> <generic:Value concept="OBS_STATUS" value="A" /> </generic:Attributes> </generic:Obs> </generic:Series> <generic:Series> <generic:SeriesKey> <generic:Value concept="FREQ" value="M" /> <generic:Value concept="REF_AREA" value="LU" /> <generic:Value concept="CPI_ITEM" value="00" /> <generic:Value concept="CPI_SUFFIX" value="CPX" /> <generic:Value concept="IND_REF_YEAR" value="1995" /> </generic:SeriesKey> <generic:Attributes> <generic:Value concept="TIME_FORMAT" value="P1M" /> </generic:Attributes> <generic:Obs> <generic:Time>1998-03</generic:Time> <generic:ObsValue value="101.3" /> <generic:Attributes> <generic:Value concept="OBS_STATUS" value="A" /> </generic:Attributes> </generic:Obs> </generic:Series> </DataSet> (...)
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 18/21
Those components are:
• FREQ
• REF_AREA
• CPI_ITEM
• CPI_SUFFIX
• IND_REF_YEAR
• TIME_FORMAT
• OBS_VALUE
• TIME_PERIOD
• OBS_STATUS
• And several more attributes, not mandatory (like OBS_CONF, UNIT, …)
After reading the DSD, the “Parser” will create the MessageDataSet object (based on the above
components). Then, it will populate this object with the data obtained from the Generic data
message. Doing this, data will be available in the messageDT property (DataTable type) of the
MessageDataSet object (corresponding to a list of DataComponent objects) with a number of
columns (fields) that equals the number of components for the DSD. Each row of this table will
have a value in every mandatory component.
FREQ REF_AREA CPI_ITEM CPI_SUFFIX IND_REF_YEAR TIME_FORMAT OBS_VALUE TIME_PERIOD OBS_STATUS
M LU 01 WEIGHT 0000 P1M 314.15 1998-02 AM LU 00 CPX 1995 P1M 101.3 1998-03 A
Figure 4-3 – Representation, in a form of DataTable structure, of the CPI data
This data structure will be available for several SDMX Data Express functionalities like, for
instance, Conversion, Tabular visualization and Graphic visualization. It should be understood as
the common input for these functionalities.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 19/21
4.3. Using the MessageDataSet class
The “Parser module” will help to create and populate the MessageDataSet. For doing this we
must provide the DSD (StructureType type, according to the Model) and the SDMX data
message (in this sample we use the GenericDataType format).
Figure 4-4 – Creation of the MessageDataSet object and associated DataSet and DataTable
When using intellisense, in Visual Studio IDE, we can see the main methods and members
associated to the MessageDataSet class.
// Create the MessageDataset object SDMX.Lib.Data.MessageDataSet msgDS; msgDS = new SDMX.Lib.Data.MessageDataSet(); // Load the SDMX file – generic format - into a string xmlStr = SDMX.Lib.IO.WriteRead.StringFromFile(filePath); DataTable dt = new DataTable(); // create DataSet (from the components available in the DSD) msgDS.CreateDataSet(SDMXDSD); // populate DataTable with data available from Generic file msgDS.PopulateDataSet(xmlStr, SDMXMessageTypes.GenericData, xsdPath); dt = msgDS.MessageDT;
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 20/21
Figure 4-5 – List of methods and members of MessageDataSet class (using VS intellisense)
After creating and populating the MessageDataSet object (msgDS), we are able to use the
DataTable (dt) to easily access the data and the corresponding DataComponentList
(msgDS.DataCompList) to access the associated metadata. The number of the column should
correspond to the order number of the component in the DSD. However, the DataComponent
includes the order attribute (figure 2-5) that can be used to store the order of the DataTable
column.
ESSnet on SDMX
WP3 Parser Module Analysis and Design Pag. 21/21
Figure 4-6 – Accessing DataTable and associated DataComponents
As seen in previous figure, these components can be reached through the DataComptList
member of the MessageDataSet class. Again, when using intellisense (next figure), we are able
to obtain any of the component properties: ConceptRef, Order, AssignmentStatus, Description,
…
Figure 4-7 – Obtain component properties (using VS intellisense)
Response.Write("This data message Table has: <br>"); Response.Write(dt.Columns.Count + " columns and <br>"); // = number of components Response.Write(dt.Rows.Count + " rows of data"); Response.Write("<br><br>In terms of Components:"); Response.Write("<br>1st Component is: " + msgDS.DataComptList[0].ConceptRef); Response.Write("<br>2nd Component is: " + msgDS.DataComptList[1].ConceptRef);
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. i/23
ESSnet on SDMX
WP3 Parser module Analysis and Design
Annex I
Classes description
WP: 3 – SDMX Data Express
WP Responsible: João Poças Date: 24/11/2010 File: 03.D-5 WP3_Parser_Module_Analysis_and_Design_annexI.doc
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. ii/23
Revision history
Version Date Description Author
draft 24/11/2010 Initial document João Poças
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. iii/23
Table of Contents Table of Contents ........................................................................................................................................... iii
Namespace Documentation ............................................................................................................................. 4
SDMX Namespace Reference ..................................................................................................................... 4
SDMX::Lib Namespace Reference ............................................................................................................. 5
SDMX::Lib::Data Namespace Reference .................................................................................................... 6
Class Documentation ....................................................................................................................................... 8
SDMX::Lib::Data::CodelistMember Class Reference ................................................................................ 8
SDMX::Lib::Data::DataCodelist Class Reference ...................................................................................... 9
SDMX::Lib::Data::DataComponent Class Reference ............................................................................... 10
SDMX::Lib::Data::DataConcept Class Reference .................................................................................... 12
SDMX::Lib::Data::MessageDataSet Class Reference ............................................................................... 13
File Documentation ....................................................................................................................................... 18
ESSNET.WP3/SDMX.LIB/Data/DataCodelist.cs File Reference ............................................................ 18
ESSNET.WP3/SDMX.LIB/Data/DataComponent.cs File Reference ....................................................... 19
ESSNET.WP3/SDMX.LIB/Data/DataConcept.cs File Reference ............................................................ 20
ESSNET.WP3/SDMX.LIB/Data/DataSet.cs File Reference ..................................................................... 21
Index .............................................................................................................................................................. 22
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 4/23
Namespace Documentation
SDMX Namespace Reference
Namespaces • namespace Lib
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 5/23
SDMX::Lib Namespace Reference
Namespaces • namespace Data
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 6/23
SDMX::Lib::Data Namespace Reference
Classes • class DataCodelist
Used to define the Codelists available in the DSD that will be used in the SDMX Data Message or Query. • class CodelistMember
Code represents a codelist pair (code value plus code description) • class DataComponent
This class is used to define a Component from the DSD that will be used in the SDMX Data Message. • class DataConcept
Class used to store concept ID and corresponding value, used in data messages. • class MessageDataSet
Defines a Data Set that will be populated with data from the SDMX Data Message.
Enumerations • enum DataComponentsType { Dimension = 1, TimeDimension = 2, PrimaryMeasure = 3,
CrossSectionalMeasure = 4, Attribute = 5 } • enum AttachmentLevelType { Group = 1, Series = 2, Observation = 3 } • enum AssignmentStatusType { Mandatory = 1, Optional = 2 } • enum RepresentationType { Text = 1, Codelist = 2, Measure }
Enumeration Type Documentation
enum SDMX::Lib::Data::AssignmentStatusType Enumerator:
Mandatory Optional
enum SDMX::Lib::Data::AttachmentLevelType Enumerator:
Group Series Observation
enum SDMX::Lib::Data::DataComponentsType Enumerator:
Dimension TimeDimension PrimaryMeasure CrossSectionalMeasure Attribute
enum SDMX::Lib::Data::RepresentationType
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 7/23
Enumerator: Text Codelist Measure
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 8/23
Class Documentation
SDMX::Lib::Data::CodelistMember Class Reference Code represents a codelist pair (code value plus code description)
Properties • string Value [get, set] • string Description [get, set] • bool UsedInDataset [get, set]
Detailed Description Code represents a codelist pair (code value plus code description)
Property Documentation
string SDMX::Lib::Data::CodelistMember::Description [get, set]
bool SDMX::Lib::Data::CodelistMember::UsedInDataset [get, set]
string SDMX::Lib::Data::CodelistMember::Value [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 9/23
SDMX::Lib::Data::DataCodelist Class Reference Used to define the Codelists available in the DSD that will be used in the SDMX Data Message or Query.
Properties • string Id [get, set] • string Name [get, set] • List< CodelistMember > CodelistMember [get, set] • CodelistMember CodelistMember1 [get, set]
Detailed Description Used to define the Codelists available in the DSD that will be used in the SDMX Data Message or Query.
Property Documentation
List<CodelistMember> SDMX::Lib::Data::DataCodelist::CodelistMember [get, set]
CodelistMember SDMX::Lib::Data::DataCodelist::CodelistMember1 [get, set]
string SDMX::Lib::Data::DataCodelist::Id [get, set]
string SDMX::Lib::Data::DataCodelist::Name [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 10/23
SDMX::Lib::Data::DataComponent Class Reference This class is used to define a Component from the DSD that will be used in the SDMX Data Message.
Properties • int Order [get, set] • string ConceptRef [get, set] • DataComponentsType ComponentType [get, set] • string Representation [get, set] • RepresentationType RepresentationType [get, set] • AttachmentLevelType AttachmentLevel [get, set] • string Description [get, set] • AssignmentStatusType AssignmentStatus [get, set] • bool IsFrequencyDimension [get, set] • bool IsMeasureDimension [get, set] • string MeasureDimensionId [get, set] • DataComponentsType DataComponentsType [get, set] • AttachmentLevelType AttachmentLevelType [get, set] • AssignmentStatusType AssignmentStatusType [get, set] • RepresentationType RepresentationType1 [get, set]
Detailed Description This class is used to define a Component from the DSD that will be used in the SDMX Data Message.
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 11/23
Property Documentation
AssignmentStatusType SDMX::Lib::Data::DataComponent::AssignmentStatus [get, set]
AssignmentStatusType SDMX::Lib::Data::DataComponent::AssignmentStatusType [get, set]
AttachmentLevelType SDMX::Lib::Data::DataComponent::AttachmentLevel [get, set]
AttachmentLevelType SDMX::Lib::Data::DataComponent::AttachmentLevelType [get, set]
DataComponentsType SDMX::Lib::Data::DataComponent::ComponentType [get, set]
string SDMX::Lib::Data::DataComponent::ConceptRef [get, set]
DataComponentsType SDMX::Lib::Data::DataComponent::DataComponentsType [get, set]
string SDMX::Lib::Data::DataComponent::Description [get, set]
bool SDMX::Lib::Data::DataComponent::IsFrequencyDimension [get, set]
bool SDMX::Lib::Data::DataComponent::IsMeasureDimension [get, set]
string SDMX::Lib::Data::DataComponent::MeasureDimensionId [get, set]
int SDMX::Lib::Data::DataComponent::Order [get, set]
string SDMX::Lib::Data::DataComponent::Representation [get, set]
RepresentationType SDMX::Lib::Data::DataComponent::RepresentationType [get, set]
RepresentationType SDMX::Lib::Data::DataComponent::RepresentationType1 [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 12/23
SDMX::Lib::Data::DataConcept Class Reference Class used to store concept ID and corresponding value, used in data messages.
Properties • string Value [get, set] • string Id [get, set]
Detailed Description Class used to store concept ID and corresponding value, used in data messages.
Property Documentation
string SDMX::Lib::Data::DataConcept::Id [get, set]
string SDMX::Lib::Data::DataConcept::Value [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 13/23
SDMX::Lib::Data::MessageDataSet Class Reference Defines a Data Set that will be populated with data from the SDMX Data Message.
Public Member Functions • DataSet CreateDataSet (SDMXModel.StructureType SDMXDSD)
This method create a Data Set with DSD information. • string GetConceptNameById (SDMXModel.ConceptsType DSDConcepts, string conceptSchemeId, string
conceptId) Gets the concept Name, by id.
• void PopulateDataSet (string sdmxStr, SDMX.Lib.IO.SDMXMessageTypes messageType, string xsdPath) Populates the data set.
• DataComponent GetFrequenceComponent () This method returns the Frequence component.
• DataComponent GetComponentByConceptRef (string conceptRef) Gets the component by concept ref.
• DataComponent GetComponentByOrder (int order) Gets the component by Order.
• DataComponent GetPrimaryMeasureComponent () This method returns the PrimaryMeasure (OBS_Value) component.
• DataComponent GetTimeDimensionComponent () This method returns the Time Dimension component.
• DataComponent GetSeriesDefaultDimensionComponent () This method returns a Dimension component different from Time Or OBS_Value.
• SortedDictionary< string, string > GetDataTableCategoriesByComponent (string componentName) This method returns the available Members/Categories (distinct values) of a specified Component.
• string GetDataTableValuesByComponents (Dictionary< string, string > componentsDict, string valueComponentRef) This method returns the available Members/Categories (distinct values) of a specified Component.
• string GetCodelistMemberDescriptionByCode (string codelistId, string codeMember) This method returns the Description of a given Member and Codelist ID.
• string CloseDataSet () Releases all resources used by DataSet.
Properties • DataTable MessageDT [get, set] • SDMX.Lib.IO.SDMXMessageTypes DataType [get, set] • List< DataCodelist > DataCodelistList [get, set] • List< DataComponent > DataComptList [get, set] • List< string > GroupList [get, set] • string DSDFileName [get, set] • string DataFileName [get, set] • string KfName [get, set] • string KfDescription [get, set] • DataComponent DataComponent [get, set] • DataCodelist DataCodelist [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 14/23
Detailed Description Defines a Data Set that will be populated with data from the SDMX Data Message.
Member Function Documentation
string SDMX::Lib::Data::MessageDataSet::CloseDataSet () [inline] Releases all resources used by DataSet.
Returns:
DataSet SDMX::Lib::Data::MessageDataSet::CreateDataSet (SDMXModel.StructureType SDMXDSD) [inline]
This method create a Data Set with DSD information.
Parameters: SDMXDSD The Structure type object.
Returns:
string SDMX::Lib::Data::MessageDataSet::GetCodelistMemberDescriptionByCode (string codelistId, string codeMember) [inline]
This method returns the Description of a given Member and Codelist ID.
Returns:
DataComponent SDMX::Lib::Data::MessageDataSet::GetComponentByConceptRef (string conceptRef) [inline]
Gets the component by concept ref.
Parameters: conceptRef The concept ref.
Returns:
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 15/23
DataComponent SDMX::Lib::Data::MessageDataSet::GetComponentByOrder (int order) [inline]
Gets the component by Order.
Parameters: order The order.
Returns:
string SDMX::Lib::Data::MessageDataSet::GetConceptNameById (SDMXModel.ConceptsType DSDConcepts, string conceptSchemeId, string conceptId) [inline]
Gets the concept Name, by id.
Parameters: DSDConcepts The DSD concepts. conceptSchemeId The concept scheme id. conceptId The concept id.
Returns:
SortedDictionary<string, string> SDMX::Lib::Data::MessageDataSet::GetDataTableCategoriesByComponent (string componentName) [inline]
This method returns the available Members/Categories (distinct values) of a specified Component.
Returns:
string SDMX::Lib::Data::MessageDataSet::GetDataTableValuesByComponents (Dictionary< string, string > componentsDict, string valueComponentRef) [inline]
This method returns the available Members/Categories (distinct values) of a specified Component.
Returns:
DataComponent SDMX::Lib::Data::MessageDataSet::GetFrequenceComponent () [inline] This method returns the Frequence component.
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 16/23
Returns:
DataComponent SDMX::Lib::Data::MessageDataSet::GetPrimaryMeasureComponent () [inline] This method returns the PrimaryMeasure (OBS_Value) component.
Returns:
DataComponent SDMX::Lib::Data::MessageDataSet::GetSeriesDefaultDimensionComponent () [inline]
This method returns a Dimension component different from Time Or OBS_Value.
Returns:
DataComponent SDMX::Lib::Data::MessageDataSet::GetTimeDimensionComponent () [inline] This method returns the Time Dimension component.
Returns:
void SDMX::Lib::Data::MessageDataSet::PopulateDataSet (string sdmxStr, SDMX.Lib.IO.SDMXMessageTypes messageType, string xsdPath) [inline]
Populates the data set.
Parameters: sdmxStr The SDMX file in string format. messageType Type of the SDMX message. xsdPath The XSD path.
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 17/23
Property Documentation
DataCodelist SDMX::Lib::Data::MessageDataSet::DataCodelist [get, set]
List<DataCodelist> SDMX::Lib::Data::MessageDataSet::DataCodelistList [get, set]
DataComponent SDMX::Lib::Data::MessageDataSet::DataComponent [get, set]
List<DataComponent> SDMX::Lib::Data::MessageDataSet::DataComptList [get, set]
string SDMX::Lib::Data::MessageDataSet::DataFileName [get, set]
SDMX.Lib.IO.SDMXMessageTypes SDMX::Lib::Data::MessageDataSet::DataType [get, set]
string SDMX::Lib::Data::MessageDataSet::DSDFileName [get, set]
List<string> SDMX::Lib::Data::MessageDataSet::GroupList [get, set]
string SDMX::Lib::Data::MessageDataSet::KfDescription [get, set]
string SDMX::Lib::Data::MessageDataSet::KfName [get, set]
DataTable SDMX::Lib::Data::MessageDataSet::MessageDT [get, set]
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 18/23
File Documentation
ESSNET.WP3/SDMX.LIB/Data/DataCodelist.cs File Reference
Classes • class SDMX::Lib::Data::DataCodelist • Used to define the Codelists available in the DSD that will be used in the SDMX Data Message or Query. class
SDMX::Lib::Data::CodelistMember
Code represents a codelist pair (code value plus code description) Namespaces • namespace SDMX::Lib::Data
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 19/23
ESSNET.WP3/SDMX.LIB/Data/DataComponent.cs File Reference
Classes • class SDMX::Lib::Data::DataComponent
This class is used to define a Component from the DSD that will be used in the SDMX Data Message. Namespaces • namespace SDMX::Lib::Data
Enumerations • enum SDMX::Lib::Data::DataComponentsType { SDMX::Lib::Data::Dimension = 1,
SDMX::Lib::Data::TimeDimension = 2, SDMX::Lib::Data::PrimaryMeasure = 3, SDMX::Lib::Data::CrossSectionalMeasure = 4, SDMX::Lib::Data::Attribute = 5 }
• enum SDMX::Lib::Data::AttachmentLevelType { SDMX::Lib::Data::Group = 1, SDMX::Lib::Data::Series = 2, SDMX::Lib::Data::Observation = 3 }
• enum SDMX::Lib::Data::AssignmentStatusType { SDMX::Lib::Data::Mandatory = 1, SDMX::Lib::Data::Optional = 2 }
• enum SDMX::Lib::Data::RepresentationType { SDMX::Lib::Data::Text = 1, SDMX::Lib::Data::Codelist = 2, SDMX::Lib::Data::Measure }
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 20/23
ESSNET.WP3/SDMX.LIB/Data/DataConcept.cs File Reference
Classes • class SDMX::Lib::Data::DataConcept
Class used to store concept ID and corresponding value, used in data messages. Namespaces • namespace SDMX::Lib::Data
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 21/23
ESSNET.WP3/SDMX.LIB/Data/DataSet.cs File Reference
Classes • class SDMX::Lib::Data::MessageDataSet
Defines a Data Set that will be populated with data from the SDMX Data Message. Namespaces • namespace SDMX::Lib::Data
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 22/23
Index AssignmentStatus
SDMX::Lib::Data::DataComponent, 11 AssignmentStatusType
SDMX::Lib::Data, 6 SDMX::Lib::Data::DataComponent, 11
AttachmentLevel SDMX::Lib::Data::DataComponent, 11
AttachmentLevelType SDMX::Lib::Data, 6 SDMX::Lib::Data::DataComponent, 11
Attribute SDMX::Lib::Data, 6
CloseDataSet SDMX::Lib::Data::MessageDataSet, 14
Codelist SDMX::Lib::Data, 7
CodelistMember SDMX::Lib::Data::DataCodelist, 9
CodelistMember1 SDMX::Lib::Data::DataCodelist, 9
ComponentType SDMX::Lib::Data::DataComponent, 11
ConceptRef SDMX::Lib::Data::DataComponent, 11
CreateDataSet SDMX::Lib::Data::MessageDataSet, 14
CrossSectionalMeasure SDMX::Lib::Data, 6
DataCodelist SDMX::Lib::Data::MessageDataSet, 17
DataCodelistList SDMX::Lib::Data::MessageDataSet, 17
DataComponent SDMX::Lib::Data::MessageDataSet, 17
DataComponentsType SDMX::Lib::Data, 6 SDMX::Lib::Data::DataComponent, 11
DataComptList SDMX::Lib::Data::MessageDataSet, 17
DataFileName SDMX::Lib::Data::MessageDataSet, 17
DataType SDMX::Lib::Data::MessageDataSet, 17
Description SDMX::Lib::Data::CodelistMember, 8 SDMX::Lib::Data::DataComponent, 11
Dimension SDMX::Lib::Data, 6
DSDFileName SDMX::Lib::Data::MessageDataSet, 17
ESSNET.WP3/SDMX.LIB/Data/DataCodelist.cs, 18
ESSNET.WP3/SDMX.LIB/Data/DataComponent.cs, 19
ESSNET.WP3/SDMX.LIB/Data/DataConcept.cs, 20 ESSNET.WP3/SDMX.LIB/Data/DataSet.cs, 21 GetCodelistMemberDescriptionByCode
SDMX::Lib::Data::MessageDataSet, 14 GetComponentByConceptRef
SDMX::Lib::Data::MessageDataSet, 14 GetComponentByOrder
SDMX::Lib::Data::MessageDataSet, 15 GetConceptNameById
SDMX::Lib::Data::MessageDataSet, 15 GetDataTableCategoriesByComponent
SDMX::Lib::Data::MessageDataSet, 15 GetDataTableValuesByComponents
SDMX::Lib::Data::MessageDataSet, 15 GetFrequenceComponent
SDMX::Lib::Data::MessageDataSet, 16 GetPrimaryMeasureComponent
SDMX::Lib::Data::MessageDataSet, 16 GetSeriesDefaultDimensionComponent
SDMX::Lib::Data::MessageDataSet, 16 GetTimeDimensionComponent
SDMX::Lib::Data::MessageDataSet, 16 Group
SDMX::Lib::Data, 6 GroupList
SDMX::Lib::Data::MessageDataSet, 17 Id
SDMX::Lib::Data::DataCodelist, 9 SDMX::Lib::Data::DataConcept, 12
IsFrequencyDimension SDMX::Lib::Data::DataComponent, 11
IsMeasureDimension SDMX::Lib::Data::DataComponent, 11
KfDescription SDMX::Lib::Data::MessageDataSet, 17
KfName SDMX::Lib::Data::MessageDataSet, 17
Mandatory SDMX::Lib::Data, 6
Measure SDMX::Lib::Data, 7
MeasureDimensionId SDMX::Lib::Data::DataComponent, 11
MessageDT SDMX::Lib::Data::MessageDataSet, 17
Name SDMX::Lib::Data::DataCodelist, 9
Observation SDMX::Lib::Data, 6
Optional
ESSnet on SDMX
WP3 Parser Module Analysis and Design – Annex I Pag. 23/23
SDMX::Lib::Data, 6 Order
SDMX::Lib::Data::DataComponent, 11 PopulateDataSet
SDMX::Lib::Data::MessageDataSet, 16 PrimaryMeasure
SDMX::Lib::Data, 6 Representation
SDMX::Lib::Data::DataComponent, 11 RepresentationType
SDMX::Lib::Data, 7 SDMX::Lib::Data::DataComponent, 11
RepresentationType1 SDMX::Lib::Data::DataComponent, 11
SDMX, 4 SDMX::Lib, 5 SDMX::Lib::Data, 6
AssignmentStatusType, 6 AttachmentLevelType, 6 Attribute, 6 Codelist, 7 CrossSectionalMeasure, 6 DataComponentsType, 6 Dimension, 6 Group, 6 Mandatory, 6 Measure, 7 Observation, 6 Optional, 6 PrimaryMeasure, 6 RepresentationType, 7 Series, 6 Text, 7 TimeDimension, 6
SDMX::Lib::Data::CodelistMember, 8 Description, 8 UsedInDataset, 8 Value, 8
SDMX::Lib::Data::DataCodelist, 9 CodelistMember, 9 CodelistMember1, 9 Id, 9 Name, 9
SDMX::Lib::Data::DataComponent, 10 AssignmentStatus, 11 AssignmentStatusType, 11 AttachmentLevel, 11 AttachmentLevelType, 11 ComponentType, 11
ConceptRef, 11 DataComponentsType, 11 Description, 11 IsFrequencyDimension, 11 IsMeasureDimension, 11 MeasureDimensionId, 11 Order, 11 Representation, 11 RepresentationType, 11 RepresentationType1, 11
SDMX::Lib::Data::DataConcept, 12 Id, 12 Value, 12
SDMX::Lib::Data::MessageDataSet, 13 CloseDataSet, 14 CreateDataSet, 14 DataCodelist, 17 DataCodelistList, 17 DataComponent, 17 DataComptList, 17 DataFileName, 17 DataType, 17 DSDFileName, 17 GetCodelistMemberDescriptionByCode, 14 GetComponentByConceptRef, 14 GetComponentByOrder, 15 GetConceptNameById, 15 GetDataTableCategoriesByComponent, 15 GetDataTableValuesByComponents, 15 GetFrequenceComponent, 16 GetPrimaryMeasureComponent, 16 GetSeriesDefaultDimensionComponent, 16 GetTimeDimensionComponent, 16 GroupList, 17 KfDescription, 17 KfName, 17 MessageDT, 17 PopulateDataSet, 16
Series SDMX::Lib::Data, 6
Text SDMX::Lib::Data, 7
TimeDimension SDMX::Lib::Data, 6
UsedInDataset SDMX::Lib::Data::CodelistMember, 8
Value SDMX::Lib::Data::CodelistMember, 8 SDMX::Lib::Data::DataConcept, 12