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.

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.

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 referencesObjectRefTypeby providing a registered query definitionQueryType. -
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 aQueryRequestContext. A QueryRequestContext is a wrapper for the respective OASIS ebXMLQueryRequest, 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