The Open Anzo Project

Semantic Application Middleware

Introduction

News
  1. CometDaily article features Open Anzo's internal use of Comet technologies.

The Open Anzo project includes an open source enterprise-featured RDF quad store coupled with a unique semantic middleware platform. Together they provide developers a host of features necessary for the creation of sophisticated Semantic technology standard (RDF, OWL, SPARQL) grounded applications. Features include support for multiple users, distributed clients and services, offline work, real-time notification, named-graph modularization, versioning, access controls, and transactions with preconditions.

The Anzo middleware is an asynchronous real-time Service Oriented Architecture (SOA) system in which all platform services are provided as OSGi components addressed by URI. Communication between components and clients is generally through JSON/RDF messages over JMS using a communications subsystem called Combus. The goal of the design was to provide distributed scalability though the parallelism that one can achieve with message oriented service architectures as well as to make it simple to integrate third party programs executing on different platforms.

Other protocols, like HTTP oriented SOAP/REST, can be relayed into Combus through which all connected Anzo services are exposed. The Anzo client library API's (currently Java, JavaScript and .Net) rely on a set of standard services (e.g. replication service, notification service, model service, authentication service, query service, update service etc) to operate. New service components are added to the system using either Java or JavaScript and made available as custom "semantic services" or as alternates to the standard services. For example, additional storage architectures (e.g. RDF, RDBMS or other 3rd party API ) might be supported by implementing the interfaces necessary to support the services that a regular Anzo “data source” provides.

Client programs can query and update the RDF through the server from across the web using the Anzo client stack or a Web Service. The client stack provides various modes of operation including embedding an Anzo server within the client (Java only), running all operations against a remote server, or running against locally persisted data that is kept updated in real time.

The authentication service delegates to LDAP. Authentication is required to connect to the Combus (JMS) messaging cloud and begin making service calls, all of which carry the end users identity.

One other major architectural feature of the Anzo middleware designed to support scalability and offline use, is replication of data accessed through the middleware to local quad stores that are part of the client API libraries. All changes to graphs, including those cached in the local replica's are automatically synchronized in near real-time and propagated from their master source by the replication and notification services. In the case of the anzo.js the JavaScript version of the Anzo client library API for browsers, this is achieved using Ajax style JMS over HTTP. The system supports transactions with optimistic concurrency using preconditions.

Named graphs are the unit of granularity for replication and access control. Experience has proved that this is also a convenient level of granularity for programmers who often treat a named graph like a single conceptual object.

Open Anzo includes Glitter, a SPARQL query engine component independent of any particular back-end. It allows interfaces to back-end data sources to plug into the core engine and generate solutions for portions of SPARQL queries with varying granularity. The core engine orchestrates query rewriting, optimization, and execution, and composes solutions generated by the backend. An Anzo-specific backend plug-in allows SPARQL queries to be compiled to Anzo's temporal database schema. Anzo provides Glitter as an HTTP accessible SPARQL endpoint. In addition, a text-indexing component currently based on Apache Lucene has been integrated with Glitter through "magic" predicates to support queries with text search elements. The Anzo middleware includes extensive support for query caching securely supporting many users.

The Anzo Command Line Interface (or CLI) provides command line access to data and services provided through the Open Anzo middleware as well as some basic RDF manipulation operations. See video here.

At the center of the Anzo system is the Anzo store, a data source service capable of storing many millions of RDF triples in an underlying relational database (IBM DB/2, Oracle, PostGres,MS SQL Server, H2 and HSQLDB are currently supported).

The Anzo store includes the following features:

* Named Graphs: Partitioning of data into sets of statements that can be named with a URI and later be accessed using that named graph's URI.

* Queries: Data may be queried using SPARQL to query across the entire database or just a set of Named Graphs.

* Search: Typed full-text search capabilities for text literals are supported through Glitter SPARQL queries. Text literals are indexed, and the index also stores information about the named graph, subject, and predicate to which the literal is attached.

* Security: Named graphs are secured using a role based access control system. User authentication can be delegated to external systems like LDAP.

* Notification: The client receives near real-time notification of updates by triple pattern subscription through a JMS Notification subsystem about changes to relevant triples and named graphs.

* Replication: RDF from the server may be selectively cached on client machines and data can be persisted for offline (offline support is currently Java only) query access and performance enhancement.

* Revision history: All changes to named graphs can be tracked and are available via API calls.


If you are interested in participating in the project please join the mail-list.


Open Anzo 3.1.X

Setup and Configuration

Application Developer's Guide


Open Anzo Developer's and Contributer's guide


Legacy Setup: Legacy 2.5 setup information

For a complete list of local wiki pages, see TitleIndex.

Copyright © 2007 - 2009 OpenAnzo.org