author | Sandrine Ribeau <sandrine.ribeau@logilab.fr> |
Thu, 23 Apr 2009 11:58:11 -0700 | |
changeset 1461 | 023b123ab76b |
parent 815 | ec7460e13eee |
child 939 | ad72e06320e2 |
permissions | -rw-r--r-- |
814 | 1 |
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
|
2 |
|
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
|
3 |
from cubicweb.common.view import StartupView |
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
|
4 |
from cubicweb.common.view import EntityView |
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
|
5 |
|
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
|
6 |
_ = 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
|
7 |
|
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
|
8 |
OWL_CARD_MAP = {'1': '<rdf:type rdf:resource="&owl;FunctionalProperty"/>', |
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
|
9 |
'?': '<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
|
10 |
'+': '<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
|
11 |
'*': '' |
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
|
12 |
} |
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
|
13 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
14 |
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
|
15 |
'Datetime': 'xsd:dateTime', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
16 |
'Bytes': 'xsd:byte', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
17 |
'Float': 'xsd:float', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
18 |
'Boolean': 'xsd:boolean', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
19 |
'Int': 'xsd:int', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
20 |
'Date':'xsd:date', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
21 |
'Time': 'xsd:time', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
22 |
'Password': 'xsd:byte', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
23 |
'Decimal' : 'xsd:decimal', |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
24 |
'Interval': 'xsd:duration' |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
25 |
} |
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
|
26 |
|
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
|
27 |
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
|
28 |
<!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
|
29 |
<!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
|
30 |
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
31 |
]> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
32 |
<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
|
33 |
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
|
34 |
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
|
35 |
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
|
36 |
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
|
37 |
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
|
38 |
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
|
39 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
40 |
<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
|
41 |
<rdfs:comment> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
42 |
%(appid)s Cubicweb OWL Ontology |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
43 |
</rdfs:comment> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
44 |
</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
|
45 |
|
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
|
46 |
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
|
47 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
48 |
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
|
49 |
'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
|
50 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
51 |
class OWLView(StartupView): |
551 | 52 |
"""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
|
53 |
id = 'owl' |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
54 |
title = _('owl') |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
55 |
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
|
56 |
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
|
57 |
|
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
|
58 |
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
|
59 |
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
|
60 |
if writeprefix: |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
61 |
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
|
62 |
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
|
63 |
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
|
64 |
self.w(OWL_CLOSING_ROOT) |
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
|
65 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
66 |
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
|
67 |
"""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
|
68 |
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
|
69 |
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
|
70 |
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
|
71 |
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
|
72 |
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
|
73 |
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
|
74 |
for eschema in entities: |
506
f60de0a5ef95
cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
503
diff
changeset
|
75 |
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
|
76 |
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
|
77 |
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
|
78 |
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
|
79 |
self.visit_property_object_schema(eschema) |
674 | 80 |
|
506
f60de0a5ef95
cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
503
diff
changeset
|
81 |
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
|
82 |
"""get a layout for an entity OWL schema""" |
674 | 83 |
self.w(u'<owl:Class rdf:ID="%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
|
84 |
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
|
85 |
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
|
86 |
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
|
87 |
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
|
88 |
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
|
89 |
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
|
90 |
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
|
91 |
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
|
92 |
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
|
93 |
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
|
94 |
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
|
95 |
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
|
96 |
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
|
97 |
if cardtag: |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
98 |
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
|
99 |
<owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
100 |
<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
|
101 |
%s |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
102 |
</owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
103 |
</rdfs:subClassOf> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
104 |
''' % (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
|
105 |
|
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
|
106 |
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
|
107 |
|
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, 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
|
109 |
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
|
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 |
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
|
112 |
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
|
113 |
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
|
114 |
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
|
115 |
<owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
116 |
<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
|
117 |
<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
|
118 |
</owl:Restriction> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
119 |
</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
|
120 |
% 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
|
121 |
self.w(u'</owl:Class>') |
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 |
|
506
f60de0a5ef95
cleaning OWLView
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
503
diff
changeset
|
123 |
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
|
124 |
"""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
|
125 |
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
|
126 |
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
|
127 |
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
|
128 |
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
|
129 |
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
|
130 |
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
|
131 |
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
|
132 |
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
|
133 |
<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
|
134 |
<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
|
135 |
</owl:ObjectProperty> |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
136 |
''' % (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
|
137 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
138 |
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
|
139 |
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
|
140 |
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
|
141 |
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
|
142 |
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
|
143 |
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
|
144 |
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
|
145 |
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
|
146 |
<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
|
147 |
<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
|
148 |
</owl:DatatypeProperty>''' |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
149 |
% (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
|
150 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
151 |
|
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
152 |
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
|
153 |
'''This view represents a part of the ABOX for a given entity.''' |
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
|
154 |
|
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
|
155 |
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
|
156 |
title = _('owlabox') |
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
157 |
templatable = False |
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 |
accepts = ('Any',) |
537
f16da6c874da
small corrections
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
517
diff
changeset
|
159 |
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
|
160 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
161 |
def call(self): |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
162 |
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
|
163 |
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
|
164 |
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
|
165 |
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
|
166 |
|
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
167 |
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
|
168 |
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
|
169 |
|
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
|
170 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
171 |
class OWLABOXItemView(EntityView): |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
172 |
'''This view represents a part of the ABOX for a given entity.''' |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
173 |
|
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
174 |
id = 'owlaboxitem' |
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 |
accepts = ('Any',) |
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
177 |
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
|
178 |
|
585
23c2f934b669
refactoring owl view (now corresponding to tbox) and owlabox view
Laure Bourgois <Laure.Bourgois@logilab.fr>
parents:
552
diff
changeset
|
179 |
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
|
180 |
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
|
181 |
eschema = entity.e_schema |
516 | 182 |
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
|
183 |
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
|
184 |
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
|
185 |
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
|
186 |
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
|
187 |
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
|
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(): |
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
|
200 |
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
|
201 |
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
|
202 |
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
|
203 |
continue |
516 | 204 |
if role == 'object': |
205 |
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
|
206 |
else: |
516 | 207 |
attr = rschema.type |
517 | 208 |
for x in getattr(entity, attr): |
516 | 209 |
self.w(u'<%s>%s %s</%s>' % (attr, x.id, x.eid, attr)) |
210 |
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
|
211 |