The purpose of Base Data Type declarations is to provide a
point of declaration of all the primitive datatypes that are in use within
the domain and can be used to describe the contents of the Business
Information Model.
A significant problem with the XML Schema Definition standard is that it
is designed to solve a large number of software implementation problems
and so provides an equally large number of datatypes with each datatype
describing a variation on a theme.
For example as well as "number" we also have "short" (with a range of
values corresponding to that which may be stored a 16 bit computer word),
"long", "int", "integer", "decimal", "double", "byte" and quite a few
other number variations. However many of these datatypes are
highly-specialized computer-focused definitions that have little or no
relevance to the Business stakeholders.
Most likely the business stakeholders would only recognise a limited
number of datatypes - such as String, Date, Time, Integer, Decimal - and
some domain-specific ones - such as Money (amount + currency attribute) -
and will prefer the model to be restricted to that small set.
The advantages of defining a set of base data types and gathering them
together in a single file are:
* It allows documented controls to be placed on the primitive types that
are used in any schema.
* It will improve consistency of use of primitive types (e.g. consistent
use of "integer" rather than "int", "long" etc.) that must be handled by
applications
* It will improve code reuse.
* It allows standard attributes to be added to all elements whilst hiding
the detail in a non business definition layer.
The principle is something like the way datayping is implemented in Java
(as well as other programming languages) where every primitive datatype,
such as "string", is wrapped by an equivalent complex class such as
"String".The Java developer could declare object attributes using the
"string" primitive but this isn't regarded as good practice. By using the
"pfdt:string" class instead they are protected from physical changes to
the implementation of "string" and also gain an extension point where
additional behaviour not supported by the primitive datatype can be
defined.
The declarations in this file underpin the User Defined Types, Message
Infrastructure and Business Entity Template declarations.
Extension of a Decimal value for use with monetary
values where a currency code needs to
be specified.
The currency code is actually metadata about the value so, in line with
good XML practice, the Currency Code is declared as an XML-Attribute of
the Money datatype rather than as a separate XML-Element.
The currency attribute should then include a list of valid currencies
codes that are supported.
A count of the number of occurrences of something - must
therefore be >=0. This is the functional equivalent of the XML
nonNegativeInteger datatype.
A Classifier is an extended datatype used as the basis
for a data-item whose allowed values are restricted to a pre-defined set
of Classifiers or Enumerated Codes.
Classifier should never actually be used as the datatype for any
data-item in a finished data model because a specific Enumerated Domain
should be declared for defining the specific values in the domain.
However it is acceptable in an incomplete model where definition of the
domain has yet to be completed.
The Reference Data Type is any association between two
Business Entities (or their sub-
components). In order to be consistent across the entire dataset all
references contain the ID of the thing being referenced and the value
actually assigned to the element is the 'display value'. The type of
reference is derived from the underlying data model
This has a shortcoming in that we can't support multi-value keys using
this datatype. However
I'm reluctant to extend the datatype to include the ID as a nested
element because it becomes very cumbersome to use. Instead, in all
likelihood, the Primary Key to any entity in a data processing
application is likely to be a single-value, system-generated key so
we're imposing that restriction here as well.
A measurement of something such as a length or area. All
measurements are to 2 decimal places and must be positive.
A string containing a unique identifier for something.
The underlying assumption is that each instance of a class or entity
will have a unique identifier assigned to it which can then be assigned
to any referencing entity as a reference to the entity instance.
This is a very similar concept to XML ID datatype but is locally defined
because of the need to extend the datatype with domain specific
attributes.
A Numeric String is a string based datatype for
representing strings, such as telephone numbers and IP addresses, that
are limited to the numeric character-set.
The Boolean datatype is a redefinition of the XML Schema
defined "Boolean". The XSD version is a logical True / False datatype
whereas from a data processing perspective it is more likely to be a
string based Y/N value. This could be seen as an Enumerated Domain but
"Boolean" is so common that it makes more sense to be a base datatype.
Yes
No
English
Welsh
String value with a language code for natural-language
text.
Identifies the language that the sentence is
recorded in.
An extended boolean type that also allows 'unknown' as a
value.
OTHER
The Report Reference Number is a 20-digit unique
identifier assigned to each Report.
It is formatted as five blocks of four digits i.e.
9999-9999-9999-9999-9999 and generated by an algorithm described in
Appendix A "Report ID Generation" of Section 18 "Transformation Rules"
of the Technical Standards.
Rating in kW
Below 12kW
Between 12kW and 250kW
Greater than 250kW
Yes, inspection completed
Yes, inspection commissioned
No inspection completed or commissioned
Not relevant
Don't know
Standard DEC
Default DEC
Asset Rating Only DEC