# QuakeML

The Quake Markup Language (QuakeML) is a flexible, extensible and modular XML representation of seismological data (e.g. epicenter, hypocenter, magnitude) which is intended to cover a broad range of fields of application in modern seismology.
The flexible approach of QuakeML allows further extensions of the standard in order to represent waveform data, macroseismic information, probability density functions, slip distributions, shake maps, and others.
QuakeML is an open standard and is developed by a distributed team in a transparent collaborative manner.

## Development

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.
The QuakeML language definition is supplemented by a concept to provide resource metadata and facilitate metadata exchange between distributed data providers. For that purpose, QuakeML proposes 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. QuakeML proposes 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.

## Version 1.2

Version 1.2 is the latest stable version QuakeML. Schemas and other documentation for version 1.2 can be found here. This is the version that is used in results of event queries to International Federation of Digital Seismograph Networks (FDSN) web services and is supported by data centers around the world, such as the European Seismic Portal.

## Version 2.0

QuakeML 2.0 will be the next major version. QuakeML up to version 1.2 covered (only) a basic seismic event description, whereas from v2.0 many new thematic packages will be available, and are currently under development.
Currently, the following packages are under development with new first-level elements (child elements of quakeml):
* Basic Event Description (BED)
* Basic Event Description – Real Time (BED-RT)
* Borehole
* Hydraulic
* Macroseismic
* Seismic Source
* Site Characterization
* Station Characterization
* Strong Motion
Helper packages that do not define first-level elements:
* Basic Event Description Types
* Common
* Filter
* Resource Metadata
* Waveform

## QuakePy tools

QuakePy is a Python package designed as a set of tools for statistical analyses of seismological data encoded using QuakeML. It provides a library of classes for earthquake catalog handling and computations, and plot routines for visualizing the obtained results. QuakePy is developed in Python as a fully open-source library, and it is based on multiple other tools such as GMT.
Although QuakePy avoids the use of any proprietary software, many tools for Python allow for a MATLAB-like working environment, e.g., IPython.