Ontology of general purpose datatypes based on ISO standard ISO-11404.
Allotrope Ontology of Datatypes (WD/2025/12)
The model of datatypes used in this International Standard is said to be an “abstract computational model”. It is “computational” in the sense that it deals with the manipulation of information by computer systems and makes distinctions in the typing of data units which are appropriate to that kind of manipulation. It is “abstract” in the sense that it deals with the perceived properties of the data units themselves, rather than with the properties of their representations in computer systems. [ISO11404]
A datatype is said to be bounded above if it is ordered and there is a value U in the value space such that, for all values s in the value space, s ≤ U . The value U is then said to be an upper bound of the value space. Similarly, a datatype is said to be bounded below if it is ordered and there is a value L in the space such that, for all values s in the value space, L ≤ s . The value L is then said to be a lower bound of the value space. A datatype is said to be bounded if its value space has both an upper bound and a lower bound. [ISO11404]
A value space has the mathematical concept of cardinality: it may be finite, denumerably infinite (countable), or non-denumerably infinite (uncountable). A datatype is said to have the cardinality of its value space. In the computational model, there are three significant cases: - datatypes whose value spaces are finite, - datatypes whose value spaces are exact and denumerably infinite, - datatypes whose value spaces are approximate, and therefore have a finite or denumerably infinite computational model, although the conceptual value space may be non-denumerably infinite. Every conceptually finite datatype is necessarily exact. No computational datatype is non-denumerably infinite. [ISO11404]
For a denumerably infinite value space, there always exist representation algorithms such that no two distinct values have the same representation and the representation of any given value is of finite length. Conversely, in a nondenumerably infinite value space there always exist values which do not have finite representations. [ISO11404]
In every value space there is a notion of equality, for which the following rules hold: - for any two instances (a, b) of values from the value space, either a is equal to b, denoted a = b , or a is not equal to b, denoted a ≠ b ; - there is no pair of instances (a, b) of values from the value space such that both a = b and a ≠ b ; - for every value a from the value space, a = a ; - for any two instances (a, b) of values from the value space, a = b if and only if b = a ; - for any three instances (a, b, c) of values from the value space, if a = b and b = c , then a = c . On every datatype, the operation Equal is defined in terms of the equality property of the value space, by: - for any values a, b drawn from the value space, Equal(a,b) is true if a = b , and false otherwise. [ISO11404]
The computational model of a datatype may limit the degree to which values of the datatype can be distinguished. If every value in the value space of the conceptual datatype is distinguishable in the computational model from every other value in the value space, then the datatype is said to be exact. Certain mathematical datatypes having values which do not have finite representations are said to be approximate, in the following sense: Let M be the mathematical datatype and C be the corresponding computational datatype, and let P be the mapping from the value space of M to the value space of C . Then for every value v' in C , there is a corresponding value v in M and a real value h such that P(x) = v' for all x in M such that v − x < h . That is, v' is the approximation in C to all values in M which are “within distance h of value v ”. Furthermore, for at least one value v' in C , there is more than one value y in M such that P( y) = v' . And thus C is not an exact model of M . In this International Standard, all approximate datatypes have computational models which specify, via parametric values, a degree of approximation, that is, they require a certain minimum set of values of the mathematical datatype to be distinguishable in the computational datatype. [ISO11404]
A datatype is said to be numeric if its values are conceptually quantities (in some mathematical number system). A datatype whose values do not have this property is said to be non-numeric. [ISO11404]
The significance of the numeric property is that the representations of the values depend on some radix, but can be algorithmically transformed from one radix to another. [ISO11404]
A value space is said to be ordered if there exists for the value space an order relation, denoted ≤, with the following rules: - for every pair of values (a, b) from the value space, either a ≤ b or b ≤ a , or both; - for any two values (a, b) from the value space, if a ≤ b and b ≤ a , then a = b ; - for any three values (a, b, c) from the value space, if a ≤ b and b ≤ c , then a ≤ c . For convenience, the notation a < b is used herein to denote the simultaneous relationships: a ≤ b and a ≠ b . A datatype is said to be ordered if an order relation is defined on its value space. A corresponding characterizing operation, called InOrder, is then defined by: - for any two values (a, b) from the value space, InOrder(a, b) is true if a ≤ b , and false otherwise. [ISO11404]
The size of an aggregate-value is the number of component values it contains. The size of the aggregate datatype is fixed, if and only if all values in its value space contain the same number of component values. The size is variable, if different values of the aggregate datatype may have different numbers of component values. Variability is the more general case; fixed-size is a constraint. [ISO11404]
An aggregate-value has the identifier uniqueness property if and only if no identifier (e.g., label, index) of the element datatype occurs more than once in the aggregate-value. The aggregate datatype has the identifier uniqueness property, if and only if all values in its value space do. [ISO11404]
An aggregate datatype has the ordering property, if and only if there is a canonical first element of each nonempty value in its value-space. This ordering is (externally) imposed by the aggregate value, as distinct from the value-space of the element datatype itself being (internally) ordered. It is also distinct from the value-space of the aggregate datatype being ordered. [ISO11404]
The type-generator sequence has the ordering property. The datatype characterstring is defined as sequence of (character(repertoire)). The ordering property of sequence means that in every value of type characterstring, there is a first character value. For example, the first element value of the characterstring value "computation" is 'c'. This is different from the question of whether the element datatype character(repertoire) is ordered: is 'a' < 'c'? It is also different from the question of whether the value space of datatype characterstring is ordered by some collating-sequence, e.g. is "computation" < "Computer"? [ISO11404]
The components of an aggregate datatype may not all be required to have a valid value of the datatype, i.e., the actual value space of the datatype may include values for which some of the component values are unspecified. When a component of the datatype is required to have a valid value in order for the aggregate value to be a valid value of the datatype, the component is said to be a mandatory component. When a component of the datatype is not required to have a valid value in order for the aggregate value to be a valid value of the datatype, the component is said to be an optional component. [ISO 11404]
This property applies to fields of records, members of classes, and elements of sequences, tables, and arrays. [ISO11404]
An aggregate datatype is homogeneous, if and only if all components must belong to a single datatype. If different components may belong to different datatypes, the aggregate datatype is said to be heterogeneous. The component datatype of a homogeneous aggregate is also called the element datatype. [ISO11404]
Homogeneous aggregates view all their elements as serving the same role or purpose. Heterogeneous aggregates divide their elements into different roles. [ISO11404]
The aggregate datatype is homogeneous if its components all belong to the same datatype, even if the element datatype is itself an heterogeneous aggregate datatype. Consider the datatype label_list defined by: type label = choice (state(name, handle)) of ((name): characterstring, (handle): integer); type label_list = sequence of (label); Formally, a label_list value is a homogeneous series of label values. One could argue that it is really a series of heterogeneous values, because every label value is of a choice datatype. The choice datatype generator is clearly heterogeneous because it is capable of introducing variation in element type. But sequence is homogeneous because it itself introduces no variation in element type. [ISO11404]
An aggregate-value has the uniqueness property if and only if no value of the element datatype occurs more than once in the aggregate-value. The aggregate datatype has the uniqueness property, if and only if all values in its value space do. [ISO11404]
a value space is the collection of values for a given datatype
Operation on datatypes, as objects distinct from their values, that generates new datatypes. [ISO11404]
positive integer range subtype generator
An aggregate datatype generator generates a datatype by - applying an algorithmic procedure to the value spaces of its component datatypes to yield the value space of the aggregate datatype, and - providing a set of characterizing operations specific to the generator. [ISO11404]
heterogenous aggregate datatype generator
homogenous aggregate datatype generator with variable size
homogenous unordered aggregate datatype generator with variable size
directed labeled graph datatype generator
set of distinct values, characterized by properties of those values, and by operations on those values. [ISO11404]
Datatype defined by a type-declaration. [ISO11404]
Datatype defined by the application of a datatype generator to one or more previously-defined datatypes. [ISO11404]
Identifiable datatype that cannot be decomposed into other identifiable datatypes without loss of all semantics associated with the datatype. [ISO11404]
void is the datatype representing an object whose presence is syntactically or semantically required, but carries no information in a given instance. [ISO11404]
complex is a family of datatypes, each of which is a computational approximation to the mathematical datatype comprising the “complex numbers”. Specifically, each complex datatype designates a collection of mathematical complex values which are known to certain applications to some finite precision and must be distinguishable to at least that precision in those applications.
integer is the mathematical datatype comprising the exact integral values. [ISO11404]
Rational is the mathematical datatype comprising the “rational numbers”. [ISO11404]
real is a family of datatypes which are computational approximations to the mathematical datatype comprising the “real numbers”. Specifically, each real datatype designates a collection of mathematical real values which are expressed to some finite precision and must be distinguishable to at least that precision. [ISO11404]
Scaled is a family of datatypes whose value spaces are subsets of the rational value space, each individual datatype having a fixed denominator, but the scaled datatypes possess the concept of approximate value. [ISO11404]
non-numeric unordered primitive datatype
boolean is the mathematical datatype associated with two-valued logic. [ISO11404]
character is a family of datatypes whose value spaces are character-sets. [ISO11404]
State is a family of datatypes, each of which comprises a finite number of distinguished but unordered values. [ISO11404]
Time is a family of datatypes whose values are points in time to various common resolutions: year, month, day, hour, minute, second, and fractions thereof. [ISO11404]
enumerated is a family of datatypes, each of which comprises a finite number of distinguished values having an intrinsic order. [ISO11404]
ordinal is the datatype of the ordinal numbers, as distinct from the quantifying numbers (datatype integer). ordinal is the infinite enumerated datatype. [ISO11404]
An aggregate datatype is a generated datatype, each of whose values is, in principle, made up of values of the parametric datatypes. The parametric datatypes of an aggregate datatype or its generator are also called component datatypes. [ISO11404]
Choice generates a datatype called a choice datatype, each of whose values is a single value from any of a set of alternative datatypes. The alternative datatypes of a choice datatype are logically distinguished by their correspondence to values of another datatype, called the tag datatype. [ISO11404]
pointer generates a datatype, called a pointer datatype, each of whose values constitutes a means of reference to values of another datatype, designated the element datatype. The values of a pointer datatype are atomic. [ISO11404]
procedure generates a datatype, called a procedure datatype, each of whose values is an operation on values of other datatypes, designated the parameter datatypes. That is, a procedure datatype comprises the set of all operations on values of a particular collection of datatypes. All values of a procedure datatype are conceptually atomic. [ISO11404]
homogenous aggregate datatype with variable size
Sequence generates a datatype, called a sequence datatype, whose values are ordered sequences of values from the element datatype. The ordering is imposed on the values and not intrinsic in the underlying datatype; the same value may occur more than once in a given sequence. [ISO11404]
bit is the datatype representing the finite field of two symbols designated 0, the additive identity, and 1, the multiplicative identity. [ISO11404]
bitstring is the datatype of variable-length strings of binary digits. [ISO11404]
character string is a family of datatypes which represent strings of symbols from standard character-sets. [ISO11404]
modulo is a family of datatypes derived from Integer by replacing the operations with arithmetic operations using the modulus characteristic. [ISO11404]
object identifier is the datatype of “object identifiers”, i.e. values which uniquely identify objects in a (Open Systems Interconnection) communications protocol, using the formal structure defined by Abstract Syntax Notation One (ISO/IEC 8824). [ISO11404]
octet is the datatype of 8-bit codes, as used for character-sets and private encodings. [ISO11404]
octet string is the datatype of variable-length encodings using 8-bit codes. [ISO11404]
A private datatype represents an application-defined value-space and operation set which are intentionally concealed from certain processing entities. [ISO11404]
timeinterval is a family of datatypes representing elapsed time in seconds or fractions of a second (as opposed to Date-and-time, which represents a point in time). It is a generated datatype derived from a scaled datatype by limiting the operations. [ISO11404]
These taxonomies contain material or may constitute derivative works of material which may be subject to copyright by one of the following organizations. By using these taxonomies, you agree to the following terms and conditions applicable to its contents: ****************************************************************************** Copyright Notice and Terms for IUPAC Gold Book ______________________________________________________________________________ Copyright © 1998, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************************************************************** Copyright Notice and Terms for PSI-MS (Proteomics Standards Initiative - Mass Spectrometry) Mass spectrometer output files and spectra interpretation _____________________________________________________________________________ Created by Matt Chambers, Andreas Bertsch, Marius Kallhardt, Eric Deutsch Fredrik Levander, Pierre-Alain Binz, and Gerhard Mayer. Publisher: HUPO Proteomics Standards Initiative Mass Spectrometry Standards Working Group and HUPO Proteomics Standards Initiative Proteomics Informatics Working Group. This work is used pursuant to a Creative Commons license available here: http://creativecommons.org/licenses/by/3.0/legalcode ****************************************************************************** Attribution Notice for National Center for Biomedical Ontology materials. This work contains material from the Cell Ontology and Clinical Measurement Ontology, available here: http://bioportal.bioontology.org/. ****************************************************************************** Attribution Notice for ChEBI This work contains material from the European Bioinformatics Institute’s ChEBI database. ****************************************************************************** Attribution Notice for Quantities Units Dimensions Data Types (http://www.qudt.org/) This work contains content from www.qudt.org and is used pursuant to a Creative Commons License available here: http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. The original work may have been modified. ****************************************************************************** Copyright and Attribution Notice for Dublin Core Metadata Initiative Document This work contains material from the following DCMI document used pursuant to a creative commons license available here: https://creativecommons.org/licenses/by/4.0/legalcode. This material may have been modified or changed. Timestamped URL: http://dublincore.org/documents/2012/06/14/dcmi-terms/ Date Issued: 2012-06-14 Document Status: This is a DCMI Recommendation. Copyright © 1995-2015 DCMI. All Rights Reserved. DCMI liability, trademark/service mark, document use and software licensing rules apply. ******************************************************************************
This work is licensed under a Creative Commons Attribution 4.0 International License http://creativecommons.org/licenses/by/4.0/. THESE MATERIALS ARE PROVIDED "AS IS" AND ALLOTROPE EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE WARRANTIES OF NON-INFRINGEMENT, TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Copyright © 2015-2025 Allotrope Foundation
Creative Commons Attribution 4.0 International Public License
A subtype is a datatype derived from an existing datatype, designated the base datatype, by restricting the value space to a subset of that of the base datatype whilst maintaining all characterizing operations. Subtypes are created by a kind of datatype generator which is unusual in that its only function is to define the relationship between the value spaces of the base datatype and the subtype. [ISO11404]