CubicWeb - The Semantic Web is a construction game!

CubicWeb is a semantic web application framework, licensed under the LGPL, that empowers developers to efficiently build web applications by reusing components (called cubes) and following the well known object-oriented design principles.

Main Features

  • an engine driven by the explicit data model of the application,
  • a query language named RQL similar to W3C’s SPARQL,
  • a selection+view mechanism for semi-automatic XHTML/XML/JSON/text generation,
  • a library of reusable components (data model and views) that fulfill common needs,
  • the power and flexibility of the Python programming language,
  • the reliability of SQL databases, LDAP directories and Mercurial for storage backends.

Built since 2000 from an R&D effort still continued, supporting 100,000s of daily visits at some production sites, CubicWeb is a proven end to end solution for semantic web application development that promotes quality, reusability and efficiency.

Cubicweb core principle


Cubicweb offers two different ways of rooting : one internal to CubicWeb and a new one with pyramid.

  • Principle: cubicweb and pyramid | the CW request object | the pyramid request object | encapsulation of the CW request in the pyramid request bw_compat and the options to use, fallback when CW doesn’t find anything |
  • CubicWeb routing: url publishers | url rewriters
  • Pyramid routing: general principles | predicates | tweens | content negociation

Front development

  • With Javascript / Typescript (using React): general principle how to install and integrate js tooling into CW cwelements | rql browser
  • With Pyramid: general integration with CubicWeb | the renderers | Jinja2 templates | example of usages with CW
  • With CubicWeb Views: Introduction | How to select a views with registers | Facets (is this thing still used?) | How to use javascript inside CW views | Customize CSS
  • RDF: the RDF adaptator | RDFLib integration into CW

Data model and management


Migrate your schema

Each time the schema is updated, two action are needed : update the underlying tables and update the corresponding data.

  • Migrations: script migration | Write script migration | Execute script migration | Debug script migration

Cubicweb configuration files

Common Web application tools


  • Command line tool: cubicweb-ctl
  • Performences: Profiling your application
  • Debugging: Command line options for debugging | Debugging configuration directly in the code | Pyramid debug toolbar | Debug channels
  • Good pratices: tox | check-manifest | mypy | flake8 et black
  • CI: Gitlab-ci integration |

System administration

  • Deployment: Raw python deployment | Working with Docker | Working with debian packages
  • Administration: the cubicweb-ctl tool | sources configuration | backup


// generate autodoc documentation here

CubicWeb’s ecosystem

CubicWeb is based on different libraries, in which you may be interested :

How to contribute