Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.
/ HQDM Public archive

Java implementation of the High-Quality Data Model framework.

License

Notifications You must be signed in to change notification settings

gchq/HQDM

Repository files navigation

The High Quality Data Model for Data Integration in Java

Wouldn’t it be good to be able to use data in a way that was seamless? In the quest for integrating data within and between systems we piloted the use of a data model designed to support the consistent representation of whatever is of interest to the users of systems in a dynamic environment. A prototype system used this code to allow stable model extension based on user need in a way that didn’t require many code updates. In an era of increased need for decisions supported by information from many systems this repo is offered to allow others to explore and get value from the techniques enabled by this sort of data model implementation.

HQDM contains the replication of an openly available data model based on key ontological foundations to enable the consistent integration of data. The HQDM Java package comprises a set of Java classes and respective interfaces, 230 in total, to replicate the entity-relationship model published by Dr Matthew West as the High Quality Data Model Framework. This class model can be used to create extensions of the entity types, based on the founding ontological commitments and logical restrictions (such as cardinalities), and instances of those types all in Java application code. This, in theory at least, provides a framework for the consistent representation of almost anything that is, or could be, real*. All the data model patterns published in the HQDM framework are supported by the HQDM package. The object properties are constructed around a top-level Java HQDM Object class with some root attributes to enable class-instances to be managed in a database. The choice of database can be left to the user but the structure of the attributes is optimised for the use of Linked Data IRIs and RDF triples to represent HQDM object relationships and other object properties as predicates. All of the HQDM objects can be created and searched using the HQDMObject methods and collections can be handled using the Object Factory. To complement this there is an OWL version of the HQDM data model that is a close match for the original EXPRESS model and the HQDM Java package.

* This is a gross simplification, but it characterises the goal of the model and in use it has proved to be very capable. The UK's National Digital Twin programme is developing a model that aims to address this goal with even more rigour, called the Foundation Data Model (FDM). Data created using HQDM is likely to be mappable to the FDM with low mapping (due to similar ontological commitments).

Getting Started

An introduction to Magma Core and the HQDM Java object library is provided in the Magma Core Wiki.

Prerequisites

Inclusion in other projects

The HQDM Java object library can be incorporated into other maven projects using the dependency:

<dependency>
  <groupId>uk.gov.gchq.hqdm</groupId>
  <artifactId>hqdm</artifactId>
  <version>1.1.0</version>
</dependency>

HQDM is not currently hosted on Maven Central, so a local install of this repository will be required.

Contributing

We welcome contributions to the project. Detailed information on our ways of working can be found here.

In brief:

License

HQDM is released under the Apache 2.0 Licence and is covered by Crown Copyright.