author | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> |
Fri, 29 May 2009 21:34:09 +0200 | |
changeset 2015 | 3009899e1e51 |
parent 1977 | 606923dff11b |
child 2126 | a25859917ccc |
permissions | -rw-r--r-- |
984 | 1 |
"""produces some Ontology Web Language schema and views |
2 |
||
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 | 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 | 7 |
""" |
8 |
__docformat__ = "restructuredtext en" |
|
9 |
||
814 | 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 | 12 |
from cubicweb.view import StartupView, EntityView |
1263 | 13 |
from cubicweb.web.action import Action |
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 | 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 | 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 | 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 | 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 | 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 | 215 |
for x in getattr(entity, attr): |
516 | 216 |
self.w(u'<%s>%s %s</%s>' % (attr, x.id, x.eid, attr)) |
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 | 219 |
|
220 |
class DownloadOWLSchemaAction(Action): |
|
221 |
id = 'download_as_owl' |
|
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 | 224 |
category = 'mainactions' |
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 | 227 |
def url(self): |
228 |
return self.build_url('view', vid='owl') |