Qu'est-ce que CubicWeb ?

Le Web sémantique est un jeu de construction

http://www.cubicweb.org

Evolution du web

Le web sémantique

=> nouvelles plateformes applicatives

CubicWeb: concepts

=> applications web ET web sémantique

CubicWeb: architecture

=> applications web ET web sémantique

Agilité

=> développement itératif et agile

Efficacité

=> production et maintenance efficaces

Définition d'un cube

class Blog(EntityType):
  title = String(maxsize=50, required=True)
  description = String()

class BlogPost(EntityType):
  title = String(required=True, fulltextindexed=True)
  content = String(required=True, fulltextindexed=True)

class entry_of(RelationDefinition):
  subject = 'BlogPost'
  object = 'Blog'
  cardinality = '1*'

Assemblage de cubes

__use__ = ('blog', 'comment', 'tag',)

class comments(RelationDefinition):
    subject = 'Comment'
    object = 'BlogPost'

class tags(RelationDefinition):
    subject = 'Tag'
    object = 'BlogPost'

Requêtes RQL

Any X ORDERBY CD DESC LIMIT 10
WHERE X is BlogEntry, X creation_date CD
Any X WHERE T tags X,
T name IN ('cubicweb', 'semantic')

Et aussi UNION, EXISTS, HAVING, sous-requêtes, variables optionnelles (outer join), etc.

Adaptateurs et vues

class BlogPostCalendarAdapter(AnyEntity):
    __regid__ = (ICalendarable,)
    __select__ = is_instance('BlogPost')

    def start(self):
        return self.entity.creation_date

    def stop(self):
        return self.entity.creation_date

Vues sémantiques

=> données publiées en RDF: LinkedData !

CubicWeb: historique

CubicWeb: futur