ColimSign.hs revision f501e448d92c4d819b6bfc1d6487da76cf22528c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederModule : $Header$
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederDescription : OWL signatures colimits
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederCopyright : (c) Mihai Codescu, and Uni Bremen 2009
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederLicense : GPLv2 or higher, see LICENSE.txt
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederMaintainer : mcodescu@informatik.uni-bremen.de
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederStability : provisional
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederPortability : non-portable
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaederOWL signature colimits, computed component-wise.
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maederimport qualified Data.Map as Map
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaedersignColimit :: Gr Sign (Int, OWLMorphism) ->
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (Sign, Map.Map Int OWLMorphism)
32607d06fe7826eb0711c19d348ee4e395f2577aChristian MaedersignColimit graph = let
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder conGraph = emap (getEntityTypeMap Class) $ nmap concepts graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder dataGraph = emap (getEntityTypeMap Datatype) $ nmap datatypes graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder indGraph = emap (getEntityTypeMap NamedIndividual) $ nmap individuals graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder objGraph = emap (getEntityTypeMap ObjectProperty) $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder nmap objectProperties graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder dataPropGraph = emap (getEntityTypeMap DataProperty) $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder nmap dataProperties graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (con, funC) = addIntToSymbols $ computeColimitSet conGraph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (dat, funD) = addIntToSymbols $ computeColimitSet dataGraph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (ind, funI) = addIntToSymbols $ computeColimitSet indGraph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (obj, funO) = addIntToSymbols $ computeColimitSet objGraph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder (dp, funDP) = addIntToSymbols $ computeColimitSet dataPropGraph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder [ setEntityTypeMap Class $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder Map.findWithDefault (error "maps") i funC,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder setEntityTypeMap Datatype $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder Map.findWithDefault (error "maps") i funD,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder setEntityTypeMap NamedIndividual $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder Map.findWithDefault (error "maps") i funI,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder setEntityTypeMap ObjectProperty $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder Map.findWithDefault (error "maps") i funO,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder setEntityTypeMap DataProperty $
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder Map.findWithDefault (error "maps") i funDP
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder map (\ x -> (x, morFun x)) $ nodes graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder map (\ (_, l) -> prefixMap l) $ labNodes graph
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder colimSign = emptySign {
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder concepts = con,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder datatypes = dat,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder objectProperties = obj,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder dataProperties = dp,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder individuals = ind,
32607d06fe7826eb0711c19d348ee4e395f2577aChristian Maeder prefixMap = nameMap
colimMor = Map.fromAscList $
mm = Map.findWithDefault (error "mor") i morMaps
-> (Int, Map.Map QName QName)
in (i, Map.fromList $
setEntityTypeMap :: EntityType -> Map.Map QName QName
-> Map.Map Entity QName
setEntityTypeMap = Map.mapKeys . Entity