bcxml taxonomy format


Table of Contents

Introduction
Utility concepts used for translation and description
Translations
External reference
Description
Core concepts: taxonomy with objects
Taxonomy
Object
Property handling
Property
Measure
XML schema frontmatter

This is the document describing the (early) 2003 revision of the bcxml taxonomy format. It is called a taxonomy because it uses an inheritance hierarchy. Having a structure (for instance a hierarchy) is a core property of a taxonomy. As it formally specifies the concepts in the hierachy by adding properties (and also describing/defining those properties), it can rightfully be called a (formal) ontology. Historically, though, it is called a taxonomy, so we'll stick with that.

The bcxml taxonomy format and the data format were originally developed in the eConstruct (http://www.econstruct.org/) project in 2000-2002. Main authors were Michel Böhms, Peter Bonsma, Reinout van Rees and Frits Tolman. The format described in this document introduces only relatively small changes.

The UML diagram shows the model in an overview. The utility concepts used by the rest of the model are white, the core concepts, taxonomy and object, are light yellow (or light gray in b/w) and the property handling concepts are dark gray.

Before we start off with the explanation of the core concepts in the bcxml taxonomy format, it is best to first introduce two utility concepts that are used in the rest of the document.

<Description> is also an abstract type that won't show up in the taxonomy, the functionality it offers is used, though, in <Taxonomy>, <Object>, <Property> and <RestrictedValue>. It allows the following four describing elements to be added. The first three use the mandatory xml:lang attribute to specify the language of the text.

Figure 7. XML schema - DescriptionType

<xs:complexType name="DescriptionType" abstract="true">
  <xs:sequence>
    <xs:element name="Name" type="TranslatableType"
      minOccurs="1" maxOccurs="unbounded"/>
    <xs:element name="Explanation" type="TranslatableType"
      minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="Synonym" type="TranslatableType"
      minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="ExternalReference" type="ExternalReferenceType"
      minOccurs="0" maxOccurs="unbounded"/>
    <xs:any namespace="##other" processContents="lax"
      minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>

      

<Object>s are always embedded in a <Taxonomy> toplevel element. <Object> is the most important element, containing the information on the objects, or concepts, that are described and defined in the taxonomy.

An object can be defined as an concept that is of interest to the building industry which you want to make explicit by adding properties. So on the one hand side it could be something concrete, something touchable like a table, a foundation pile, a dragline. On the other hand it can be an activity (like painting or pile driving) or something more abstract or generic like material, process, space.

<Object> can point to a supertype object (from which it inherits it's properties etc.) using the <SupertypeRef> element. The bcxml taxonomy format offers only a simple form of inheritance. All <PartRef>s and <Property>s of the supertype(s) are copied. There is no mechanism to allow you to overwrite part of the supertype's properties as a property's identity hinges on the "id" attribute and you can't have duplicate id's.

Next follows a list of <Property>s.

<PartRef>s reference <Object>s that are parts of this object. This is formally called "decomposition". A letterbox is part of a door, for instance. Or a room is part of a floor is part of a building is part of a building site.

Lastly, a mandatory id attribute is made available. This is used to uniquely identify items within the taxonomy. It is defined to have the NCName type, which means that it should start with a letter (a-z, A-Z). It may only contain letters, digits (0-9), underscores (_), dashes (-) and points (.). The rest is prohibited (including spaces, tabs and slashes (/)).

The element definition below adds a number of key definitions to speed up crossreferences to <Object>s in the taxonomy.

Figure 15. XML schema - Object

<xs:element name="Object" type="ObjectType">
  <xs:key name="ObjectKey">
    <xs:selector xpath="Object"/>
    <xs:field xpath="@id"/>
  </xs:key>
  <xs:keyref name="SupertypeKeyRef" refer="ObjectKey">
    <xs:selector xpath="Object"/>
    <xs:field xpath="SupertypeRef"/>
  </xs:keyref>
  <xs:keyref name="PartKeyRef" refer="ObjectKey">
    <xs:selector xpath="Object"/>
    <xs:field xpath="PartRef"/>
  </xs:keyref>
  <xs:keyref name="RestrictedValueKeyRef" refer="ObjectKey">
    <xs:selector xpath="Object/Property"/>
    <xs:field xpath="AllowedObjectRef"/>
  </xs:keyref>
</xs:element>

      

<Property>s are always associated with <Object>s, they are never used on their own. Properties should be seen in their context, which means their enclosing object. Semantics (meaning) depends on the context. A property like "height" has a completely diffent meaning (semantics) when it is the height of a door compared to the height of the budget.

Properties can handle values in two different ways:

This element has an localid attribute to make it identifiable within the context of the <Object>.

When you have multiple measures, a <Context> can be added to each measure to indicate the context where that measure is to be used ('NL' for use in the Netherlands for instance, or 'ISO1234' to indicate a official standard).

An optional attached <Unit> can be specified. All characters and digits are OK, as are *, ^ and /. EUR/m^2 is OK for instance. But no spaces. Everything should be specified in S.I. units. So kg, N and m and no mg, kN and km. Also allowed are the standard currency codes like EUR, USD, GBP, SIT, NLG. There is no easy way to check this without making the model substantially bigger, so you have to take good care when writing units.

Also some <RestrictedValue>s can be added to the measure. When present they limit the allowed values for the property to just those values. This element (like <Property>) has an localid attribute to make it identifiable within the context of the <Object>.

The definitions in the rest of the document are wrapped in the standard xml schema wrapper, declaring namespaces and importing the xml namespace (for the xml:id attribute).

Figure 23. XML schema - Schema frontmatter

<xs:schema targetNamespace="http://www.bcXML.org/2003/bcXML" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://www.w3.org/2001/xml.xsd"/>
  The part about Taxonomy is displayed in Figure 10
  The part about TaxonomyType is displayed in Figure 11
  The part about Object is displayed in Figure 15
  The part about ObjectType is displayed in Figure 14
  The part about PropertyType is displayed in Figure 18
  The part about DescriptionType is displayed in Figure 7
  The part about TranslatableType is displayed in Figure 3
  The part about ExternalReferenceType is displayed in Figure 5
</xs:schema>