VIE
From IKS Project
VIE, or Vienna IKS Editables is a project to make the content of your web pages editable through annotations. This means that by simply including some RDFa on your pages you can built rich user interactions and interfaces on the JavaScript level.
Contents |
The VIE concept
The basic concepts of VIE are described in Decoupling Content Management and Using RDFa to make a web page editable blog posts.
When VIE is loaded on a page, it reads all RDFa-annotated contents on it. This RDFa annotation could look something like:
<div typeof="http://rdfs.org/sioc/ns#Post" about="http://example.net/blog/news_item">
<h1 property="dcterms:title">News item title</h1>
<div property="sioc:content">News item contents</div>
</div>
VIE then instantiates matching Backbone.js Models for them:
var objectInstances = VIE.RDFaEntities.getInstances();
The models can be used for manipulating the data on the page, including changing of properties and sending or fetching data to the CMS back-end. The communications with the CMS are handled by providing an implementation of the Backbone.sync method. This allows the models to be adapted to whatever APIs the CMS provides. Manipulating the contents of the Backbone model instances is easy:
var objectInstance = VIE.EntityManager.getBySubject('http://example.net/blog/news_item');
objectInstance.set({'dcterms:title': 'Hello, world'});
objectInstance.save(null, {
success: function(savedModel, response) {
console.log("Your article '" + savedModel.get('dcterms:title') + "' was saved to server");
}
});
The loaded Backbone models are also associated with Backbone Views that are connected to the RDFa-annotated HTML contents of the page. The Views subscribe to change events in the Models so that any content changes are automatically rendered also on the page. The same Backbone model may have multiple views on a page, and all of them will change when the data on the model is modified.
Here is how the communications work:
More information about using VIE can be found from the API documentation.
Ontologies
VIE itself is ontology-agnostic, meaning that you can use whatever terminology in your RDFa that best describes your data model and is easy to handle in your CMS. There are however some common ontologies that fit with most typical CMS cases and that we recommend. These include Dublin Core, FOAF and Semantically-Interlinked Online Communities. Using these makes your content more interoperable with other parts of the web. Google Rich Snippets may also be useful for SEO purposes.
VIE^2 will provide enrichments in the ontologies supported by the engines used with it. For example, with Apache Stanbol you'll get persons recognized in your content as dbpedia Persons.
The following ontologies are currently supporte (information taken from the english Wikipedia):
- dbPedia: As of April 2010, the DBpedia dataset describes more than 1.5 million things that are classified in a consistent Ontology, including entity types such as persons, places, music albums, films, video games, organizations, species and diseases. However, based on the existing backend services, only Persons, Places and Organizations can be retrieved for enrichment.
- Geonames: The GeoNames database contains geographical names corresponding to over 7,500,000 unique features.
We will provide a mapping from the most common features for each major entity type to a JS-friendly object. However, it is also possible to retrieve more information (other features) through VIE^2.
VIE components
- VIE is the access point to editable content on your pages. It parses RDFa annotations on a page and makes them accessible as JavaScript objects backed by Backbone.js models, views and collections
- VIE^2 is the semantic enrichment layer on top of VIE. Through it you can query and find related content for your editables. VIE^2 can talk to services like Apache Stanbol and OpenCalais to find related information for your content
- RdfQuery provides RDF querying layer to your editable and enriched content
All VIE components are licensed under the liberal MIT license. A CMS that wants to use these tools can choose which parts of VIE to grab, only the editables support or the full enrichment layer.
Dependencies and related projects
- Backbone.js is a model-view-controller library for JavaScript that can be easily integrated with the APIs of a CMS
- jQuery provides the fast DOM manipulations used by VIE
- Aloha Editor is a fast HTML5 contentEditable implementation that can be used with VIE. See the Aloha VIE plugin
- WYMeditor is a standards-compliant XHTML editor that can be used with VIE
- JSON-LD is a lightweight format for transmitting RDF content
CMS implementations
Several CMSs have already integrated VIE to provide on-site editing capabilities, either as a plugin or as a core part of the system. Here are some of them:
- Midgard Create (introduction to the UI backed by VIE)
- WordPress
- TYPO3
- KaraCos
- Drupal
- Jekyll
- Gentics Enterprise CMS
Development process and contributing
- VIE development is coordinated on the Freenode #iks channel
- The VIE components are developed under IKS's GitHub account
- Each component has a named maintainer that coordinates pushes to the "blessed repository" of that module
- VIE: Henri Bergius
- VIE^2: Sebastian Germesin
- RdfQuery: Szaby Grünwald
- All development work happens in private forks of the blessed repositories. You can fork your own
- Code can be submitted to the blessed repositories by making a pull request
Ongoing Specifications/Discussions
- VIE Widgets
- A normalized ontology mapping for VIE and VIE²
- Decoupled content management discussion on Hacker News
- Palsu interactive meeting tool
- Product interaction tool
- Annotate widget
Hackathons
Like with FISE, the way to move VIE forward is be organizing hackathon sessions where developers from different IKS project partners can meet, discuss and hack on the subject.

