removing OWLView from this file (in order to put OWLView into owl module)
authorLaure Bourgois <Laure.Bourgois@logilab.fr>
Wed, 28 Jan 2009 16:49:57 +0100
changeset 501 567e85e646d8
parent 500 14befdd50126
child 502 7882941d3530
removing OWLView from this file (in order to put OWLView into owl module)
web/views/startup.py
--- a/web/views/startup.py	Wed Jan 28 16:29:01 2009 +0100
+++ b/web/views/startup.py	Wed Jan 28 16:49:57 2009 +0100
@@ -15,24 +15,6 @@
 
 _ = unicode
 
-OWL_CARD_MAP = {'1': '<rdf:type rdf:resource="&owl;FunctionalProperty"/>',                      
-                '?': '<owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>',
-                '+': '<owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>',
-                '*': ''
-                }
-
-OWL_CARD_MAP_DATA = {'String': 'xsd:string',
-                     'Datetime': 'xsd:dateTime',
-                     'Bytes': 'xsd:byte',
-                     'Float': 'xsd:float',
-                     'Boolean': 'xsd:boolean',
-                     'Int': 'xsd:int',
-                     'Date':'xsd:date',
-                     'Time': 'xsd:time',
-                     'Password': 'xsd:byte',
-                     'Decimal' : 'xsd:decimal',
-                     'Interval': 'xsd:duration'
-                     }
 
 class ManageView(StartupView):
     id = 'manage'
@@ -194,7 +176,7 @@
                 self.req._('detailed schema view')))
 
 
-class SchemaUreportsView(StartupView):
+class SchemaUreportsView(EntityView):
     id = 'schematext'
 
     def call(self):
@@ -208,162 +190,3 @@
                                      skipmeta=skipmeta)
         self.w(ureport_as_html(layout))
 
-
-class OWLView(StartupView):
-    id = 'owl'
-    title = _('owl')
-    templatable =False
-
-    def call(self):
-        skipmeta = int(self.req.form.get('skipmeta', True))
-        self.visit_schemaOWL(display_relations=True,
-                             skiprels=('is', 'is_instance_of', 'identity',
-                                       'owned_by', 'created_by'),
-                             skipmeta=skipmeta)
-
-
-    def visit_schemaOWL(self, display_relations=0,
-                     skiprels=(), skipmeta=True):
-        """get a layout for a whole schema"""
-        self.w(u'''<?xml version="1.0" encoding="UTF-8"?>
-        <!DOCTYPE rdf:RDF [
-        <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-        <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-        <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-        <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-        <!ENTITY %s "http://logilab.org/owl/ontologies/%s#" >
-        
-        ]>        
-        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
-            xmlns:owl="http://www.w3.org/2002/07/owl#"
-            xmlns="http://logilab.org/owl/ontologies/%s#"
-            xmlns:%s="http://logilab.org/owl/ontologies/%s#"
-            xml:base="http://logilab.org/owl/ontologies/%s">
-
-    <owl:Ontology rdf:about="">
-        <rdfs:comment>
-        %s Cubicweb OWL Ontology                           
-                                        
-        </rdfs:comment>
-   </owl:Ontology>
-        ''' % (self.schema.name, self.schema.name, self.schema.name, self.schema.name, self.schema.name, self.schema.name, self.schema.name))
-        entities = [eschema for eschema in self.schema.entities()
-                    if not eschema.is_final()]
-        if skipmeta:
-            entities = [eschema for eschema in entities
-                        if not eschema.meta]
-        keys = [(eschema.type, eschema) for eschema in entities]
-        self.w(u'<!-- classes definition -->')
-        for key, eschema in sorted(keys):
-            self.visit_entityschemaOWL(eschema, skiprels)
-        self.w(u'<!-- property definition -->')
-        self.w(u'<!-- object property -->')
-        for key, eschema in sorted(keys):
-             self.visit_property_schemaOWL(eschema, skiprels)
-        self.w(u'<!-- datatype property -->')
-        for key, eschema in sorted(keys):
-            self.visit_property_object_schemaOWL(eschema, skiprels)
-        self.w(u'</rdf:RDF>')
-           
-    def eschema_link_url(self, eschema):
-        return self.req.build_url('eetype/%s?vid=eschema' % eschema)
-    
-    def rschema_link_url(self, rschema):
-        return self.req.build_url('ertype/%s?vid=eschema' % rschema)
-
-    def possible_views(self, etype):
-        rset = self.req.etype_rset(etype)
-        return [v for v in self._possible_views(self.req, rset)
-                if v.category != 'startupview']
-
-    def stereotype(self, name):
-        return Span((' <<%s>>' % name,), klass='stereotype')
-                       
-    def visit_entityschemaOWL(self, eschema, skiprels=()):
-        """get a layout for an entity OWL schema"""
-        etype = eschema.type
-        
-        if eschema.meta:
-            self.stereotype('meta')
-            self.w(u'''<owl:Class rdf:ID="%s"><rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
-                                '''%eschema, stereotype)
-        else:
-             self.w(u'''<owl:Class rdf:ID="%s"><rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
-                                '''% eschema)         
-       
-        self.w(u'<!-- relations -->')    
-        for rschema, targetschemas, role in eschema.relation_definitions():
-            if rschema.type in skiprels:
-                continue
-            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
-                continue
-            for oeschema in targetschemas:
-                label = rschema.type
-                if role == 'subject':
-                    card = rschema.rproperty(eschema, oeschema, 'cardinality')[0]
-                else:
-                    card = rschema.rproperty(oeschema, eschema, 'cardinality')[1]
-                self.w(u'''<rdfs:subClassOf>
-                              <owl:Restriction>
-                              <owl:onProperty rdf:resource="#%s"/>
-                                %s
-                              </owl:Restriction>
-                           </rdfs:subClassOf>
-                                ''' % (label, OWL_CARD_MAP[card]))
-
-        self.w(u'<!-- attributes -->')
-              
-        for rschema, aschema in eschema.attribute_definitions():
-            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
-                continue
-            aname = rschema.type
-            if aname == 'eid':
-                continue
-            card_data = aschema.type
-            self.w(u'''<rdfs:subClassOf>
-                              <owl:Restriction>
-                                 <owl:onProperty rdf:resource="#%s"/>
-                                 <rdf:type rdf:resource="&owl;FunctionalProperty"/>
-                                 </owl:Restriction>
-                        </rdfs:subClassOf>'''
-                          
-                   % aname)
-        self.w(u'</owl:Class>')
-    
-    def visit_property_schemaOWL(self, eschema, skiprels=()):
-        """get a layout for property entity OWL schema"""
-        etype = eschema.type
-
-        for rschema, targetschemas, role in eschema.relation_definitions():
-            if rschema.type in skiprels:
-                continue
-            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
-                continue
-            rschemaurl = self.rschema_link_url(rschema)
-            for oeschema in targetschemas:
-                label = rschema.type
-                self.w(u'''<owl:ObjectProperty rdf:ID="%s">
-                              <rdfs:domain rdf:resource="#%s"/>
-                              <rdfs:range rdf:resource="#%s"/>
-                           </owl:ObjectProperty>                   
-                             
-                                ''' % (label, eschema, oeschema.type ))
-
-    def visit_property_object_schemaOWL(self, eschema, skiprels=()):
-               
-        for rschema, aschema in eschema.attribute_definitions():
-            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
-                continue
-            aname = rschema.type
-            if aname == 'eid':
-                continue
-            card_data = aschema.type
-            self.w(u'''<owl:DatatypeProperty rdf:ID="%s">
-                          <rdfs:domain rdf:resource="#%s"/>
-                          <rdfs:range rdf:resource="%s"/>
-                       </owl:DatatypeProperty>'''
-                   % (aname, eschema, OWL_CARD_MAP_DATA[card_data]))
-
-