Personal tools
You are here: Home GRIA Documentation Documentation 5.1 Tutorials Building your own contextualised B2B registry Registry Component - Background

Registry Component - Background

A description of the interfaces of the registry component
This tutorial explains how to configure, install and write applications using GRIA's contextualised registry component
Page 2 of 6.

Architecture

The Registry Component (RC) encompasses three main layers: the Registry Core Component (RCC), the Registry Management Facility (RMF) and the Registry Database Connectivity (RDC).

The RDC provides a collection of interfaces for accessing and storing XML data as well as managing users and access rules on the underlying database. These interfaces are implemented using a specialised database connection. Currently the preferred implementation is based on an XML:DB API[1] connection.

Architecture

Architecture of the registry component

The RCC includes interfaces for registration and discovery of XML documents, an interface for the Registry Domain Model (RDM) as well as an OWL-based implementation of this interface, and an implementation of the XML-based query language ooXmlQL.

The RDM specifies the concepts and relationship between these concepts that can be used by a specific registry instance. XML documents are stored and can be retrieved with respect to these concepts. Relationships define dependencies between concepts that can be used for specifying join queries and sub queries. A special is-a relationship is introduced for specifying hierarchies of concepts. Sub concepts inherit relationships from their super concepts. Currently only simple inheritance is supported by the RDM[2].

ooXmlQL is a query language designed to support join queries and sub queries based on the underlying RDM. Thereby the selection and filter statements are language independent, and can for instance be defined by XPath or XQuery. For execution, ooXmlQL queries will be translated to a language supported by the RDC. In the current realisation this is XQuery. However, ooXmlQL is not limited to XQuery.

The configuration of a concrete registry instance is done by the RMF. This module provides interfaces for configuration and for user management. User management encompass creation and deletion of users as well as groups, users can belong to. The configuration interface allows setting up the RDM as well as to dynamically adding new concepts and relationships. Furthermore it supports the registration of predefined queries that can be executed by name through the discovery interface of the RCC[3].

Interfaces

In the following we give a brief overview of the different interfaces used by the RC.

Registration


Registration Interface
Registration interface

Method description:

  • registerEntity: allows the user to register an entity under a specific concept.
  • deleteEntity: removes an entity from a given concept.
  • deleteAllEntities: removes all entities accessible by the user.
  • insertRelationship: creates a relationship between two entities. Precondition: the used relationship is defined within the RDM between the concepts the two entities belong to. If the relationship has an inverse relationship (owl:inverseOf) the inverse relationship will be automatically added.

Discovery


Discovery Interface
Discovery interface

Method description:

  • getRegistryDomainModel: return the RDM of the registry.
  • lookup: looks up an entity by its concept and identifier.
  • lookupByConcept: looks up entities by a specified concept.
  • getIdentifier: returns the identifier of a document/entity.
  • query: queries the registry using a Java class (XmlQuery.java) representing ooXmlQL queries (see appendix).
  • queryBySpecificQL: queries the registry using a specified query language. If the query language is not supported by the concrete registry, an exception will be thrown.
  • executePredefinedQuery: executes a predefined query, stored in the registry.

Configuration


Configuration Interface
Configuration interface

Method description:

  • setRegistryDomainModel: sets up the RDM of the registry and configures the registry accordingly.
  • getRegistryDomainModel: return the RDM of the registry.
  • createConcept: creates a new concept in the RDM and updates the registry.
  • insertBidirectionalRelationship: adds a new bidirectional relationship between two concepts (using owl:inverseOf).
  • insertRelationship: adds a new relationship between two concepts.
  • registerPredefinedQuery: registeres a new predefined query under a concrete name.
  • setPredefinedQueries: registers a set of predefined queries using the XML representation of predefined queries (see appendix).

User Management


User Management Interface
User Management interface

Method description:

  • addUser: adds a new user to the list of registry users.
  • removeUser: removes a user from the list of registry users.
  • addGroupToUser: adds a new group to the list of groups a user belongs to.
  • removeGroupFromUser: removes a group from the list of groups a user belongs to.
  • listUsers: lists all users of the registry.
  • listGroups: lists all groups used within the registry.

    Implementation Details - Constants

    Several interfaces provides constants used within the registry component. The following list summarises these interfaces.

    • PropertyConstants: general identifiers used in ‘registry.properties’ file, e.g. ‘registry.conf.dir’ (package uk.ac.soton.itinnovation.registry.icomponent.util)
    • QueryLanagueNS: namespaces of query languages (package uk.ac.soton.itinnovation.registry.icomponent.namespace)
    • XmlPropertyConstants: identifiers used in ‘registry.properties’ file, specific for an XML based implementation of the registry (package uk.ac.soton.itinnovation.registry.component.xml.util)
    • XmlDatabaseConstants: constants used internally like queries.xml for predefined queries (uk.ac.soton.itinnovation.registry.component.xml.db)
    • XmlPropertyConstantsXmlDb: constants used within the XML:DB connector implementation of the registry (package uk.ac.soton.itinnovation.registry.component.xml.db.xmldb)


    [1] XML:DB Initiative: API for XML Databases, http://xmldb-org.sourceforge.net/xapi/

    [2] Future enhancements could contain multiple inheritance and restrictions on relationships like arity.

    [3] In the current realisation only XQuery queries can be stored and executed. In future the specification of predefined queries should support different query languages, and the query processor should evaluate if it can process a predefined query. Especially ooXmlQL queries should be supported.