OrientDB Profile - skrusche63/OASIS-ebXML-RegRep-v4.0 GitHub Wiki

This wiki page is actually construction.

Topics

OrientDB

OrientDB is a NoSQL graph database that combines the features of a document and also a graph database in single product. OrientDB uses an Apache 2.0 License and is free even for commercial usage.

One of the building blocks of any implementation of the OASIS ebXML RegRep v4.0 standard is the mapping of the respective Registry Information Model (RIM) onto the chosen database and its generic schema. We denote such a mapping a profile.

Tinkerpop Blueprints

Blueprints is a collection of interfaces and implementations for a variety of graph databases including

  • NEO4J
  • OrientDB
  • InfiniteGraph
  • Titan and others.

The implementation of the OrientDB Profile is pure Java and is based on the OrientDB implementation of Tinkerpop Blueprints.

RIM v4.0 Implementation

The OrientDB profile provides a complete implementation of the Registry Information Model, enclosing the following sub models:

  • Core Information Model
  • Association Information Model
  • Classification Information Model
  • Provenance Information Model
  • Service Information Model
  • Query Information Model
  • Event Information Model
  • Federation Information Model
  • Access Control Information Model

For more information about the various sub model of the OASIS ebXML RIM v4.0, please refer to the respective specification.

From a conceptual point of view, the OrientDB profile describes a mapping of the OASIS ebXML RIM v4.0 information objects onto the edges and vertices of a graph data model. The complete list of supported vertex type can be found here. All implemented edges are described here.

Core Information Model

The implementation of the Core Information Model encloses the subsequent list Standard-compliant information objects. All these objects are mapped onto Vertices of a graph data model, thereby respecting their inheritance structure:

  • InternationalStringType OInternationalType.java
  • LocalizedStringType OLocalizedType.java
  • ExtensibleObjectType OExtensibleObjectType.java
  • SlotType OSlotType.java
  • IdentifiableObjectType OIdentifiableType.java
  • RegistryObjectType ORegistryObjectType.java
  • VersionInfoType OVersionInfoType.java
  • ObjectRefType OObjectRefType.java
  • DynamicObjectRefType DynamicObjectRefType.java
  • ExtrinsicObjectType OExtrinsicObjectType.java
  • CommentType OCommentType.java
  • RegistryPackageType ORegistryPackageType.java
  • ExternalIdentifierType OExternalIdentifierType.java
  • ExternalLinkType OExternalLinkType.java

Association Information Model

The implementation of the Association Information Model comprises a single information object, represented as a Vertex of a graph data model:

  • AssociationType OAssociationType.java

Classification Information Model

The implementation of the Classification Information Model contains the following vertices:

  • TaxonomyElementType OTaxonomyElementType.java
  • ClassificationSchemeType OClassificationSchemeType.java
  • ClassificationNodeType OClassificationNodeType.java
  • ClassificationType OClassificationType.java

The Classification Information Model is the starting point for a Semantic Information Management based on OASIS ebXML RegReps. For more information of how to use the information elements of the Classification Information Model to semantically enrich information, please read here.

Provenance Information Model

The Provenance Information Model encloses the subsequent list of vertices:

  • PostalAddressType OPostalAddressType.java
  • TelephoneNumberType OTelephoneNumberType.java
  • EmailAddressType OEmailAddressType.java
  • PartyType OPartyType.java
  • PersonType OPersonType.java
  • PersonNameType OPersonNameType.java
  • OrganizationType OOrganizationType.java

Below is a simple graph model that describes the relationship between PersonType and PersonNameType: The graph consists of the vertices PersonType and PersonNameType and the edge hasPersonName. In addition, the properties firstName, middleName and lastName are used to describe the PersonNameType vertex in more detail.

PersonType & PersonNameType relationship

Service Information Model

The Service Information Model is built from the following vertices:

  • ServiceType OServiceType.java
  • ServiceEndpointType OServiceEndpointType.java
  • ServiceBindingType OServiceBindingType.java
  • ServiceInterfaceType OServiceInterfaceType.java

The Service Information Model is primarily designed to support the description of web services within an OASIS ebXML RegRep. Due its generic architecture, the Service Information Model is not restricted to describe WSDL based services. It is also capable to describe applications and other functional objects. E.g. in the past, the Service Information Model has been successfully used to describe information transformations, either Rewrite (XSLT) or Rule-based ones.

The image below illustrates the mapping of a subset of the Service Information Model onto a graph model.

ServiceType graph model

The model shows, that ServiceType and ServiceEndpointType are connected to the egde hasServiceEndpoint. The reference to the information objects, ServiceInterfaceType and ServiceBindingType are described as vertex properties.

Query Information Model

The Query Information Model holds the implementation of the following information objects:

  • QueryDefinitionType OQueryDefinitionType.java
  • ParameterType OParameterType.java
  • QueryExpressionType OQueryExpressionType.java
  • StringQueryExpressionType OStringQueryExpressionType.java
  • XMLQueryExpressionType OXMLQueryExpressionType.java
  • QueryType OQueryType.java

Event Information Model

The Event Information Model contains the following vertices:

  • AuditableEventType OAuditableEventType.java
  • ActionType OActionType.java
  • SubscriptionType OSubscriptionType.java
  • DeliveryInfoType ODeliveryInfoType.java
  • NotificationType ONotificationType.java

Federation Information Model

The OrientDB profile implements all information objects of the Federation Information Model:

  • RegistryType ORegistryType.java
  • FederationType OFederationType.java

Access Control Information Model

The implementation of the Access Control Information Model holds a single information object:

  • RoleType ORoleType.java

Profile Usage

The OrientDB profile distinguishes read & write requests and therefore provides a ReadManager and a WriteManager to bundle the respective requests.

ReadManager

The ReadManager is invoked by the OASIS ebXML QueryManager and processes query requests against an OrientDB server. Query requests refer to a set of parameterized and pre-defined (registered) query definitions. The OrientDB profile actually supports the subsequent set of (canonical) queries:

  • BasicQuery
  • ClassificationSchemeSelector
  • FindAssociations
  • FindAssociatedObjects
  • GarbageCollector
  • GetAuditTrailById
  • GetAuditTrailByLid
  • GetAuditTrailByTimeInterval
  • GetChildrenByParentId
  • GetClassificationSchemesById
  • GetRegisteredPackagesByMemberId
  • GetNotification
  • GetObjectById
  • GetReferencedObject
  • KeywordSearch
  • RegistryPackageSelector

In addition to these canonical queries, the OrientDB profile supports any parameterized custom queries, that have been uniquely registered by a previous write request.

The ReadManager actually implements the following methods:

  • public List<ObjectRefType> getObjectRefsByQuery(QueryType queryType): Retrieval of a list of object references ObjectRefType by providing a registered query definition QueryType.

  • public Object getRegistryObject(String oid): Retrieval of a registered registry object by providing its unique identifier.

  • public QueryResponseContext executeQuery(QueryRequestContext request, QueryResponseContext response): Retrieval of a set of registered registry objects by providing a QueryRequestContext. A QueryRequestContext is a wrapper for the respective OASIS ebXML QueryRequest, and a QueryResponseContext is a wrapper for the OASIS ebXML QueryResponse.

For more information about the OASIS ebXML query protocol and its building blocks, QueryRequest and QueryResponse, please refer to OASIS ebRS v4.0.

WriteManager

To be done