QuakeML is developed in parallel with a UML representation of its data model. This allows an elaborate software development strategy which uses the UML class model together with a custom UML profile. The XML Schema (XSD) description is created automatically from the UML model with the help of tagged values, which describe the mapping from UML class attributes to XML representation.
The UML/XMI description can also be used as a basis for automated creation of a class library using code generators. Suitable programming languages are, e.g., Python, C++, and Java. In this approach, writing and reading QuakeML documents is equivalent to serializing/deserializing QuakeML objects to/from their XML representation. A further possibility would be the serialization/deserialization to/from SQL for persistent storage in a relational database. QuakePy, a Python package for manipulation of QuakeML-style data objects, is currently under development.
The QuakeML language definition is supplemented by a concept to provide resource metadata and facilitate metadata exchange between distributed data providers. For that purpose, we propose a URI-based format for unique, location-independent identifiers of seismological resources which are assigned by approved naming authorities. In a later development stage, QuakeML will provide a RDF vocabulary for resource metadata description, covering the resource's identity, curation, content, temporal availability, data quality, and associated services. We propose to set up a network of registry institutions which offer web services for resolving resource identifiers into corresponding RDF/XML metadata descriptions, and additionally provide means for resource discovery by offering services for searches against resource metadata.