author | Aurelien Campeas <aurelien.campeas@logilab.fr> |
Tue, 30 Nov 2010 15:05:07 +0100 | |
changeset 6712 | 3e6cd6048be8 |
parent 5424 | 8ecbcbff9777 |
child 7166 | dde161937d3e |
permissions | -rw-r--r-- |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
1 |
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4252
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
984 | 18 |
"""produces some Ontology Web Language schema and views |
19 |
||
20 |
""" |
|
21 |
__docformat__ = "restructuredtext en" |
|
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
22 |
_ = unicode |
984 | 23 |
|
814 | 24 |
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
|
25 |
|
984 | 26 |
from cubicweb.view import StartupView, EntityView |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
27 |
from cubicweb.selectors import none_rset, match_view |
1263 | 28 |
from cubicweb.web.action import Action |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
29 |
from cubicweb.web.views import schema |
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
|
30 |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
31 |
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
|
32 |
'?': '<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
|
33 |
'+': '<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
|
34 |
'*': '' |
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
|
35 |
} |
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 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
37 |
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
|
38 |
'Datetime': 'xsd:dateTime', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
39 |
'Bytes': 'xsd:byte', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
40 |
'Float': 'xsd:float', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
41 |
'Boolean': 'xsd:boolean', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
42 |
'Int': 'xsd:int', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
43 |
'Date':'xsd:date', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
44 |
'Time': 'xsd:time', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
45 |
'Password': 'xsd:byte', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
46 |
'Decimal' : 'xsd:decimal', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
47 |
'Interval': 'xsd:duration' |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
48 |
} |
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 |
|
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
|
50 |
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
|
51 |
<!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
|
52 |
<!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
|
53 |
<!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
|
54 |
]> |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
55 |
<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
|
56 |
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
|
57 |
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
|
58 |
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
|
59 |
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
|
60 |
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
|
61 |
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
|
62 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
63 |
<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
|
64 |
<rdfs:comment> |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
65 |
%(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
|
66 |
</rdfs:comment> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
67 |
</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
|
68 |
|
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 |
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
|
70 |
|
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
|
71 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
72 |
class OWLView(StartupView): |
551 | 73 |
"""This view export in owl format schema database. It is the TBOX""" |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2295
diff
changeset
|
74 |
__regid__ = 'owl' |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
75 |
title = _('owl') |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
76 |
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
|
77 |
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
|
78 |
|
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
|
79 |
def call(self, writeprefix=True): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
80 |
skipmeta = int(self._cw.form.get('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
|
81 |
if writeprefix: |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3720
diff
changeset
|
82 |
self.w(OWL_OPENING_ROOT % {'appid': self._cw.vreg.schema.name}) |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
83 |
self.visit_schema(skiptypes=skipmeta and schema.SKIP_TYPES or ()) |
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
|
84 |
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
|
85 |
self.w(OWL_CLOSING_ROOT) |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
86 |
|
4093 | 87 |
def should_display_rschema(self, eschema, rschema, role): |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
88 |
return not rschema in self.skiptypes and ( |
4093 | 89 |
rschema.may_have_permission('read', self._cw, eschema, role)) |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
90 |
|
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
91 |
def visit_schema(self, skiptypes): |
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
|
92 |
"""get a layout for a whole schema""" |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
93 |
self.skiptypes = skiptypes |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3720
diff
changeset
|
94 |
entities = sorted(eschema for eschema in self._cw.vreg.schema.entities() |
3689
deb13e88e037
follow yams 0.25 api changes to improve performance
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2295
diff
changeset
|
95 |
if not eschema.final or eschema in skiptypes) |
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
|
96 |
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
|
97 |
for eschema in entities: |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
98 |
self.visit_entityschema(eschema) |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
99 |
self.w(u'<!-- property definition -->') |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
100 |
self.visit_property_schema(eschema) |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
101 |
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
|
102 |
self.visit_property_object_schema(eschema) |
674 | 103 |
|
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
104 |
def visit_entityschema(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
|
105 |
"""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
|
106 |
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
|
107 |
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
|
108 |
for rschema, targetschemas, role in eschema.relation_definitions(): |
4093 | 109 |
if not self.should_display_rschema(eschema, rschema, role): |
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
|
110 |
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
|
111 |
for oeschema in targetschemas: |
4157
f7830377b215
yams api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4093
diff
changeset
|
112 |
card = rschema.role_rdef(eschema, oeschema, role).role_cardinality(role) |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
113 |
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
|
114 |
if cardtag: |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
115 |
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
|
116 |
<owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
117 |
<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
|
118 |
%s |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
119 |
</owl:Restriction> |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
120 |
</rdfs:subClassOf>''' % (rschema, 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
|
121 |
|
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 |
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
|
123 |
for rschema, aschema in eschema.attribute_definitions(): |
4093 | 124 |
if not self.should_display_rschema(eschema, rschema, 'subject'): |
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
|
125 |
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
|
126 |
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
|
127 |
<owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
128 |
<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
|
129 |
<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
|
130 |
</owl:Restriction> |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
131 |
</rdfs:subClassOf>''' % rschema) |
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
|
132 |
self.w(u'</owl:Class>') |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
133 |
|
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
134 |
def visit_property_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
|
135 |
"""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
|
136 |
for rschema, targetschemas, role in eschema.relation_definitions(): |
4093 | 137 |
if not self.should_display_rschema(eschema, rschema, role): |
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
|
138 |
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
|
139 |
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
|
140 |
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
|
141 |
<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
|
142 |
<rdfs:range rdf:resource="#%s"/> |
2295
4bad4fb08f2e
fix name error
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2186
diff
changeset
|
143 |
</owl:ObjectProperty>''' % (rschema, 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
|
144 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
145 |
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
|
146 |
for rschema, aschema in eschema.attribute_definitions(): |
4093 | 147 |
if not self.should_display_rschema(eschema, rschema, 'subject'): |
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
|
148 |
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
|
149 |
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
|
150 |
<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
|
151 |
<rdfs:range rdf:resource="%s"/> |
2295
4bad4fb08f2e
fix name error
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2186
diff
changeset
|
152 |
</owl:DatatypeProperty>''' % (rschema, 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
|
153 |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
154 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
155 |
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
|
156 |
'''This view represents a part of the ABOX for a given entity.''' |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2295
diff
changeset
|
157 |
__regid__ = 'owlabox' |
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
|
158 |
title = _('owlabox') |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
159 |
templatable = False |
537
f16da6c874da
small corrections
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
517
diff
changeset
|
160 |
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
|
161 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
162 |
def call(self): |
3733
c3feb6a33f58
remove some warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3720
diff
changeset
|
163 |
self.w(OWL_OPENING_ROOT % {'appid': self._cw.vreg.schema.name}) |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
164 |
for i in xrange(self.cw_rset.rowcount): |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
165 |
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
|
166 |
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
|
167 |
|
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
168 |
def cell_call(self, row, col): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
169 |
self.wview('owlaboxitem', self.cw_rset, row=row, col=col) |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
170 |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
171 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
172 |
class OWLABOXItemView(EntityView): |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
173 |
'''This view represents a part of the ABOX for a given entity.''' |
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2295
diff
changeset
|
174 |
__regid__ = 'owlaboxitem' |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
175 |
templatable = False |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
176 |
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
|
177 |
|
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
178 |
def cell_call(self, row, col): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
179 |
entity = self.cw_rset.complete_entity(row, col) |
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
|
180 |
eschema = entity.e_schema |
516 | 181 |
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
|
182 |
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
|
183 |
for rschema, aschema in eschema.attribute_definitions(): |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
184 |
if rschema.meta: |
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 |
continue |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
186 |
rdef = rschema.rdef(eschema, aschema) |
3890
d7a270f50f54
backport stable branch (one more time painfully)
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
187 |
if not rdef.may_have_permission('read', self._cw): |
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
|
188 |
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
|
189 |
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
|
190 |
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
|
191 |
continue |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
192 |
try: |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
193 |
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
|
194 |
if attr: |
814 | 195 |
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
|
196 |
except TransformError: |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
197 |
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
|
198 |
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
|
199 |
for rschema, targetschemas, role in eschema.relation_definitions(): |
2126
a25859917ccc
stop using meta attribute from yams schema. Use instead sets defining meta relations and another defining schema types. Refactor various schema view based on this
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
200 |
if rschema.meta: |
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
|
201 |
continue |
3877
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
202 |
for tschema in targetschemas: |
7ca53fc72a0a
reldefsecurity branch :
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3689
diff
changeset
|
203 |
rdef = rschema.role_rdef(eschema, tschema, role) |
4073
03681ba6da0b
cw 3.6 api update
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
4003
diff
changeset
|
204 |
if rdef.may_have_permission('read', self._cw): |
3890
d7a270f50f54
backport stable branch (one more time painfully)
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
205 |
break |
d7a270f50f54
backport stable branch (one more time painfully)
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
206 |
else: |
d7a270f50f54
backport stable branch (one more time painfully)
Sylvain Thénault <sylvain.thenault@logilab.fr>
diff
changeset
|
207 |
# no read perms to any relation of this type. Skip. |
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
|
208 |
continue |
516 | 209 |
if role == 'object': |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
210 |
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
|
211 |
else: |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
212 |
attr = rschema.type |
517 | 213 |
for x in getattr(entity, attr): |
3451
6b46d73823f5
[api] work in progress, use __regid__, cw_*, etc.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3377
diff
changeset
|
214 |
self.w(u'<%s>%s %s</%s>' % (attr, x.__regid__, x.eid, attr)) |
516 | 215 |
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
|
216 |
|
1263 | 217 |
|
218 |
class DownloadOWLSchemaAction(Action): |
|
3377
dd9d292b6a6d
use __regid__ instead of id on appobject classes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2295
diff
changeset
|
219 |
__regid__ = 'download_as_owl' |
1263 | 220 |
__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
|
221 |
|
1263 | 222 |
category = 'mainactions' |
223 |
title = _('download schema as owl') |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
1263
diff
changeset
|
224 |
|
1263 | 225 |
def url(self): |
3460
e4843535db25
[api] some more _cw / __regid__, automatic tests now pass again
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
3451
diff
changeset
|
226 |
return self._cw.build_url('view', vid='owl') |