web/views/owl.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 28 May 2009 18:27:50 +0200
changeset 1982 27e81d0c7d05
parent 1977 606923dff11b
child 2126 a25859917ccc
permissions -rw-r--r--
not needed, this is the default label
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
984
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     1
"""produces some Ontology Web Language schema and views
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     2
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     3
:organization: Logilab
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1802
diff changeset
     4
:copyright: 2008-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
984
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     5
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1802
diff changeset
     6
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
984
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     7
"""
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     8
__docformat__ = "restructuredtext en"
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
     9
814
c0bee055c594 small fix
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 674
diff changeset
    10
from logilab.mtconverter import TransformError, xml_escape
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    11
984
536e421b082b import updates
sylvain.thenault@logilab.fr
parents: 939
diff changeset
    12
from cubicweb.view import StartupView, EntityView
1263
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
    13
from cubicweb.web.action import Action
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
    14
from cubicweb.selectors import none_rset, match_view
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    15
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    16
_ = unicode
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    17
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    18
OWL_CARD_MAP = {'1': '<rdf:type rdf:resource="&owl;FunctionalProperty"/>',
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    19
                '?': '<owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>',
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    20
                '+': '<owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>',
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    21
                '*': ''
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    22
                }
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    23
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    24
OWL_TYPE_MAP = {'String': 'xsd:string',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    25
                'Datetime': 'xsd:dateTime',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    26
                'Bytes': 'xsd:byte',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    27
                'Float': 'xsd:float',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    28
                'Boolean': 'xsd:boolean',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    29
                'Int': 'xsd:int',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    30
                'Date':'xsd:date',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    31
                'Time': 'xsd:time',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    32
                'Password': 'xsd:byte',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    33
                'Decimal' : 'xsd:decimal',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    34
                'Interval': 'xsd:duration'
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    35
                }
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    36
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    37
OWL_OPENING_ROOT = u'''<?xml version="1.0" encoding="UTF-8"?>
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    38
<!DOCTYPE rdf:RDF [
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    39
        <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    40
        <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    41
]>
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    42
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    43
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    44
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    45
    xmlns:owl="http://www.w3.org/2002/07/owl#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    46
    xmlns="http://logilab.org/owl/ontologies/%(appid)s#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    47
    xmlns:%(appid)s="http://logilab.org/owl/ontologies/%(appid)s#"
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    48
    xmlns:base="http://logilab.org/owl/ontologies/%(appid)s">
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    49
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    50
  <owl:Ontology rdf:about="">
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    51
    <rdfs:comment>
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    52
    %(appid)s Cubicweb OWL Ontology
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    53
    </rdfs:comment>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    54
  </owl:Ontology>'''
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    55
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    56
OWL_CLOSING_ROOT = u'</rdf:RDF>'
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    57
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    58
DEFAULT_SKIP_RELS = frozenset(('is', 'is_instance_of', 'identity',
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    59
                               'owned_by', 'created_by'))
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    60
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    61
class OWLView(StartupView):
551
44ec4836cc1a comments fix
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 550
diff changeset
    62
    """This view export in owl format schema database. It is the TBOX"""
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    63
    id = 'owl'
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    64
    title = _('owl')
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    65
    templatable = False
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    66
    content_type = 'application/xml' # 'text/xml'
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    67
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    68
    def call(self, writeprefix=True):
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    69
        skipmeta = int(self.req.form.get('skipmeta', True))
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    70
        if writeprefix:
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    71
            self.w(OWL_OPENING_ROOT % {'appid': self.schema.name})
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    72
        self.visit_schema(skipmeta=skipmeta)
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    73
        if writeprefix:
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    74
            self.w(OWL_CLOSING_ROOT)
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    75
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    76
    def visit_schema(self, skiprels=DEFAULT_SKIP_RELS, skipmeta=True):
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
    77
        """get a layout for a whole schema"""
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    78
        entities = sorted([eschema for eschema in self.schema.entities()
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    79
                           if not eschema.is_final()])
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    80
        if skipmeta:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    81
            entities = [eschema for eschema in entities
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    82
                        if not eschema.meta]
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    83
        self.w(u'<!-- classes definition -->')
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    84
        for eschema in entities:
506
f60de0a5ef95 cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 503
diff changeset
    85
            self.visit_entityschema(eschema, skiprels)
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    86
            self.w(u'<!-- property definition -->')
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    87
            self.visit_property_schema(eschema, skiprels)
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    88
            self.w(u'<!-- datatype property -->')
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
    89
            self.visit_property_object_schema(eschema)
674
8580f1632055 small fix
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 585
diff changeset
    90
506
f60de0a5ef95 cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 503
diff changeset
    91
    def visit_entityschema(self, eschema, skiprels=()):
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    92
        """get a layout for an entity OWL schema"""
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    93
        self.w(u'<owl:Class rdf:ID="%s">'% eschema)
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
    94
        self.w(u'<!-- relations -->')
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    95
        for rschema, targetschemas, role in eschema.relation_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    96
            if rschema.type in skiprels:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    97
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    98
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
    99
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   100
            for oeschema in targetschemas:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   101
                label = rschema.type
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   102
                if role == 'subject':
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   103
                    card = rschema.rproperty(eschema, oeschema, 'cardinality')[0]
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   104
                else:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   105
                    card = rschema.rproperty(oeschema, eschema, 'cardinality')[1]
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   106
                cardtag = OWL_CARD_MAP[card]
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   107
                if cardtag:
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   108
                    self.w(u'''<rdfs:subClassOf>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   109
 <owl:Restriction>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   110
  <owl:onProperty rdf:resource="#%s"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   111
  %s
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   112
 </owl:Restriction>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   113
</rdfs:subClassOf>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   114
''' % (label, cardtag))
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   115
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   116
        self.w(u'<!-- attributes -->')
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   117
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   118
        for rschema, aschema in eschema.attribute_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   119
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   120
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   121
            aname = rschema.type
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   122
            if aname == 'eid':
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   123
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   124
            self.w(u'''<rdfs:subClassOf>
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   125
  <owl:Restriction>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   126
   <owl:onProperty rdf:resource="#%s"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   127
   <rdf:type rdf:resource="&owl;FunctionalProperty"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   128
  </owl:Restriction>
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   129
</rdfs:subClassOf>'''
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   130
                   % aname)
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   131
        self.w(u'</owl:Class>')
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   132
506
f60de0a5ef95 cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 503
diff changeset
   133
    def visit_property_schema(self, eschema, skiprels=()):
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   134
        """get a layout for property entity OWL schema"""
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   135
        for rschema, targetschemas, role in eschema.relation_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   136
            if rschema.type in skiprels:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   137
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   138
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   139
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   140
            for oeschema in targetschemas:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   141
                label = rschema.type
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   142
                self.w(u'''<owl:ObjectProperty rdf:ID="%s">
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   143
 <rdfs:domain rdf:resource="#%s"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   144
 <rdfs:range rdf:resource="#%s"/>
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   145
</owl:ObjectProperty>
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   146
''' % (label, eschema, oeschema.type))
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   147
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   148
    def visit_property_object_schema(self, eschema):
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   149
        for rschema, aschema in eschema.attribute_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   150
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   151
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   152
            aname = rschema.type
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   153
            if aname == 'eid':
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   154
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   155
            self.w(u'''<owl:DatatypeProperty rdf:ID="%s">
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   156
  <rdfs:domain rdf:resource="#%s"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   157
  <rdfs:range rdf:resource="%s"/>
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   158
</owl:DatatypeProperty>'''
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   159
                   % (aname, eschema, OWL_TYPE_MAP[aschema.type]))
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
   160
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   161
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   162
class OWLABOXView(EntityView):
550
2300370b8edd refactoring OWLView (TBOX+ABOX) and OWLABOXView (pseudo-ABOX for a given entity). By now OWLView is using (for cost advantage) OWLABOXLightView.
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 537
diff changeset
   163
    '''This view represents a part of the ABOX for a given entity.'''
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   164
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   165
    id = 'owlabox'
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   166
    title = _('owlabox')
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   167
    templatable = False
537
f16da6c874da small corrections
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 517
diff changeset
   168
    content_type = 'application/xml' # 'text/xml'
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   169
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   170
    def call(self):
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   171
        self.w(OWL_OPENING_ROOT % {'appid': self.schema.name})
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   172
        for i in xrange(self.rset.rowcount):
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   173
            self.cell_call(i, 0)
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   174
        self.w(OWL_CLOSING_ROOT)
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   175
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   176
    def cell_call(self, row, col, skiprels=DEFAULT_SKIP_RELS):
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   177
        self.wview('owlaboxitem', self.rset, row=row, col=col, skiprels=skiprels)
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   178
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   179
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   180
class OWLABOXItemView(EntityView):
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   181
    '''This view represents a part of the ABOX for a given entity.'''
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   182
    id = 'owlaboxitem'
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   183
    templatable = False
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   184
    content_type = 'application/xml' # 'text/xml'
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   185
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   186
    def cell_call(self, row, col, skiprels=DEFAULT_SKIP_RELS):
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   187
        entity = self.complete_entity(row, col)
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   188
        eschema = entity.e_schema
516
56fd73de1f06 owl cleanup
sylvain.thenault@logilab.fr
parents: 512
diff changeset
   189
        self.w(u'<%s rdf:ID="%s">' % (eschema, entity.eid))
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   190
        self.w(u'<!--attributes-->')
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   191
        for rschema, aschema in eschema.attribute_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   192
            if rschema.type in skiprels:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   193
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   194
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   195
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   196
            aname = rschema.type
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   197
            if aname == 'eid':
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   198
                continue
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   199
            try:
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   200
                attr = entity.printable_value(aname, format='text/plain')
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   201
                if attr:
814
c0bee055c594 small fix
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 674
diff changeset
   202
                    self.w(u'<%s>%s</%s>' % (aname, xml_escape(attr), aname))
585
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   203
            except TransformError:
23c2f934b669 refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents: 552
diff changeset
   204
                pass
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   205
        self.w(u'<!--relations -->')
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   206
        for rschema, targetschemas, role in eschema.relation_definitions():
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   207
            if rschema.type in skiprels:
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   208
                continue
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   209
            if not (rschema.has_local_role('read') or rschema.has_perm(self.req, 'read')):
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   210
                continue
516
56fd73de1f06 owl cleanup
sylvain.thenault@logilab.fr
parents: 512
diff changeset
   211
            if role == 'object':
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   212
                attr = 'reverse_%s' % rschema.type
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   213
            else:
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   214
                attr = rschema.type
517
sylvain.thenault@logilab.fr
parents: 516
diff changeset
   215
            for x in getattr(entity, attr):
516
56fd73de1f06 owl cleanup
sylvain.thenault@logilab.fr
parents: 512
diff changeset
   216
                self.w(u'<%s>%s %s</%s>' % (attr, x.id, x.eid, attr))
56fd73de1f06 owl cleanup
sylvain.thenault@logilab.fr
parents: 512
diff changeset
   217
        self.w(u'</%s>'% eschema)
502
7882941d3530 owl module has two views : OWLView (TBOX) and OWLABOXView (more or less ABOX. indeed, it layout ABOX information only for an specific entity and not all entities)
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
diff changeset
   218
1263
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   219
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   220
class DownloadOWLSchemaAction(Action):
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   221
    id = 'download_as_owl'
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   222
    __select__ = none_rset() & match_view('schema')
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   223
1263
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   224
    category = 'mainactions'
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   225
    title = _('download schema as owl')
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1263
diff changeset
   226
1263
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   227
    def url(self):
01152fffd593 backport default branch
sylvain.thenault@logilab.fr
parents: 984
diff changeset
   228
        return self.build_url('view', vid='owl')