CubicWeb - the semantic web with Python
CubicWeb is well-defined Python semantic web application framework that focuses on quality, reusability and efficiency of the development solution. It is licensed under the LGPL and its predecessor is Narval research project.
CubicWeb stands out among other Python web frameworks and is not easy to learn. It positions itself as semantic web development framework and gives developers opportunity to build web applications by following the well known object-oriented design principles and reusing components called cubes.
Cube is the core concept of the CubicWeb. Basically it is a minimal web application - a software component that consists of three main parts: data model (schema), the logic (entities) needed to manipulate that data, and user interface (views) that displays the data. Though a CubicWeb app can be built from a single cube, more often two or more cubes are used as building blocks to provide wider functionality to the final product. The most simple example is usage of two cubes: cubicweb-blog and cubicweb-comment to create a blog application with commentable blog entries. A lot of cubes have been already developed by the CubicWeb community and can be used under a free software license.
How CubicWeb works
This development tool is written in Python and includes a web engine and a data server. The web engine replies to http requests and provides a CRUD user interface based on the data model of the instance. The data server publishes data gathered from data repositories. Although app construction is data-driven, CubicWeb is not just a database Web-client construction set.
CubicWeb contains data repository that enables access to one or more data sources such as SQL databases, LDAP repositories, filesystems, Google App Engine’s DataStore, and even other CubicWeb instance repositories. A data repository can be configured to either be accessed remotely using Pyro (Python Remote Objects) or act as a standalone server, that in turn can be accessed either via a standalone web engine or directly. Usually the web engine and the repository are run in the same process.
Among the main benefits of the CubicWeb is an access to a library of reusable components (data model and views) that can add any functionality and a selection+view mechanism for semi-automatic XHTML/XML/JSON/text generation. Basically CubicWeb provides an engine driven by the explicit data model of the application. Its cooperation with the SQL databases and LDAP directories is reliable since Subversion and Mercurial are used for storage backends. Query language that is used is a Relation Query Language (RQL) similar to W3C’s SPARQL.
CubicWeb opens for users some new features that were previously available only to app developers. It gives the end user more control over election and display of the content. With this engine user can search the federated data sources and display the results with the view that best corresponds to the user’s goal. If you want to know more about this Python framework visit cubicweb.org.