diff --git a/entities.py b/entities.py
index f22970e9210c9af8977208f80e15ad4fcb6905f3_ZW50aXRpZXMucHk=..c483d7767340a42eccd0ad2bd751cfc839da04d9_ZW50aXRpZXMucHk= 100644
--- a/entities.py
+++ b/entities.py
@@ -44,9 +44,10 @@
         descr = u'%s %s' % (_('posted on'), self.format_date(self.creation_date))
         return descr
 
+    # isioc interface
     def isioc_content(self):
         return self.content
 
     def isioc_container(self):
         rset = self.related('entry_of')
         entity = rset.get_entity(0, 0)                  
@@ -47,10 +48,19 @@
     def isioc_content(self):
         return self.content
 
     def isioc_container(self):
         rset = self.related('entry_of')
         entity = rset.get_entity(0, 0)                  
-        return entity          
+        return entity
+
+    def isioc_type(self):
+        return 'BlogPost'
+        
+    def isioc_replies(self):
+        return []        
+
+    def isioc_topics(self):
+        return []
         
 class Blog(AnyEntity):
     """customized class for Blog entities"""
@@ -66,5 +76,6 @@
         rql = 'Any E ORDERBY D DESC WHERE E is BlogEntry, E entry_of X, X eid %s, E creation_date D' % self.eid
         return self.build_url(rql=rql, vid='rss', vtitle=self.dc_title())
 
+    # isioc interface
     def isioc_type(self):
         return 'Weblog'
@@ -69,4 +80,7 @@
     def isioc_type(self):
         return 'Weblog'
+
+    def isioc_items(self):
+        return self.reverse_entry_of
        
    
diff --git a/views.py b/views.py
index f22970e9210c9af8977208f80e15ad4fcb6905f3_dmlld3MucHk=..c483d7767340a42eccd0ad2bd751cfc839da04d9_dmlld3MucHk= 100644
--- a/views.py
+++ b/views.py
@@ -23,7 +23,8 @@
 from cubicweb.web.htmlwidgets import BoxLink, BoxWidget
 from cubicweb.interfaces import ISiocItem, ISiocContainer
 
-
+# FIXME: this view is generic and should be defined in cubicweb/web/views/??
+# See ticket #224980
 class SIOCView(EntityView):
     id = 'sioc'
     __selectors__ = EntityView.__selectors__ + (implement_interface,)
@@ -31,7 +32,6 @@
     title = _('sioc')
     templatable = False
     content_type = 'text/xml'
-    item_vid = 'sioc_item'
     
     def call(self):
         self.w(u'<?xml version="1.0" encoding="%s"?>\n' % self.req.encoding)
@@ -44,7 +44,7 @@
              xmlns:sioctype="http://rdfs.org/sioc/types#"
              xmlns:dcterms="http://purl.org/dc/terms/">\n''')        
         for i in xrange(self.rset.rowcount):
-            self.cell_call(row=i, col=0)
+            self.cell_call(i, 0)
         self.w(u'</rdf:RDF>\n')
             
     def cell_call(self, row, col):
@@ -48,9 +48,5 @@
         self.w(u'</rdf:RDF>\n')
             
     def cell_call(self, row, col):
-        entity = self.complete_entity(row,col)
-        if entity.id =='BlogEntry':
-            self.wview(self.item_vid, self.rset, row=row, col=col)
-        else:
-            self.wview('sioc_container', self.rset, row=row, col=col)
+        self.wview('sioc_element', self.rset, row=row, col=col)
 
@@ -56,8 +52,7 @@
 
-
-class SIOCBlogContainerView(EntityView):
-    id = 'sioc_container'
+class SIOCContainerView(EntityView):
+    id = 'sioc_element'
     __selectors__ = EntityView.__selectors__ + (implement_interface,)
     accepts_interfaces = (ISiocContainer,)
     templatable = False
     content_type = 'text/xml'
@@ -60,8 +55,7 @@
     __selectors__ = EntityView.__selectors__ + (implement_interface,)
     accepts_interfaces = (ISiocContainer,)
     templatable = False
     content_type = 'text/xml'
-    accepts = ('Blog',)
    
     def cell_call(self, row, col):
         entity = self.complete_entity(row, col)
@@ -65,9 +59,8 @@
    
     def cell_call(self, row, col):
         entity = self.complete_entity(row, col)
-        self.w(u' <sioc:%s rdf:about="%s">\n' % (html_escape(entity.isioc_type()),
-                                                 html_escape(entity.absolute_url())))
-                                                 
-        self.w(u'<dcterms:title>%s</dcterms:title>'% html_escape(unicode(entity.title)))
-        self.w(u'<dcterms:created>%s</dcterms:created>'% entity.creation_date)
+        self.w(u'<sioc:%s rdf:about="%s">\n' % (html_escape(entity.isioc_type()),
+                                                html_escape(entity.absolute_url())))
+        self.w(u'<dcterms:title>%s</dcterms:title>' % html_escape(unicode(entity.title)))
+        self.w(u'<dcterms:created>%s</dcterms:created>' % entity.creation_date)
         self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date)
@@ -73,4 +66,4 @@
         self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date)
-                      
+        self.w(u'<!-- FIXME : here be items -->')#entity.isioc_items()
         self.w(u'</sioc:%s>\n' % entity.isioc_type())
                  
@@ -75,6 +68,6 @@
         self.w(u'</sioc:%s>\n' % entity.isioc_type())
                  
-class SIOCItemView(SIOCBlogContainerView):
-    id ='sioc_item'
-    accepts = ('BlogEntry',)
+class SIOCItemView(EntityView):
+    id = 'sioc_element'
+    __selectors__ = EntityView.__selectors__ + (implement_interface,)
     accepts_interfaces = (ISiocItem,)
@@ -80,5 +73,6 @@
     accepts_interfaces = (ISiocItem,)
-    
- 
+    templatable = False
+    content_type = 'text/xml'
+     
     def cell_call(self, row, col):
         entity = self.complete_entity(row, col)
@@ -83,10 +77,11 @@
     def cell_call(self, row, col):
         entity = self.complete_entity(row, col)
-        self.w(u' <sioc:Post rdf:about="%s">\n' % html_escape(entity.absolute_url()))
-        self.w(u'<dcterms:title>%s</dcterms:title>'% html_escape(unicode(entity.title)))
-        self.w(u'<dcterms:created>%s</dcterms:created>'% entity.creation_date)
+        self.w(u'<sioc:%s rdf:about="%s">\n' %  ('Post', #entity.isioc_type(),
+                                                 html_escape(entity.absolute_url())))
+        self.w(u'<dcterms:title>%s</dcterms:title>' % html_escape(unicode(entity.title)))
+        self.w(u'<dcterms:created>%s</dcterms:created>' % entity.creation_date)
         self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date)
         if entity.content:
             self.w(u'<sioc:content>%s</sioc:content>''' % html_escape(entity.isioc_content()))        
         if entity.related('entry_of'):
             self.w(u'<sioc:has_container rdf:resource="%s"/>\n' % html_escape(entity.isioc_container().absolute_url()))
@@ -88,8 +83,7 @@
         self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date)
         if entity.content:
             self.w(u'<sioc:content>%s</sioc:content>''' % html_escape(entity.isioc_content()))        
         if entity.related('entry_of'):
             self.w(u'<sioc:has_container rdf:resource="%s"/>\n' % html_escape(entity.isioc_container().absolute_url()))
-        if entity.creator:
-            foaf = entity.creator.view('foaf')
+        for creator in entity.created_by:
             self.w(u'<sioc:has_creator>\n')
@@ -95,5 +89,5 @@
             self.w(u'<sioc:has_creator>\n')
-            self.w(u'<sioc:User rdf:about="%s">\n' % entity.dc_creator().absolute_url())
-            self.w(foaf)
+            self.w(u'<sioc:User rdf:about="%s">\n' % creator.absolute_url())
+            self.w(creator.view('foaf'))
             self.w(u'</sioc:User>\n')
             self.w(u'</sioc:has_creator>\n')
@@ -98,6 +92,8 @@
             self.w(u'</sioc:User>\n')
             self.w(u'</sioc:has_creator>\n')
-        self.w(u' </sioc:Post>\n')    
+        self.w(u'<!-- FIXME : here be topics -->')#entity.isioc_topics()
+        self.w(u'<!-- FIXME : here be replies -->')#entity.isioc_replies()
+        self.w(u' </sioc:%s>\n' % 'Post')    
 
    
 class BlogPrimaryView(baseviews.PrimaryView):