conStruct Design Overview

conStruct is more complicated than most Drupal modules. Enabling external data and structure to "drive the application" requires a few moving parts. One of the attractions of Drupal and its supporting community of contributed modules is the richness of available functionality that can be leveraged for conStruct's purposes.

conStruct itself consists of a "core" package of baseline structured data capabilities. This foundation can be extended. Two optional packages that accompany conStruct's initial core release are a data display templating engine, structDisplay, and a general ontology (schema structure) management system, structOntology. We hope to see additional packages develop and get released over time building from this same foundation.

This section presents the general architecture of the conStruct structured content system (SCS) and also overviews its major moving parts. We also describe dependencies on other Drupal modules and dependencies on third-party external software.

General conStruct Architecture

Most visiibly, conStruct appears as a series of modules within the Drupal CMS. But, that is just the tip of of the iceberg.

conStruct is a layer over the platform-independent structWSF Web services framework. The conStruct Drupal modules sit on top of this framework. The advantage comes from the group, roles, user, permissions, theming and other functionality that can be leveraged at the Drupal level.

Core conStruct Modules

Other content management systems could provide similar layered functionality, and it is hoped that non-Drupal versions of conStruct emerge. In any event, the structWSF framework, described further here, can also be accessed directly as Web service endpoints and via APIs. Thus, by definition, conStruct can leverage a framework that can tie together multiple Drupal installations, other Web apps, and any other CMS system into collaboration networks.

The structWSF middleware is also designed to leverage third-party RDF datastores and faceted text engines. Initially, Virtuoso and Solr respectively provide these functions, but other capable systems could readily be substituted.

Core conStruct Package

The "core" conStruct package thus embraces all aspects of the large brown area shown in the figure above.

Included conStruct Drupal Modules

Within the core conStruct itself, there are a number of embedded Drupal modules as shown by this listing from a conStruct Drupal application (in fact, this one):

Core conStruct Modules

The key modules packaged with the core conStruct are:

  • conStruct Core -- the basic conStruct code required for all other modules
  • structCreate Tool -- the tool for creating new instance records within a specified dataset
  • structDataset Tool -- the broad tool for creating, updating and deleting datasets and their associated user and group permissions
  • structDelete Tool -- the tool for deleting one or more instance records
  • structResource Tool -- the tool for dereferencing potential RDF content (making accessible linked data URIs). For example, if the user requests RDF, it sends back RDF; otherwise, it redirects to structView to create a templated view of the resource
  • structSearch Tool -- for searching the currently available datasets space with faceted, full-text search
  • structUpdate Tool -- this tool enables individual instance records and their attributes to be updated or modified
  • structView Tool -- for browsing and viewing results based on tempates available for that instance type currently in the system; creation of new templates is possible through the separate structDisplay module.

Drupal Module Dependencies

In addition, the core conStruct also depends on these contributed Drupal modules:

  • CCK (Content Copy) -- which enables conStruct datasets and their fields to be registed with Drupal
  • Organic Groups -- for managing groups formations, roles and access permissions.

These modules must be installed prior to conStruct.

External Dependencies

As noted, conStruct layers and presents many components. A critical few of which are external apps, all open source, that also must be installed prior to conStruct. These external dependencies and their functions are:

  • structWSF -- the platform-independent Web services framework. This RESTful middleware provides an abstraction layer and endpoints that enables multiple structWSF installations (and, therefore, conStruct) to talk with one another
  • Virtuoso -- this "universal server" is the very capable RDF triplestore that also provides inferencing and URI referencing capabilities
  • Solr -- provides a very capable full-text search engine, with faceting capabilities that are driven directly from the datasets within conStruct's system
  • Smarty -- the data templating engine that is used for rendering various data display "views" within the system; it directly supports the structView tool.

Detailed and separate installation instructions are available from this site to aid in the proper configuration of these systems. In addition, as discussed under Packaging Options, it is possible to obtain these systems through an Amazon EC2 AMI instance.

Optional structDisplay Package

The structDisplay package provides an optional set of Drupal modules for the design and modification of additional data display "structs". structDisplay uses a combination of the Smarty templating system and the TinyMCE rich-text WYSIWYG editor to help create these templates.

In turn, these templates can be shared with others. The templates are the basis for data presentation displays as presented by the structView tool.

Drupal Module Dependencies

  • WYSIWYG -- the WYSIWYG Drupal module provides an API for managing third-party rich-text editors. For our purposes, we have chosen and enhance the TinyMCE RTE
  • Core conStruct.

External Dependencies

As noted, structDisplay also depends on these external apps:

  • TinyMCE
  • Smarty -- as included with the core conStruct.

Optional structOntology Package

The structOntology package is an optional set of Drupal modules for importing external ontologies and modifying existing ones. Modifications can include adding new concepts or structure, or providing better labels or synonyms for existing concepts. Basic input begins with a simple spreadsheet-based format.

Drupal Module Dependencies

  • Core conStruct.