ECLASS workflow
Introduction
In this document a guideline to implementing the ECLASS workflow is given. Target audience is implementers of the ECLASS workflow.
Scope
Guidelines for using the ECLASS XML 3.0 Schema with regards to the ECLASS workflow, i.e. in particular the use or query and response Out of scope are:
Detailed coverage of Dictionary and units
Implementation details in a particular programming language
Definitions, Acronyms and Abbreviations
Path: A path describes where a property can be found within a nested structure. The path is a sequence of Aspect Reference properties Cardinality values Specialized blocks (from polymorphism) Property that one needs to traverse starting from an application class to a leaf property
Note: The blocks which are implicitly clear from having a certain reference property in the path are omitted.
(further terms to be defined on request)
References
Standards
Foundations
Workflow: purpose and conceptual design
The purpose of the ECLASS workflow is to offer a means of formalized catalogs of requests for products according to the features of their technical data. It is required that both involved parties have access to the knowledge that is captured in the ECLASS dictionary. Only the dictionary is needed to understand the meaning of the messages (query, response) of the conversation. On top of the dictionary Requestor and Responder can agree on a data requirement specification (template), i.e. what data from the dictionary shall be exchanged. This includes data necessary for the Responder to refine what products are in scope of a response as well as the data needed by the Requestor. Queries (article requirements) for products based on the quality of properties of their technical data and responses to such queries can circulate between Requestor and Responder until the Requestor is satisfied or decides to issue no further request and bury their query.
Schema overview
Dictionary and Structure Elements
Defines structure elements (SE) e.g. classes (Classification classes (CC), Aspects (AS), Blocks (BL), Application classes (AC)), the properties / domains / values they are described by and patterns that apply (polymorphism, cardinality).
See: Category:Structure and structural elements
Units and Quantities
Defines Units referenced by properties, puts them into the context of a dimension and gives quantities and aspect of conversion to enable conversion of values.
See: Unit
Template
An ECLASS template is a bilaterally agreed data requirement specification. It defines which data from the dictionary shall occur in transactional data (messages) or catalogs and how this data is expected to be presented. Moreover it can clarify the usage of individual properties by narrowing down the options e.g. for a property being multivalued or having a restricted set of proposed values. Templates define the visible properties of classes and establishes their order. Moreover the template allows to control as well as over-ride features of properties in regards to transactions between certain business parties.
See: Templates
Query
For ECLASS XML 3.0: The query schema defines a catalog of ISO 29002-31 based queries for items described according to the ECLASS dictionary; the query is meant to be sent to a communication partner as basis for their answer.
Response
For ECLASS XML 3.0: The response schema defines a catalog of responses (=items according to ISO 29002-10). It is meant to be a response to a particular set of queries contained in a query document.
Identifiers
IRDI
IRDIs are used to identify all structure elements in the dictionary / units as supplied by ECLASS. Also the default templates originated from ECLASS get an IRDI assigned. The picture below shows the detailed structure of the concept identifier according to ISO 29005-5.
The Code Space Identifier (CSI) defines the category of the item. Below picture shows an excerpt of CSIs used for ECLASS elements.
Code Space Identifier (CSI) | Category of administrated item |
---|---|
01 | Class |
02 | property |
05 | unit of measurement |
07 | property value |
Z2 | dimension |
Z3 | template |
Z4 | quantity |
Table 1: Excerpt of Code Space Identifiers(CSI)according to ISO 29005-5
Below picture shows an example of an identification code for an ECLASS class. It becomes clear that the length of this IRDI is well below the 60 character limit for the length of an identifier in the current BMEcat-format. So it can be assumed that it’s save to write an IRDI as the ECLASS identifier into the catalogue.
0173-1#01-AAA123#001 | |
Code: | Description |
0173 | ICD Code for ECLASS |
1 | ECLASS Office |
01 | eclass |
AAA123 | identifier of class |
001 | version of class |
Table 2: Identification code for an ECLASS class according to ISO 29005-5
GUID
GUIDs are used in the ECLASS workflow to identify individual messages, items and requests / responses. Also templates agreed bilaterally between a buyer and a supplier can only be identified by GUIDs. No central code assignment is possible here; therefore the unicity must come from the GUID algorithm. GUIDs in ECLASS are written as 32 lowercase, alphanumeric characters (from ASCII range [a-z0-9]) without any separator signs. GUIDS are according to IETF RFC 4122.
ECLASS Release
The dictionary is separated into releases. A given dictionary explicitly mentions an ECLASS release in dic:eclass_dictionary/hea:header/content_identification/irdi
Note: For the query-response workflow this is not necessary to know the particular ECLASS release as the application class is specified together with its version. A version of an application class can be contained in more than one ECLASS release.
Dictionary Change Management
The ECLASS dictionary change management is transaction centric, i.e. the decision base of the versioning mechanism of structure elements is whether transactions referencing these structure elements remain valid or not. Therefore an application can implicitly understand the meaning of an older version element when the application only knows the newer version. Note: When an application has only an older version of a dictionary element and encounters a new one, it can be that it does not fully understand the meaning of the element. Still, a value valid for an older version of the element can never become invalid.
Dictionary and Units in Schema
General information
It is out of scope of this document to describe the dictionary and units. It is assumed that both parties have access to the content of an ECLASS XML 3.0 advanced release of dictionary and units. Therefore the meaning of each identifier can be obtained by a dictionary lookup.
Further reading
Usage of units
The query may select any unit that is allowed for the property in the dictionary. The response should contain values according to the requested unit. It may use another of the available units of the property. It must not use a unit that is not available for the property.
Template in Schema
Purpose
An ECLASS template is a bilaterally agreed, formal data requirement specification. It defines which data from the dictionary shall occur in transactional data (messages) or catalogs and how this data is expected to be presented. Moreover it can clarify the usage of individual properties by narrowing down the options e.g. for a property being multivalued or having a restricted set of proposed values. The template can also define which property is mandatory in a certain business context. It is out of scope of this document to give a detailed specification of templates. A query can reference a particular template by providing a reference like:
qry:eclass_queries/eclass_query/query_header/previous_query_identifier/@type=GUID
qry:eclass_queries/eclass_query/query_header/previous_query_identifier/cmn:identifier
Implementing the ECLASS workflow
Headers
Identification
The conversation has a constant GUID as identifier:
//element(*,hea:DOCUMENTHEADER_Type)/conversation_identification/@type=GUID //element(*,hea:DOCUMENTHEADER_Type)/conversation_identification/cmn:identifier
Each message has their own identifier:
//element(*,hea:DOCUMENTHEADER_Type)/message/identification/@type=GUID //element(*,hea:DOCUMENTHEADER_Type)/message/identification/cmn:identifier
If a message responds to a particular other message within the current communication it references its message identifier:
//element(*,hea:DOCUMENTHEADER_Type)/in_reply_to/identification/@type=GUID //element(*,hea:DOCUMENTHEADER_Type)/in_reply_to/identification/cmn:identifier
Language
//element(*,hea:DOCUMENTHEADER_Type)/content_language
Default assumption: The content language defined for the query message is the requested content language of the response message.
Other meta data
Creator, authentication, buyer, supplier, sender and recipient are of the same XSD type. There is no obligation to specify anything more but a name or organization where these elements are mandatory. It is encouraged to make proper use of identifications and contact details where deemed necessary.
Formats
Number format
Numbers are formatted according to their XSD definitions, this means that there is no group separator and decimal separator is the dot.
Note: This applies only for transport in XML, an application should present numbers according to the local language set for the message or selected by the user or the operating system default.
Date format
Dates are formatted according to their XSD definitions, which is based on ISO 8601. See:
Values
Coded Values
Where possible coded (“controlled”) values should be used, giving the IRDI of the value. Example:
<val:controlled_value value_ref="0173-1#07-CAA016#001" />
When no coded value exists a value matching the datatype of the property (usually: string) has to be used.
Valuation of multivalent properties
Multiple values for the same property are expressed as multiple valuations of this property (in the same path).
Values containing “;”
Be aware that when SAP is involved in a transaction the character “;” must not be part of a value as it will be interpreted as a separator character for multiple values in SAP.
There is no general business rule, however, that forbids the use of “;” in valuations.
Query
Identification of request
Each query contained in an qry:eclass_queries has their own GUID by which it can be referenced:
qry:eclass_queries/eclass_query/query_header/query_identifier/@type=GUID
qry:eclass_queries/eclass_query/query_header/query_identifier/cmn:identifier
Non-technical data
The following non-technical data can be found in a query:
Datum | XPath |
---|---|
Date of issue of query | qry:eclass_queries/eclass_query/query_header/query_issued_date |
Date until response is expected | qry:eclass_queries/eclass_query/query_header/response_expected_by_date |
Query amount | qry:eclass_queries/eclass_query/query_amount (with attribute base_unit and alternative_unit)Note: use base_unit="0173-1#05-AAA006#002" for unit one |
buyer | qry:eclass_queries/eclass_query/query_header/buyer (optional) |
supplier | qry:eclass_queries/eclass_query/query_header/supplier (optional) |
Identification of class An AC reference per query is contained in //element(*,qy:query_Type)/qy:class_ref, e.g.:
<qy:class_ref>0173-1---ADVANCED_1_1#01-ADN526#003</qy:class_ref>
Name of requested item
A name for the requested item can (optionally) be given in //element(*,qy:query_Type)/qy:item_description, e.g.:
<qy:item_description>Druck und Absolutdruckmessumformer</qy:item_description>
Operator logic
The query does not only ask for technical data, it requires to make use of basic logic (NOT, AND, OR) to structure the questions under:
qry:eclass_queries/eclass_query/ISO29002_query/qy:query/qy:characteristic_data_query_expression From schema point of view the operators may be nested indefinitely.
Note: It can be mutually agreed between an information requestor and an information provider to not make use of the full depth of possibilities of nesting NOT, AND, OR.
Path to property
The path to each property used in the query is given in: //element(*,qy:query_Type)/qy:characteristic_data_query_expression/qy:subset/qy:property_reference
The path is expressed as a nested expression of the aspects, reference properties and specialized blocks traversed until one reaches the property that is requested. For the AC reference, see Section 3.2.3.
Example:
Ausgang <qy:property_reference property_ref="0173-1#02-AAQ809#003">
Typ: Analoger Stromausgang (s2) <qy:property property_ref="0173-1#01-ADS903#003">
Analoger Stromausgang (Parameter) <qy:property property_ref="0173-1#02-AAQ415#003">
Standardsignaltyp des Stromausgangs <qy:property property_ref="0173-1#02-AAN191#001" /> </qy:property> </qy:property> </qy:property_reference>
Handling of datatypes
Axis
Axis 1D
Befestigungsbezugspunkt
<qy:property_reference property_ref="0173-1#01-ADN292#003"> <qy:property property_ref="0173-1#02-AAQ669#003"> <qy:property property_ref="0173-1#02-AAN505#001" /> </qy:property> </qy:property_reference> <qy:value> <val:composite_value> <val:field> <val:real_value>1</val:real_value> </val:field> <val:field> <val:real_value>2</val:real_value> </val:field> <val:field> <val:real_value>3</val:real_value> </val:field> <val:field> <val:real_value>0</val:real_value> </val:field> <val:field>
Axis 2D
To be added when an example exists in ECLASS.
Axis 3D
To be added when an example exists in ECLASS.
Boolean
SVHC-Stoff enthalten
<qy:property_reference property_ref="0173-1#01-ADN328#003"> <qy:property property_ref="0173-1#02-AAQ558#003"> <qy:property property_ref="0173-1#02-AAF508#002" /> </qy:property> </qy:property_reference> <qy:value> <val:controlled_value value_ref="0173-1#07-CAA016#001" /> </qy:value>
Integer
Integer (count)
Anzahl der Textzeilen
<qy:property_reference property_ref="0173-1#01-ADN229#003"> <qy:property property_ref="0173-1#02-AAQ374#003"> <qy:property property_ref="0173-1#02-AAM570#001" /> </qy:property> </qy:property_reference> <qy:value> <val:integer_value>1</val:integer_value> </qy:value>
Integer (currency)
To be added when an example exists in ECLASS.
Integer (measure)
Example from 34
Level
Level (Date)
To be added when an example exists in ECLASS.
Level (Integer currency)
To be added when an example exists in ECLASS.
Level (Integer measure)
To be added when an example exists in ECLASS.
Level (Integer)
To be added when an example exists in ECLASS.
Level (Real currency)
To be added when an example exists in ECLASS.
Level (Real measure)
eindrähtiger Leiterquerschnitt (mm²)
<qy:property_reference property_ref="0173-1#02-AAQ809#003"> <qy:property property_ref="0173-1#01-ADS920#003"> <qy:property property_ref="0173-1#02-AAQ685#003"> <qy:property property_ref="0173-1#02-AAR079#003"> <qy:property property_ref="0173-1#02-AAQ534#003"> <qy:property property_ref="0173-1#02-AAQ533#003"> <qy:property property_ref="0173-1#02-AAQ532#003"> <qy:property property_ref="0173-1#02-AAN512#002" /> </qy:property> </qy:property> </qy:property> </qy:property> </qy:property> </qy:property> </qy:property_reference> <qy:value> <val:measure_qualified_number_value UOM_ref="0173-1#05-AAA295#002" UOM_code="MMK"> <val:qualified_value qualifier_code="MIN"> <val:real_value>1</val:real_value> </val:qualified_value> <val:qualified_value qualifier_code="MAX"> <val:real_value>2</val:real_value> </val:qualified_value> </val:measure_qualified_number_value> </qy:value>
Level (Real)
To be added when an example exists in ECLASS.
Level (Time)
To be added when an example exists in ECLASS.
Level (Timestamp)
To be added when an example exists in ECLASS.
Rational
Rational
To be added when an example exists in ECLASS.
Rational (measure)
To be added when an example exists in ECLASS.
Real
Real (count)
Example from 40
Real (currency)
To be added when an example exists in ECLASS.
Real (measure)
Höhe des Schildes
<qy:property_reference property_ref="0173-1#01-ADN229#003"> <qy:property property_ref="0173-1#02-AAQ374#003"> <qy:property property_ref="0173-1#02-BAF431#003" /> </qy:property> </qy:property_reference> <qy:value> <val:measure_single_number_value UOM_ref="0173-1#05-AAA480#002"> <val:real_value>10</val:real_value> </val:measure_single_number_value> </qy:value>
String
String
Werkstoff des Schildes
<qy:property_reference property_ref="0173-1#01-ADN229#003"> <qy:property property_ref="0173-1#02-AAQ374#003"> <qy:property property_ref="0173-1#02-AAS027#001" /> </qy:property> </qy:property_reference> <qy:value> <val:string_value>Plastik</val:string_value> </qy:value>
String (translatable)
Farbe des Schildes
<qy:property_reference property_ref="0173-1#01-ADN229#003"> <qy:property property_ref="0173-1#02-AAQ374#003"> <qy:property property_ref="0173-1#02-AAM565#001" /> </qy:property> </qy:property_reference> <qy:value> <val:localized_text_value> <val:content> <bas:local_string> <bas:content>red</bas:content> <bas:language_code>en</bas:language_code> <bas:country_code>US</bas:country_code> </bas:local_string> <bas:local_string> <bas:content>rot</bas:content> <bas:language_code>de</bas:language_code> <bas:country_code>DE</bas:country_code> </bas:local_string> </val:content> </val:localized_text_value> </qy:value>
Time
Date
Herstellungsdatum
<qy:property_reference property_ref="0173-1#01-ADN228#003"> <qy:property property_ref="0173-1#02-AAQ373#003"> <qy:property property_ref="0173-1#02-AAR972#001" /> </qy:property> </qy:property_reference> <qy:value> <val:date_value>2013-07-18</val:date_value> </qy:value>
Time
To be added when an example exists in ECLASS.
Timestamp
Erzeugungszeitpunkt
<qy:property_reference property_ref="0173-1#01-ADR438#003"> <qy:property property_ref="0173-1#02-AAQ827#003"> <qy:property property_ref="0173-1#02-AAO103#002" /> </qy:property> </qy:property_reference> <qy:value> <val:date_time_value>2013-07-18T05:03:00</val:date_time_value> </qy:value>
URL
To be added when an example exists in ECLASS.
Response
Identification of response
Each response contained in an res:eclass_response has their own GUID by which it can be referenced: res:eclass_response/res:eclass_item/res:item_header/res:response_identifier/@type=GUID res:eclass_response/res:eclass_item/res:item_header/res:response_identifier/cmn:identifier
Non-technical data
The following non-technical data can be found in a response:
Datum | XPath |
---|---|
Date of issue of response | res:eclass_response/res:eclass_item/res:item_header/res:response_time |
Query amount | res:eclass_response/res:eclass_item/res:query_amount(with attribute base_unit and alternative_unit)Note: use base_unit="0173-1#05-AAA006#002" for unit one |
Buyer | qry:eclass_queries/eclass_query/query_header/buyer (optional) |
Supplier | qry:eclass_queries/eclass_query/query_header/supplier (optional) |
There is also allowed an unbounded number of localized strings as res:eclass_response/res:eclass_item/res:item_header/res:response_comment
Note: These strings may contain only additional information for understanding the response and must not contain technical data.
Identification of class
An AC reference per response is contained in cat:item/@class_ref, e.g.:
<cat:item class_ref="0173-1---ADVANCED_1_1#01-ADN526#003">…</cat:item>
Path to property
The path to each property used in the query is given in:
cat:item/cat:property_value
The path is expressed as a concatenation of identifiers and separator characters. The same aspects, reference properties and specialized blocks are traversed as in the query. For the AC reference, see Section 3.3.3. The following special characters are used
Character | meaning |
---|---|
: | Aspect |
*<number> | Cardinality value |
/ | Separator between path elements |
Example:
<cat:property_value property_ref="0173-1#02-AAN191#001" subitem_path_property_ref="0173-1#02-AAQ809#003*2:0173-1#01-ADS904#003/0173-1#02-AAQ415#003/0173-1#02-AAN191#001">
</cat:property_value>
Selection of properties
A response must contain property (in path) value pairs for all properties for which values are requested such that the logical expression is fulfilled, no required value should be left empty. The contained values should match the article requirement stated in the query. A response should contain values for all properties which are defined in the data requirement specification (template) referenced in the query. If the template is strict it must not contain any other value.
Handling of datatypes
[to be added: examples of each data type as expressed in ISO29002-10]
Axis
Axis 1D
Befestigungsbezugspunkt
<cat:property_value property_ref="0173-1#02-AAN505#001" subitem_path_property_ref=":0173-1#01-ADN292#003/0173-1#02-AAQ669#003/0173-1#02-AAN505#001"> <val:composite_value> <val:field> <val:real_value>1</val:real_value> </val:field> <val:field> <val:real_value>2</val:real_value> </val:field> <val:field> <val:real_value>3</val:real_value> </val:field> <val:field> <val:real_value>0</val:real_value> </val:field> <val:field> <val:real_value>0</val:real_value> </val:field> <val:field> <val:real_value>0</val:real_value> </val:field> </val:composite_value> </cat:property_value>
Axis 2D
To be added when an example exists in ECLASS.
Axis 3D
To be added when an example exists in ECLASS.
Boolean
REACH Registrierung vorhanden
<cat:property_value property_ref="0173-1#02-AAF507#002" subitem_path_property_ref=":0173-1#01-ADN328#003/0173-1#02-AAQ558#003/0173-1#02-AAF507#002"> <val:controlled_value value_ref="0173-1#07-CAA017#002" /> </cat:property_value>
Integer
Integer (count)
Anzahl der Beschriftungsschilder
<cat:property_value property_ref="0173-1#02-AAM787#001" subitem_path_property_ref=":0173-1#01-ADN229#003/0173-1#02-AAM787#001"> <val:integer_value>1</val:integer_value> </cat:property_value>
Integer (currency)
To be added when an example exists in ECLASS.
Integer (measure)
Example from 34
Level
General
- How is min, max, nom, typ handled?
- Qualified number values should be used, MIN, MAX can be made explicit
- Do rules apply?
- No business rule exists that forbids min > max, but such a rule should be made
- How to deal with missing values for min, max?
- Should be assumed as - / + INF
Level (Date)
To be added when an example exists in ECLASS.
Level (Integer currency)
To be added when an example exists in ECLASS.
Level (Integer measure)
To be added when an example exists in ECLASS.
Level (Integer)
To be added when an example exists in ECLASS.
Level (Real currency)
To be added when an example exists in ECLASS.
Level (Real measure)
eindrähtiger Leiterquerschnitt (mm²)
<cat:property_value property_ref="0173-1#02-AAN512#002" subitem_path_property_ref="0173-1#02-AAQ809#003:0173-1#01-ADS920#003/0173-1#02-AAQ685#003/0173-1#02-AAR079#003/0173-1#02-AAQ534#003/0173-1#02-AAQ533#003/0173-1#02-AAQ532#003/0173-1#02-AAN512#002"> <val:measure_qualified_number_value UOM_ref="0173-1#05-AAA295#002" UOM_code="MMK"> <val:qualified_value qualifier_code="MIN"> <val:real_value>1</val:real_value> </val:qualified_value> <val:qualified_value qualifier_code="MAX"> <val:real_value>2</val:real_value> </val:qualified_value> </val:measure_qualified_number_value> </cat:property_value>
Level (Real)
To be added when an example exists in ECLASS.
Level (Time)
To be added when an example exists in ECLASS.
Level (Timestamp)
To be added when an example exists in ECLASS.
Rational
Rational
To be added when an example exists in ECLASS.
Rational (measure)
To be added when an example exists in ECLASS.
Real
Real (count)
Example from 40
Real (currency)
To be added when an example exists in ECLASS.
Real (measure)
Höhe des Schildes
<cat:property_value property_ref="0173-1#02-BAF431#003" subitem_path_property_ref=":0173-1#01-ADN229#003/0173-1#02-AAQ374#003/0173-1#02-BAF431#003"> <val:measure_single_number_value UOM_ref="0173-1#05-AAA480#002"> <val:real_value>10</val:real_value> </val:measure_single_number_value> </cat:property_value>
String
String
Werkstoff des Schildes
<cat:property_value property_ref="0173-1#02-AAS027#001" subitem_path_property_ref=":0173-1#01-ADN229#003/0173-1#02-AAQ374#003/0173-1#02-AAS027#001"> <val:string_value>Plastik</val:string_value> </cat:property_value>
String (translatable)
Farbe des Schildes
<cat:property_value property_ref="0173-1#02-AAM565#001" subitem_path_property_ref=":0173-1#01-ADN229#003/0173-1#02-AAQ374#003/0173-1#02-AAM565#001"> <val:localized_text_value> <val:content> <bas:local_string> <bas:content>red</bas:content> <bas:language_code>en</bas:language_code> <bas:country_code>US</bas:country_code> </bas:local_string> <bas:local_string> <bas:content>rot</bas:content> <bas:language_code>de</bas:language_code> <bas:country_code>DE</bas:country_code> </bas:local_string> </val:content> </val:localized_text_value> </cat:property_value>
Time
Date
Herstellungsdatum
<cat:property_value property_ref="0173-1#02-AAR972#001" subitem_path_property_ref=":0173-1#01-ADN228#003/0173-1#02-AAQ373#003/0173-1#02-AAR972#001"> <val:date_value>2013-07-10</val:date_value> </cat:property_value>
Time
To be added when an example exists in ECLASS.
Timestamp
Erzeugungszeitpunkt
<cat:property_value property_ref="0173-1#02-AAO103#002" subitem_path_property_ref=":0173-1#01-ADR438#003/0173-1#02-AAQ827#003/0173-1#02-AAO103#002"> <val:date_time_value>2013-07-10T00:00:00</val:date_time_value> </cat:property_value>
URL
To be added when an example exists in ECLASS.
Annex
Differences to NE100 workflow
Two different messages
In ECLASS XML there are two different types of messages, a query and a response which have a different format. Therefore the query does not get overwritten in the response.
Multiple products per request / response In ECLASS XML it is possible for a Requestor to bundle queries for multiple products in one request and also the response is a catalog of all products that the Responder wants to offer.