annotate graphML2RDF.py @ 7:768ade75c895 default tip

ontologies added
author dwinter
date Tue, 07 Aug 2012 14:06:53 +0200
parents 6b51bd2418b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8190d724dc01 first release
dwinter
parents:
diff changeset
1 # Dieses Tool konvertiert graphMl Files erzeugt mit yED in einen graphen, entweder im dot, Format oder als RDF
8190d724dc01 first release
dwinter
parents:
diff changeset
2 # TODO: lots of ... Zuordnung graphenTyp zu Ontologie sollte konfiurierbar sein.
8190d724dc01 first release
dwinter
parents:
diff changeset
3 from lxml import etree
8190d724dc01 first release
dwinter
parents:
diff changeset
4 import os.path
8190d724dc01 first release
dwinter
parents:
diff changeset
5 import os
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
6 import logging
0
8190d724dc01 first release
dwinter
parents:
diff changeset
7
8190d724dc01 first release
dwinter
parents:
diff changeset
8 namespaces={'graphML':'http://graphml.graphdrawing.org/xmlns',
8190d724dc01 first release
dwinter
parents:
diff changeset
9 'y':'http://www.yworks.com/xml/graphml'
8190d724dc01 first release
dwinter
parents:
diff changeset
10 }
8190d724dc01 first release
dwinter
parents:
diff changeset
11
8190d724dc01 first release
dwinter
parents:
diff changeset
12 # Alle wesentlichen Informstionrn fuer einen Knoten
8190d724dc01 first release
dwinter
parents:
diff changeset
13 class Node:
8190d724dc01 first release
dwinter
parents:
diff changeset
14
8190d724dc01 first release
dwinter
parents:
diff changeset
15 label="" #Label in yED, wird auch gebraucht um gleiche Knoten zu identifizieren, wenn mehr als ein Graph zusammengefuehrt werden soll.
8190d724dc01 first release
dwinter
parents:
diff changeset
16 #Es muss also beim Erstellen auf Konsistenz der Label geachtet werden.
8190d724dc01 first release
dwinter
parents:
diff changeset
17 internalID="" #InternalID eine Knotens innerhalb eines Graphen, dieses sind nur pro Graph eindeutig-
8190d724dc01 first release
dwinter
parents:
diff changeset
18 externalRef="" # Referenzen auf externe Weseiten (key="d4")
8190d724dc01 first release
dwinter
parents:
diff changeset
19 internalRef="" # Referenzen auf andere Graphen (key="d4"), unterscheidung zwischen externer und interner, ob Pfad mit http beginnt.
8190d724dc01 first release
dwinter
parents:
diff changeset
20 numId=0 #Id des Knotens sollte eindeutig fuer alle Knoten sein.
8190d724dc01 first release
dwinter
parents:
diff changeset
21 nodeType=-1
8190d724dc01 first release
dwinter
parents:
diff changeset
22
8190d724dc01 first release
dwinter
parents:
diff changeset
23 def __init__(self,numId):
8190d724dc01 first release
dwinter
parents:
diff changeset
24 self.numId=numId
8190d724dc01 first release
dwinter
parents:
diff changeset
25
8190d724dc01 first release
dwinter
parents:
diff changeset
26 #Kante
8190d724dc01 first release
dwinter
parents:
diff changeset
27 class Edge:
8190d724dc01 first release
dwinter
parents:
diff changeset
28 src=None
8190d724dc01 first release
dwinter
parents:
diff changeset
29 target=None
8190d724dc01 first release
dwinter
parents:
diff changeset
30 edgeType=-1
8190d724dc01 first release
dwinter
parents:
diff changeset
31
8190d724dc01 first release
dwinter
parents:
diff changeset
32 def __init__(self,src,target):
8190d724dc01 first release
dwinter
parents:
diff changeset
33 self.src=src
8190d724dc01 first release
dwinter
parents:
diff changeset
34 self.target=target
8190d724dc01 first release
dwinter
parents:
diff changeset
35
8190d724dc01 first release
dwinter
parents:
diff changeset
36
8190d724dc01 first release
dwinter
parents:
diff changeset
37 # Erzeugt Ids fuer die Knoten
8190d724dc01 first release
dwinter
parents:
diff changeset
38 class IDDispensor:
8190d724dc01 first release
dwinter
parents:
diff changeset
39 currentID=0
8190d724dc01 first release
dwinter
parents:
diff changeset
40 def getID(self):
8190d724dc01 first release
dwinter
parents:
diff changeset
41 self.currentID+=1
8190d724dc01 first release
dwinter
parents:
diff changeset
42 return self.currentID
8190d724dc01 first release
dwinter
parents:
diff changeset
43
8190d724dc01 first release
dwinter
parents:
diff changeset
44 # Der eigentliche Graph
8190d724dc01 first release
dwinter
parents:
diff changeset
45 class Graph:
8190d724dc01 first release
dwinter
parents:
diff changeset
46 label2Ids={} # Zuweisung labels zu den Ids des Knoten
8190d724dc01 first release
dwinter
parents:
diff changeset
47 #id2nodes={} #Zuweisung id zu den Knoten
8190d724dc01 first release
dwinter
parents:
diff changeset
48 internalId2nodesID={} #Zuweisung interneID zur allgemeinen ID
8190d724dc01 first release
dwinter
parents:
diff changeset
49 edges=set() # Menger der Kanten
8190d724dc01 first release
dwinter
parents:
diff changeset
50 id2label={} # Zuweisung id zu den Labeln
8190d724dc01 first release
dwinter
parents:
diff changeset
51 edgeStyles={}
8190d724dc01 first release
dwinter
parents:
diff changeset
52 edgeDescription={}
8190d724dc01 first release
dwinter
parents:
diff changeset
53 graphURI=""
8190d724dc01 first release
dwinter
parents:
diff changeset
54 nodeStyles={}
8190d724dc01 first release
dwinter
parents:
diff changeset
55 nodeDescription={}
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
56 partOfGraph={}
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
57 isSubGraphOf={}
0
8190d724dc01 first release
dwinter
parents:
diff changeset
58
8190d724dc01 first release
dwinter
parents:
diff changeset
59 def __init__(self,dispensor):
8190d724dc01 first release
dwinter
parents:
diff changeset
60 self.dispensor=dispensor;
8190d724dc01 first release
dwinter
parents:
diff changeset
61 self.id2nodes={};
8190d724dc01 first release
dwinter
parents:
diff changeset
62 self.edges=set();
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
63 self.partOfGraph={};
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
64 self.isSubGraphOf={}
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
65 self.startGraphId=""
0
8190d724dc01 first release
dwinter
parents:
diff changeset
66
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
67 def readGraph(self,graphNode,partOf="main"):
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
68
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
69 nodes=graphNode.xpath("./graphML:node",namespaces=namespaces)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
70
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
71 graphIDs=graphNode.xpath("@id",namespaces=namespaces)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
72 for graphID in graphIDs:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
73 graphIDString = unicode(graphID)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
74
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
75
0
8190d724dc01 first release
dwinter
parents:
diff changeset
76
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
77 if partOf=="main": ##startgraph
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
78 self.startGraphId=graphIDString
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
79 else:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
80 self.isSubGraphOf[graphIDString]=partOf
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
81
0
8190d724dc01 first release
dwinter
parents:
diff changeset
82 for node in nodes:
8190d724dc01 first release
dwinter
parents:
diff changeset
83 nodeIDs=node.xpath("@id",namespaces=namespaces)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
84
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
85
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
86 #labels=node.xpath(".//y:NodeLabel",namespaces=namespaces)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
87 labels=node.xpath('./graphML:data[@key="d6"]/y:*/y:NodeLabel',namespaces=namespaces)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
88
0
8190d724dc01 first release
dwinter
parents:
diff changeset
89 for nodeID in nodeIDs:
8190d724dc01 first release
dwinter
parents:
diff changeset
90 nodeIDString=unicode(nodeID)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
91
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
92
0
8190d724dc01 first release
dwinter
parents:
diff changeset
93 labelString=None
8190d724dc01 first release
dwinter
parents:
diff changeset
94 for label in labels:
8190d724dc01 first release
dwinter
parents:
diff changeset
95 labelString=unicode(label.text).lstrip().rstrip()
8190d724dc01 first release
dwinter
parents:
diff changeset
96
8190d724dc01 first release
dwinter
parents:
diff changeset
97
8190d724dc01 first release
dwinter
parents:
diff changeset
98 newNode = Node(self.dispensor.getID())
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
99 if labelString!=None:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
100 newNode.label=labelString
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
101 else:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
102 newNode.label="NODE:"+str(newNode.numId)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
103
0
8190d724dc01 first release
dwinter
parents:
diff changeset
104 newNode.internalID=nodeIDString
8190d724dc01 first release
dwinter
parents:
diff changeset
105
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
106
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
107
0
8190d724dc01 first release
dwinter
parents:
diff changeset
108 nodeRefs=node.xpath('./graphML:data[@key="d4"]',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
109 #nodeRefs=node.xpath("./graphML:data",namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
110 for nodeRef in nodeRefs:
8190d724dc01 first release
dwinter
parents:
diff changeset
111 nodeRefString=nodeRef.text
8190d724dc01 first release
dwinter
parents:
diff changeset
112 if nodeRefString is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
113 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
114
8190d724dc01 first release
dwinter
parents:
diff changeset
115 #hack dw, scheinbar falsche urs drin
8190d724dc01 first release
dwinter
parents:
diff changeset
116 if nodeRefString.find("http")>0:
8190d724dc01 first release
dwinter
parents:
diff changeset
117 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
118 if nodeRefString.lstrip().startswith("http:") or nodeRefString.startswith("https:") or nodeRefString.startswith("ftp:"):
8190d724dc01 first release
dwinter
parents:
diff changeset
119 newNode.externalRef=nodeRefString
8190d724dc01 first release
dwinter
parents:
diff changeset
120 else:
8190d724dc01 first release
dwinter
parents:
diff changeset
121 newNode.internalRef=nodeRefString
8190d724dc01 first release
dwinter
parents:
diff changeset
122
8190d724dc01 first release
dwinter
parents:
diff changeset
123 #--
8190d724dc01 first release
dwinter
parents:
diff changeset
124
8190d724dc01 first release
dwinter
parents:
diff changeset
125 #read styles
8190d724dc01 first release
dwinter
parents:
diff changeset
126 typeID=None
8190d724dc01 first release
dwinter
parents:
diff changeset
127 #fall 1 Generic Node
8190d724dc01 first release
dwinter
parents:
diff changeset
128 gns = node.xpath('./graphML:data[@key="d6"]/y:GenericNode',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
129 for gn in gns:
8190d724dc01 first release
dwinter
parents:
diff changeset
130 style="g"
8190d724dc01 first release
dwinter
parents:
diff changeset
131 fills=gn.xpath('./y:Fill',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
132 fs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
133 for fill in fills:
8190d724dc01 first release
dwinter
parents:
diff changeset
134 fs=fill.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
135
8190d724dc01 first release
dwinter
parents:
diff changeset
136 borderstyles=gn.xpath('./y:BorderStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
137 bs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
138 for borderstyle in borderstyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
139 bs=borderstyle.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
140
8190d724dc01 first release
dwinter
parents:
diff changeset
141
8190d724dc01 first release
dwinter
parents:
diff changeset
142 config=gn.attrib.get("configuration")
8190d724dc01 first release
dwinter
parents:
diff changeset
143
8190d724dc01 first release
dwinter
parents:
diff changeset
144
8190d724dc01 first release
dwinter
parents:
diff changeset
145 typeID=self.getNodeTypeFromPalette(style,fs,bs,config)
8190d724dc01 first release
dwinter
parents:
diff changeset
146
8190d724dc01 first release
dwinter
parents:
diff changeset
147
8190d724dc01 first release
dwinter
parents:
diff changeset
148 #fall 2 shape Node
8190d724dc01 first release
dwinter
parents:
diff changeset
149 gns = node.xpath('./graphML:data[@key="d6"]/y:ShapeNode',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
150 for gn in gns:
8190d724dc01 first release
dwinter
parents:
diff changeset
151 style="s"
8190d724dc01 first release
dwinter
parents:
diff changeset
152 fills=gn.xpath('./y:Fill',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
153 fs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
154 for fill in fills:
8190d724dc01 first release
dwinter
parents:
diff changeset
155 fs=fill.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
156
8190d724dc01 first release
dwinter
parents:
diff changeset
157 borderstyles=gn.xpath('./y:BorderStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
158 bs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
159 for borderstyle in borderstyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
160 bs=borderstyle.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
161
8190d724dc01 first release
dwinter
parents:
diff changeset
162
8190d724dc01 first release
dwinter
parents:
diff changeset
163 shapes=gn.xpath('./y:Shape',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
164 shapeType=None
8190d724dc01 first release
dwinter
parents:
diff changeset
165 for shape in shapes:
8190d724dc01 first release
dwinter
parents:
diff changeset
166 shapeType=shape.attrib.get("type")
8190d724dc01 first release
dwinter
parents:
diff changeset
167
8190d724dc01 first release
dwinter
parents:
diff changeset
168
8190d724dc01 first release
dwinter
parents:
diff changeset
169 typeID=self.getNodeTypeFromPalette(style,fs,bs,shapeType)
8190d724dc01 first release
dwinter
parents:
diff changeset
170
8190d724dc01 first release
dwinter
parents:
diff changeset
171
8190d724dc01 first release
dwinter
parents:
diff changeset
172 #---
8190d724dc01 first release
dwinter
parents:
diff changeset
173 if typeID is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
174 typeID=-1
8190d724dc01 first release
dwinter
parents:
diff changeset
175 newNode.nodeType=typeID
8190d724dc01 first release
dwinter
parents:
diff changeset
176 self.id2nodes[newNode.numId]=newNode
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
177
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
178 self.partOfGraph[newNode.numId]=graphIDString #speichere node ist teil von
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
179
0
8190d724dc01 first release
dwinter
parents:
diff changeset
180 if labelString!=None:
8190d724dc01 first release
dwinter
parents:
diff changeset
181 self.label2Ids[labelString]=newNode.numId
8190d724dc01 first release
dwinter
parents:
diff changeset
182
8190d724dc01 first release
dwinter
parents:
diff changeset
183
8190d724dc01 first release
dwinter
parents:
diff changeset
184 self.internalId2nodesID[newNode.internalID]=newNode.numId
8190d724dc01 first release
dwinter
parents:
diff changeset
185
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
186
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
187 #suche nach subgraphen
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
188 graphs=node.xpath("./graphML:graph",namespaces=namespaces)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
189
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
190 for graph in graphs:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
191 self.readGraph(graph,graphIDString)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
192
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
193
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
194 edges=graphNode.xpath("./graphML:edge",namespaces=namespaces)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
195
8190d724dc01 first release
dwinter
parents:
diff changeset
196 for edge in edges:
8190d724dc01 first release
dwinter
parents:
diff changeset
197 srcIDs=edge.xpath("@source",namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
198 tarIDs=edge.xpath("@target",namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
199 for srcID in srcIDs:
8190d724dc01 first release
dwinter
parents:
diff changeset
200 source=unicode(srcID)
8190d724dc01 first release
dwinter
parents:
diff changeset
201
8190d724dc01 first release
dwinter
parents:
diff changeset
202 for tarID in tarIDs:
8190d724dc01 first release
dwinter
parents:
diff changeset
203 target=unicode(tarID)
8190d724dc01 first release
dwinter
parents:
diff changeset
204
8190d724dc01 first release
dwinter
parents:
diff changeset
205 #read styles
8190d724dc01 first release
dwinter
parents:
diff changeset
206
8190d724dc01 first release
dwinter
parents:
diff changeset
207 #lineStyles=edge.xpath('./graphML:data[@key="d10"]/y:GenericEdge/y:LineStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
208 lineStyles=edge.xpath('./graphML:data[@key="d10"]/.//y:LineStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
209 ls=None
8190d724dc01 first release
dwinter
parents:
diff changeset
210 for lineStyle in lineStyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
211 ls=lineStyle.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
212
8190d724dc01 first release
dwinter
parents:
diff changeset
213 #arrows=edge.xpath('./graphML:data[@key="d10"]/y:GenericEdge/y:Arrows',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
214 arrows=edge.xpath('./graphML:data[@key="d10"]/.//y:Arrows',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
215 ars=None
8190d724dc01 first release
dwinter
parents:
diff changeset
216 for arrow in arrows:
8190d724dc01 first release
dwinter
parents:
diff changeset
217 ars=arrow.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
218
8190d724dc01 first release
dwinter
parents:
diff changeset
219 typeID=self.getTypeFromPalette(ls,ars)
8190d724dc01 first release
dwinter
parents:
diff changeset
220
8190d724dc01 first release
dwinter
parents:
diff changeset
221 newEdge=Edge(self.internalId2nodesID.get(source),self.internalId2nodesID.get(target))
8190d724dc01 first release
dwinter
parents:
diff changeset
222 newEdge.edgeType=typeID
8190d724dc01 first release
dwinter
parents:
diff changeset
223
8190d724dc01 first release
dwinter
parents:
diff changeset
224
8190d724dc01 first release
dwinter
parents:
diff changeset
225 self.edges.add(newEdge)
8190d724dc01 first release
dwinter
parents:
diff changeset
226
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
227
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
228
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
229 def convertGraphml(self,filename):
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
230 """Konvertiert ein Grahphml-File in ein Netzwerk mit Knoten und Kanten.
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
231 Die Abbildung von Layout auf Knoten- und Kantentypen erfolgt durch den Vergleich des Layout mit einer Palette
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
232 """
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
233 print "converting:"+filename
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
234
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
235 tree = etree.parse(filename)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
236
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
237 #lese hauptgraphen
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
238 maingraphs=tree.xpath('./graphML:graph',namespaces=namespaces)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
239 for maingraph in maingraphs:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
240 self.readGraph(maingraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
241
0
8190d724dc01 first release
dwinter
parents:
diff changeset
242
8190d724dc01 first release
dwinter
parents:
diff changeset
243 def getNodeTypeFromPalette(self,style,fs,bs,config):
8190d724dc01 first release
dwinter
parents:
diff changeset
244 for key,value in self.nodeStyles.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
245 styleVorlage,fsVorlage,bsVorlage,configVorlage=value
8190d724dc01 first release
dwinter
parents:
diff changeset
246 if style!=styleVorlage:
8190d724dc01 first release
dwinter
parents:
diff changeset
247 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
248
8190d724dc01 first release
dwinter
parents:
diff changeset
249 if config!=configVorlage:
8190d724dc01 first release
dwinter
parents:
diff changeset
250 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
251
8190d724dc01 first release
dwinter
parents:
diff changeset
252
8190d724dc01 first release
dwinter
parents:
diff changeset
253 if self.cmpDict(fs,fsVorlage) and self.cmpDict(bs,bsVorlage):
8190d724dc01 first release
dwinter
parents:
diff changeset
254 print key
8190d724dc01 first release
dwinter
parents:
diff changeset
255 return key
8190d724dc01 first release
dwinter
parents:
diff changeset
256
8190d724dc01 first release
dwinter
parents:
diff changeset
257 return -1
8190d724dc01 first release
dwinter
parents:
diff changeset
258
8190d724dc01 first release
dwinter
parents:
diff changeset
259
8190d724dc01 first release
dwinter
parents:
diff changeset
260
8190d724dc01 first release
dwinter
parents:
diff changeset
261 def getTypeFromPalette(self,ls,ars):
8190d724dc01 first release
dwinter
parents:
diff changeset
262
8190d724dc01 first release
dwinter
parents:
diff changeset
263 for key,value in self.edgeStyles.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
264 lsVorlage,arsVorlage=value
8190d724dc01 first release
dwinter
parents:
diff changeset
265 if self.cmpDict(ls,lsVorlage) and self.cmpDict(ars,arsVorlage):
8190d724dc01 first release
dwinter
parents:
diff changeset
266
8190d724dc01 first release
dwinter
parents:
diff changeset
267 return key
8190d724dc01 first release
dwinter
parents:
diff changeset
268
8190d724dc01 first release
dwinter
parents:
diff changeset
269 return -1
8190d724dc01 first release
dwinter
parents:
diff changeset
270
8190d724dc01 first release
dwinter
parents:
diff changeset
271 def cmpDict(self,x,y):
8190d724dc01 first release
dwinter
parents:
diff changeset
272 """Teste zwei dicts auf Gleichheit"""
8190d724dc01 first release
dwinter
parents:
diff changeset
273
8190d724dc01 first release
dwinter
parents:
diff changeset
274 if (x is None) or (y is None):
8190d724dc01 first release
dwinter
parents:
diff changeset
275 return False
8190d724dc01 first release
dwinter
parents:
diff changeset
276
8190d724dc01 first release
dwinter
parents:
diff changeset
277 for key in x.keys():
8190d724dc01 first release
dwinter
parents:
diff changeset
278 yVal=y.get(key,None)
8190d724dc01 first release
dwinter
parents:
diff changeset
279 xVal=x.get(key)
8190d724dc01 first release
dwinter
parents:
diff changeset
280 if yVal!=xVal:
8190d724dc01 first release
dwinter
parents:
diff changeset
281 return False
8190d724dc01 first release
dwinter
parents:
diff changeset
282
8190d724dc01 first release
dwinter
parents:
diff changeset
283 return True
8190d724dc01 first release
dwinter
parents:
diff changeset
284
8190d724dc01 first release
dwinter
parents:
diff changeset
285 def exportAsDot(self,filename,graphName,onlyMs=False,partOfGraph=None,linksToGraph=None):
8190d724dc01 first release
dwinter
parents:
diff changeset
286 out = file(filename,"w")
8190d724dc01 first release
dwinter
parents:
diff changeset
287
8190d724dc01 first release
dwinter
parents:
diff changeset
288 type2NodeShape={0:'style="solid" color="blue"',
8190d724dc01 first release
dwinter
parents:
diff changeset
289 1:'style="solid" color="lightblue"',
8190d724dc01 first release
dwinter
parents:
diff changeset
290 2:'style="solid" color="blue"',
8190d724dc01 first release
dwinter
parents:
diff changeset
291 3:'style="tapered" color="orange"',
8190d724dc01 first release
dwinter
parents:
diff changeset
292 4:'style="solid" color="green"',
8190d724dc01 first release
dwinter
parents:
diff changeset
293 5:'style="solid" color="sienna"',
8190d724dc01 first release
dwinter
parents:
diff changeset
294 6:'style="solid" color="magenta"',
8190d724dc01 first release
dwinter
parents:
diff changeset
295 -1:'style="dotted" color="red"'
8190d724dc01 first release
dwinter
parents:
diff changeset
296 }
8190d724dc01 first release
dwinter
parents:
diff changeset
297
8190d724dc01 first release
dwinter
parents:
diff changeset
298 type2EdgeShape={0:'style="dotted" color="blue"',
8190d724dc01 first release
dwinter
parents:
diff changeset
299 1:'style="solid"',
8190d724dc01 first release
dwinter
parents:
diff changeset
300 2:'style="bold"',
8190d724dc01 first release
dwinter
parents:
diff changeset
301 3:'style="tapered"',
8190d724dc01 first release
dwinter
parents:
diff changeset
302 4:'style="solid" color="green"',
8190d724dc01 first release
dwinter
parents:
diff changeset
303 5:'style="solid" color="sienna"',
8190d724dc01 first release
dwinter
parents:
diff changeset
304 6:'style="solid" color="magenta"',
8190d724dc01 first release
dwinter
parents:
diff changeset
305 -1:'style="dotted" color="red"'
8190d724dc01 first release
dwinter
parents:
diff changeset
306 }
8190d724dc01 first release
dwinter
parents:
diff changeset
307
8190d724dc01 first release
dwinter
parents:
diff changeset
308 out.write("""digraph %s {"""%graphName)
8190d724dc01 first release
dwinter
parents:
diff changeset
309 g=self
8190d724dc01 first release
dwinter
parents:
diff changeset
310
8190d724dc01 first release
dwinter
parents:
diff changeset
311 for key,value in g.id2nodes.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
312 #name=value.label.replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
313 #name=value.numId
8190d724dc01 first release
dwinter
parents:
diff changeset
314 name=key
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
315 if value.label==None:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
316 label="EMPTYLABEL"
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
317 else:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
318 label=value.label.replace("\n","")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
319 url=value.externalRef
8190d724dc01 first release
dwinter
parents:
diff changeset
320
8190d724dc01 first release
dwinter
parents:
diff changeset
321 if onlyMs:
8190d724dc01 first release
dwinter
parents:
diff changeset
322 if not label.lstrip().startswith("Add"):
8190d724dc01 first release
dwinter
parents:
diff changeset
323 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
324 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
325 s="""%s [label="%s" URL="%s" %s];\n"""%(name,label.decode("utf-8"),url,type2NodeShape.get(value.nodeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
326 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
327 except:
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
328 s="""%s [label="%s" URL="%s" %s];\n"""%(name,label.encode("utf-8"),url,type2NodeShape.get(value.nodeType))
0
8190d724dc01 first release
dwinter
parents:
diff changeset
329 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
330
8190d724dc01 first release
dwinter
parents:
diff changeset
331
8190d724dc01 first release
dwinter
parents:
diff changeset
332 for edge in g.edges:
8190d724dc01 first release
dwinter
parents:
diff changeset
333 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
334 #sr=g.id2label.get(edge.src).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
335 sr=edge.src
8190d724dc01 first release
dwinter
parents:
diff changeset
336
8190d724dc01 first release
dwinter
parents:
diff changeset
337 tg=edge.target
8190d724dc01 first release
dwinter
parents:
diff changeset
338 #tg=g.id2label.get(edge.target).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
339
8190d724dc01 first release
dwinter
parents:
diff changeset
340 s = """%s -> %s [%s];\n"""%(sr,tg,type2EdgeShape.get(edge.edgeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
341 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
342 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
343 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
344
8190d724dc01 first release
dwinter
parents:
diff changeset
345
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
346 toGraphs=set() #sammle alle graphen
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
347 for fromNode,toGraph in g.partOfGraph.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
348
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
349 s = """%s -> %s [color="blue"];\n"""%(fromNode,toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
350 toGraphs.add(toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
351 out.write(s)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
352
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
353 for fromNode,toGraph in g.isSubGraphOf.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
354 s = """%s -> %s [color="blue"];\n"""%(fromNode,toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
355 toGraphs.add(toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
356 out.write(s)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
357
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
358 for toGraph in toGraphs:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
359 s = """%s [label="%s" color="blue" fillcolor="blue" style="filled"];\n"""%(str(toGraph).replace(".","_"),toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
360
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
361 out.write(s)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
362
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
363
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
364
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
365
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
366
0
8190d724dc01 first release
dwinter
parents:
diff changeset
367 if not partOfGraph is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
368 for nodeID,graphList in partOfGraph.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
369 #fromNode=g.id2label.get(nodeID).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
370 fromNode=nodeID
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
371 for graph in [graphList]:
0
8190d724dc01 first release
dwinter
parents:
diff changeset
372 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
373 s = """G_%s -> %s [color="yellow"];\n"""%(graph.replace(".","_"),fromNode)
8190d724dc01 first release
dwinter
parents:
diff changeset
374 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
375 s = """G_%s [label="%s" color="green" fillcolor="green" style="filled"];\n"""%(graph.replace(".","_"),graph)
8190d724dc01 first release
dwinter
parents:
diff changeset
376 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
377 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
378 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
379
8190d724dc01 first release
dwinter
parents:
diff changeset
380
8190d724dc01 first release
dwinter
parents:
diff changeset
381 if not linksToGraph is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
382 for nodeID,graph in linksToGraph:
8190d724dc01 first release
dwinter
parents:
diff changeset
383 #fromNode=g.id2label.get(nodeID).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
384 fromNode=nodeID
8190d724dc01 first release
dwinter
parents:
diff changeset
385 splitted=graph.split("/")
8190d724dc01 first release
dwinter
parents:
diff changeset
386 print graph
8190d724dc01 first release
dwinter
parents:
diff changeset
387 gr = splitted[-1]
8190d724dc01 first release
dwinter
parents:
diff changeset
388 print gr
8190d724dc01 first release
dwinter
parents:
diff changeset
389 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
390 s = """%s -> G_%s [color="green"];\n"""%(fromNode,gr.replace(".","_"))
8190d724dc01 first release
dwinter
parents:
diff changeset
391 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
392 s = """G_%s [label="%s" color="green" fillcolor="green" style="filled"];\n"""%(gr.replace(".","_"),gr)
8190d724dc01 first release
dwinter
parents:
diff changeset
393 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
394 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
395 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
396 out.write("}")
8190d724dc01 first release
dwinter
parents:
diff changeset
397
8190d724dc01 first release
dwinter
parents:
diff changeset
398
8190d724dc01 first release
dwinter
parents:
diff changeset
399 out.close()
8190d724dc01 first release
dwinter
parents:
diff changeset
400
8190d724dc01 first release
dwinter
parents:
diff changeset
401
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
402 def exportAsRDF(self,filename,graphName,onlyMs=False,partOfGraph=None,linksToGraph=None,describe=True):
0
8190d724dc01 first release
dwinter
parents:
diff changeset
403 out = file(filename,"w")
8190d724dc01 first release
dwinter
parents:
diff changeset
404
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
405 base="http://ontologies.mpiwg-berlin.mpg.de/research/harriot.owl/"
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
406 ressourceBase="http://entities.mpiwg-berlin.mpg.de/research/harriot.owl/"
0
8190d724dc01 first release
dwinter
parents:
diff changeset
407 type2NodeShape={0: base+"Topic",
8190d724dc01 first release
dwinter
parents:
diff changeset
408 1: base+"Topic",
8190d724dc01 first release
dwinter
parents:
diff changeset
409 2: base+"Topic",
8190d724dc01 first release
dwinter
parents:
diff changeset
410 3: base+"FolioPage",
8190d724dc01 first release
dwinter
parents:
diff changeset
411 4: base+"4",
8190d724dc01 first release
dwinter
parents:
diff changeset
412 5: base+"RelatedFolioPage",
8190d724dc01 first release
dwinter
parents:
diff changeset
413 -1: base+"UNKNOWN"}
8190d724dc01 first release
dwinter
parents:
diff changeset
414
8190d724dc01 first release
dwinter
parents:
diff changeset
415 type2EdgeShape={0: base+"has_prev_by_pagination",
8190d724dc01 first release
dwinter
parents:
diff changeset
416 1: base+"has_conjectural_relation",
8190d724dc01 first release
dwinter
parents:
diff changeset
417 2: base+"has_prev_by_conjection",
8190d724dc01 first release
dwinter
parents:
diff changeset
418 3: base+"has_prev_by_conjection",
8190d724dc01 first release
dwinter
parents:
diff changeset
419 4: base+"result_used_from",
8190d724dc01 first release
dwinter
parents:
diff changeset
420 5: base+"result_used_from",
8190d724dc01 first release
dwinter
parents:
diff changeset
421 -1: base+"is_related_to"}
8190d724dc01 first release
dwinter
parents:
diff changeset
422
8190d724dc01 first release
dwinter
parents:
diff changeset
423 #out.write("""digraph %s {"""%graphName)
8190d724dc01 first release
dwinter
parents:
diff changeset
424 g=self
8190d724dc01 first release
dwinter
parents:
diff changeset
425
8190d724dc01 first release
dwinter
parents:
diff changeset
426 for key,value in g.id2nodes.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
427 #name=value.label.replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
428 #name=value.numId
8190d724dc01 first release
dwinter
parents:
diff changeset
429 name=key
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
430 if value.label==None:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
431 label="EMPTYLABEL3"
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
432 else:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
433 label=value.label.replace("\n","")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
434 url=value.externalRef
8190d724dc01 first release
dwinter
parents:
diff changeset
435
8190d724dc01 first release
dwinter
parents:
diff changeset
436 if onlyMs:
8190d724dc01 first release
dwinter
parents:
diff changeset
437 if not label.lstrip().startswith("Add"):
8190d724dc01 first release
dwinter
parents:
diff changeset
438 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
439
5
e661aabed2f9 ressourceBase und Base ge?ndert.
dwinter
parents: 0
diff changeset
440 ressourceURI=ressourceBase+str(name)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
441 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
442 s=""
8190d724dc01 first release
dwinter
parents:
diff changeset
443 if label!="":
8190d724dc01 first release
dwinter
parents:
diff changeset
444 s+="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s".\n"""%(ressourceURI,label.decode("utf-8").replace('"','\"'))
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
445 if url!="" and describe:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
446 s+="""<%s> <%s> <%s>.\n"""%(ressourceURI,base+"describes",url.lstrip().rstrip())
0
8190d724dc01 first release
dwinter
parents:
diff changeset
447 print value.nodeType
8190d724dc01 first release
dwinter
parents:
diff changeset
448 s+="""<%s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type><%s>.\n"""%(ressourceURI,type2NodeShape.get(value.nodeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
449 #s="""%s [label="%s" URL="%s" %s];\n"""%(name,label.decode("utf-8"),url,type2NodeShape.get(value.nodeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
450 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
451 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
452 if label!="":
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
453 #s="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s".\n"""%(ressourceURI,'CHECK_THIS')
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
454 s="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s".\n"""%(ressourceURI,label.encode("utf-8").replace('"','\"'))
0
8190d724dc01 first release
dwinter
parents:
diff changeset
455 #s="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s"."""%(ressourceURI,repr(label).replace('"','\"'))
8190d724dc01 first release
dwinter
parents:
diff changeset
456 if url!="":
8190d724dc01 first release
dwinter
parents:
diff changeset
457 s+="""<%s> <%s> <%s>."""%(ressourceURI,base+"describes",url)
8190d724dc01 first release
dwinter
parents:
diff changeset
458 s+="""<%s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type><%s>.\n"""%(ressourceURI,type2NodeShape.get(value.nodeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
459 #s="""%s [label="%s" URL="%s" %s];\n"""%(name,repr(label),url,type2NodeShape.get(value.nodeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
460 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
461
8190d724dc01 first release
dwinter
parents:
diff changeset
462
8190d724dc01 first release
dwinter
parents:
diff changeset
463 for edge in g.edges:
8190d724dc01 first release
dwinter
parents:
diff changeset
464 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
465 #sr=g.id2label.get(edge.src).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
466 sr=edge.src
8190d724dc01 first release
dwinter
parents:
diff changeset
467
8190d724dc01 first release
dwinter
parents:
diff changeset
468 tg=edge.target
8190d724dc01 first release
dwinter
parents:
diff changeset
469 #tg=g.id2label.get(edge.target).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
470
5
e661aabed2f9 ressourceBase und Base ge?ndert.
dwinter
parents: 0
diff changeset
471 s ="""<%s><%s><%s>.\n"""%(ressourceBase+str(sr),type2EdgeShape.get(edge.edgeType),ressourceBase+str(tg))
0
8190d724dc01 first release
dwinter
parents:
diff changeset
472 #s = """%s -> %s [%s];\n"""%(sr,tg,type2EdgeShape.get(edge.edgeType))
8190d724dc01 first release
dwinter
parents:
diff changeset
473 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
474 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
475 pass
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
476
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
477
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
478 toGraphs=set() #sammle alle graphen
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
479 for fromNode,toGraph in g.partOfGraph.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
480 s="""<%s> <%s> <%s>.\n"""%(ressourceBase+str(fromNode),base+"is_part_of_graph",ressourceBase+str(toGraph))
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
481 toGraphs.add(toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
482 out.write(s)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
483
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
484 for fromNode,toGraph in g.isSubGraphOf.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
485 s="""<%s> <%s> <%s>.\n"""%(ressourceBase+str(fromNode),base+"is_subGraph_of",ressourceBase+str(toGraph))
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
486 toGraphs.add(toGraph)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
487 out.write(s)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
488
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
489 for toGraph in toGraphs:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
490 s="""<%s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type><%s>.\n"""%(ressourceBase+str(toGraph),base+"SubGraph")
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
491 out.write(s)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
492
0
8190d724dc01 first release
dwinter
parents:
diff changeset
493 if not partOfGraph is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
494 for nodeID,graphList in partOfGraph.items():
8190d724dc01 first release
dwinter
parents:
diff changeset
495 #fromNode=g.id2label.get(nodeID).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
496 fromNode=nodeID
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
497 for graph in [graphList]:
0
8190d724dc01 first release
dwinter
parents:
diff changeset
498 try:
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
499 ressourceURI=ressourceBase+graph.replace(" ","_")
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
500 s ="""<%s><%s><%s>.\n"""%(ressourceBase+str(fromNode),base+"is_part_of_mainGraph",ressourceURI)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
501 #s = """G_%s -> %s [color="yellow"];\n"""%(graph.replace(".","_"),fromNode)
8190d724dc01 first release
dwinter
parents:
diff changeset
502 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
503
8190d724dc01 first release
dwinter
parents:
diff changeset
504 s="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s".\n"""%(ressourceURI,graph)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
505 s+="""<%s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type><%s>.\n"""%(ressourceURI,base+"Graph")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
506
8190d724dc01 first release
dwinter
parents:
diff changeset
507 #s = """G_%s [label="%s" color="green" fillcolor="green" style="filled"];\n"""%(graph.replace(".","_"),graph)
8190d724dc01 first release
dwinter
parents:
diff changeset
508 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
509 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
510 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
511
8190d724dc01 first release
dwinter
parents:
diff changeset
512
8190d724dc01 first release
dwinter
parents:
diff changeset
513 if not linksToGraph is None:
8190d724dc01 first release
dwinter
parents:
diff changeset
514 for nodeID,graph in linksToGraph:
8190d724dc01 first release
dwinter
parents:
diff changeset
515 #fromNode=g.id2label.get(nodeID).replace("\n","").replace(" ","_").replace(".","_").replace("(","_").replace(")","_").replace("?","_").replace("'","_").replace(",","_").replace("-","_")
8190d724dc01 first release
dwinter
parents:
diff changeset
516 fromNode=nodeID
8190d724dc01 first release
dwinter
parents:
diff changeset
517 splitted=graph.split("/")
8190d724dc01 first release
dwinter
parents:
diff changeset
518 print graph
8190d724dc01 first release
dwinter
parents:
diff changeset
519 gr = splitted[-1]
8190d724dc01 first release
dwinter
parents:
diff changeset
520 print gr
5
e661aabed2f9 ressourceBase und Base ge?ndert.
dwinter
parents: 0
diff changeset
521 ressourceURI=ressourceBase+gr
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
522 ressourceURI.replace(" ","_")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
523
8190d724dc01 first release
dwinter
parents:
diff changeset
524
8190d724dc01 first release
dwinter
parents:
diff changeset
525 typeSrc=type2NodeShape.get(nodeID)
8190d724dc01 first release
dwinter
parents:
diff changeset
526 if typeSrc==base+"Topic":
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
527 relation=base+"is_specified_in"
0
8190d724dc01 first release
dwinter
parents:
diff changeset
528 else:
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
529 relation=base+"see_also"
0
8190d724dc01 first release
dwinter
parents:
diff changeset
530
8190d724dc01 first release
dwinter
parents:
diff changeset
531 try:
5
e661aabed2f9 ressourceBase und Base ge?ndert.
dwinter
parents: 0
diff changeset
532 s ="""<%s><%s><%s>.\n"""%(ressourceBase+str(fromNode),relation,ressourceURI)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
533 #s = """%s -> G_%s [color="green"];\n"""%(fromNode,gr.replace(".","_"))
8190d724dc01 first release
dwinter
parents:
diff changeset
534 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
535
8190d724dc01 first release
dwinter
parents:
diff changeset
536 s="""<%s> <http://www.w3.org/2000/01/rdf-schema#label> "%s".\n"""%(ressourceURI,gr)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
537 s+="""<%s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type><%s>.\n"""%(ressourceURI,base+"Graph")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
538
8190d724dc01 first release
dwinter
parents:
diff changeset
539 #s = """G_%s [label="%s" color="green" fillcolor="green" style="filled"];\n"""%(gr.replace(".","_"),gr)
8190d724dc01 first release
dwinter
parents:
diff changeset
540 out.write(s)
8190d724dc01 first release
dwinter
parents:
diff changeset
541 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
542 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
543 #out.write("}")
8190d724dc01 first release
dwinter
parents:
diff changeset
544
8190d724dc01 first release
dwinter
parents:
diff changeset
545 out.close()
8190d724dc01 first release
dwinter
parents:
diff changeset
546 def readPalette(self,palettePath):
8190d724dc01 first release
dwinter
parents:
diff changeset
547 typeNr=0
8190d724dc01 first release
dwinter
parents:
diff changeset
548 palette = etree.parse(palettePath)
8190d724dc01 first release
dwinter
parents:
diff changeset
549 edges=palette.xpath("//graphML:edge",namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
550 # lage alle kanten in der palette
8190d724dc01 first release
dwinter
parents:
diff changeset
551 for edge in edges:
8190d724dc01 first release
dwinter
parents:
diff changeset
552 #relevant fuer die einordnugn ist data key=12 linestyle und arrows
8190d724dc01 first release
dwinter
parents:
diff changeset
553 lineStyles=edge.xpath('./graphML:data[@key="d12"]/y:GenericEdge/y:LineStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
554 ls=None
8190d724dc01 first release
dwinter
parents:
diff changeset
555 for lineStyle in lineStyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
556 ls=lineStyle
8190d724dc01 first release
dwinter
parents:
diff changeset
557
8190d724dc01 first release
dwinter
parents:
diff changeset
558 arrows=edge.xpath('./graphML:data[@key="d12"]/y:GenericEdge/y:Arrows',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
559 ars=None
8190d724dc01 first release
dwinter
parents:
diff changeset
560 for arrow in arrows:
8190d724dc01 first release
dwinter
parents:
diff changeset
561 ars=arrow
8190d724dc01 first release
dwinter
parents:
diff changeset
562
8190d724dc01 first release
dwinter
parents:
diff changeset
563 #get description
8190d724dc01 first release
dwinter
parents:
diff changeset
564 ds=""
8190d724dc01 first release
dwinter
parents:
diff changeset
565 descriptions=edge.xpath('./graphML:data[@key="d9"]',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
566 for description in descriptions:
8190d724dc01 first release
dwinter
parents:
diff changeset
567 ds=description
8190d724dc01 first release
dwinter
parents:
diff changeset
568
8190d724dc01 first release
dwinter
parents:
diff changeset
569 self.edgeDescription[typeNr]=ds.text
8190d724dc01 first release
dwinter
parents:
diff changeset
570 self.edgeStyles[typeNr]=(ls.attrib,ars.attrib)
8190d724dc01 first release
dwinter
parents:
diff changeset
571 typeNr+=1
8190d724dc01 first release
dwinter
parents:
diff changeset
572
8190d724dc01 first release
dwinter
parents:
diff changeset
573 typeNr=0
8190d724dc01 first release
dwinter
parents:
diff changeset
574 nodes=palette.xpath("//graphML:node",namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
575 for node in nodes:
8190d724dc01 first release
dwinter
parents:
diff changeset
576 style=""
8190d724dc01 first release
dwinter
parents:
diff changeset
577 #fall 1 Generic Node
8190d724dc01 first release
dwinter
parents:
diff changeset
578 gns = node.xpath('./graphML:data[@key="d7"]/y:GenericNode',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
579 for gn in gns:
8190d724dc01 first release
dwinter
parents:
diff changeset
580 style="g"
8190d724dc01 first release
dwinter
parents:
diff changeset
581 fills=gn.xpath('./y:Fill',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
582 fs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
583 for fill in fills:
8190d724dc01 first release
dwinter
parents:
diff changeset
584 fs=fill.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
585
8190d724dc01 first release
dwinter
parents:
diff changeset
586 borderstyles=gn.xpath('./y:BorderStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
587 bs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
588 for borderstyle in borderstyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
589 bs=borderstyle.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
590
8190d724dc01 first release
dwinter
parents:
diff changeset
591
8190d724dc01 first release
dwinter
parents:
diff changeset
592 config=gn.attrib.get("configuration")
8190d724dc01 first release
dwinter
parents:
diff changeset
593
8190d724dc01 first release
dwinter
parents:
diff changeset
594 #get description
8190d724dc01 first release
dwinter
parents:
diff changeset
595 ds=""
8190d724dc01 first release
dwinter
parents:
diff changeset
596 descriptions=node.xpath('./graphML:data[@key="d4"]',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
597 for description in descriptions:
8190d724dc01 first release
dwinter
parents:
diff changeset
598 ds=description.text
8190d724dc01 first release
dwinter
parents:
diff changeset
599
8190d724dc01 first release
dwinter
parents:
diff changeset
600 self.nodeDescription[typeNr]=ds
8190d724dc01 first release
dwinter
parents:
diff changeset
601
8190d724dc01 first release
dwinter
parents:
diff changeset
602 self.nodeStyles[typeNr]=(style,fs,bs,config)
8190d724dc01 first release
dwinter
parents:
diff changeset
603 typeNr+=1
8190d724dc01 first release
dwinter
parents:
diff changeset
604
8190d724dc01 first release
dwinter
parents:
diff changeset
605 #fall 2 shape Node
8190d724dc01 first release
dwinter
parents:
diff changeset
606 gns = node.xpath('./graphML:data[@key="d7"]/y:ShapeNode',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
607 for gn in gns:
8190d724dc01 first release
dwinter
parents:
diff changeset
608 style="s"
8190d724dc01 first release
dwinter
parents:
diff changeset
609 fills=gn.xpath('./y:Fill',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
610 fs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
611 for fill in fills:
8190d724dc01 first release
dwinter
parents:
diff changeset
612 fs=fill.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
613
8190d724dc01 first release
dwinter
parents:
diff changeset
614 borderstyles=gn.xpath('./y:BorderStyle',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
615 bs=None
8190d724dc01 first release
dwinter
parents:
diff changeset
616 for borderstyle in borderstyles:
8190d724dc01 first release
dwinter
parents:
diff changeset
617 bs=borderstyle.attrib
8190d724dc01 first release
dwinter
parents:
diff changeset
618
8190d724dc01 first release
dwinter
parents:
diff changeset
619
8190d724dc01 first release
dwinter
parents:
diff changeset
620 shapes=gn.xpath('./y:Shape',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
621 shapeType=None
8190d724dc01 first release
dwinter
parents:
diff changeset
622 for shape in shapes:
8190d724dc01 first release
dwinter
parents:
diff changeset
623 shapeType=shape.attrib.get("type")
8190d724dc01 first release
dwinter
parents:
diff changeset
624
8190d724dc01 first release
dwinter
parents:
diff changeset
625
8190d724dc01 first release
dwinter
parents:
diff changeset
626
8190d724dc01 first release
dwinter
parents:
diff changeset
627 #get description
8190d724dc01 first release
dwinter
parents:
diff changeset
628 ds=""
8190d724dc01 first release
dwinter
parents:
diff changeset
629 descriptions=node.xpath('./graphML:data[@key="d4"]',namespaces=namespaces)
8190d724dc01 first release
dwinter
parents:
diff changeset
630 for description in descriptions:
8190d724dc01 first release
dwinter
parents:
diff changeset
631 ds=description.text
8190d724dc01 first release
dwinter
parents:
diff changeset
632
8190d724dc01 first release
dwinter
parents:
diff changeset
633 self.nodeDescription[typeNr]=ds
8190d724dc01 first release
dwinter
parents:
diff changeset
634 self.nodeStyles[typeNr]=(style,fs,bs,shapeType)
8190d724dc01 first release
dwinter
parents:
diff changeset
635 typeNr+=1
8190d724dc01 first release
dwinter
parents:
diff changeset
636
8190d724dc01 first release
dwinter
parents:
diff changeset
637 def merge(graphs,dispensor):
8190d724dc01 first release
dwinter
parents:
diff changeset
638 filter=['supermap.graphml']
8190d724dc01 first release
dwinter
parents:
diff changeset
639 partOfGraph={}
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
640 partOfSubGraph={}
0
8190d724dc01 first release
dwinter
parents:
diff changeset
641 linksToGraph=set()
8190d724dc01 first release
dwinter
parents:
diff changeset
642
8190d724dc01 first release
dwinter
parents:
diff changeset
643 edges=set()
8190d724dc01 first release
dwinter
parents:
diff changeset
644 mg =Graph(dispensor)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
645
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
646
0
8190d724dc01 first release
dwinter
parents:
diff changeset
647 for g in graphs:
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
648
0
8190d724dc01 first release
dwinter
parents:
diff changeset
649 if g.graphURI in filter:
8190d724dc01 first release
dwinter
parents:
diff changeset
650 continue
8190d724dc01 first release
dwinter
parents:
diff changeset
651 idalt2neu={}
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
652
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
653
0
8190d724dc01 first release
dwinter
parents:
diff changeset
654 for nodeid in g.id2nodes.keys():
8190d724dc01 first release
dwinter
parents:
diff changeset
655 node=g.id2nodes.get(nodeid)
8190d724dc01 first release
dwinter
parents:
diff changeset
656 label=node.label
8190d724dc01 first release
dwinter
parents:
diff changeset
657 currentID =mg.label2Ids.get(label,dispensor.getID()) #hole id wenn existent sonst neue
8190d724dc01 first release
dwinter
parents:
diff changeset
658
8190d724dc01 first release
dwinter
parents:
diff changeset
659 mg.label2Ids[label]=currentID
8190d724dc01 first release
dwinter
parents:
diff changeset
660 mg.id2label[currentID]=label
8190d724dc01 first release
dwinter
parents:
diff changeset
661 idalt2neu[node.numId]=currentID
8190d724dc01 first release
dwinter
parents:
diff changeset
662 mg.id2nodes[currentID]=node
8190d724dc01 first release
dwinter
parents:
diff changeset
663
8190d724dc01 first release
dwinter
parents:
diff changeset
664
8190d724dc01 first release
dwinter
parents:
diff changeset
665 if node.internalRef!="":
8190d724dc01 first release
dwinter
parents:
diff changeset
666 linksToGraph.add((currentID,node.internalRef))
8190d724dc01 first release
dwinter
parents:
diff changeset
667
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
668 #containedIn = partOfGraph.get(currentID,set())
0
8190d724dc01 first release
dwinter
parents:
diff changeset
669
8190d724dc01 first release
dwinter
parents:
diff changeset
670
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
671 #containedIn.add(g.graphURI)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
672 #partOfGraph[currentID]=containedIn
0
8190d724dc01 first release
dwinter
parents:
diff changeset
673
8190d724dc01 first release
dwinter
parents:
diff changeset
674
8190d724dc01 first release
dwinter
parents:
diff changeset
675 for edge in g.edges:
8190d724dc01 first release
dwinter
parents:
diff changeset
676 src=edge.src
8190d724dc01 first release
dwinter
parents:
diff changeset
677 target=edge.target
8190d724dc01 first release
dwinter
parents:
diff changeset
678
8190d724dc01 first release
dwinter
parents:
diff changeset
679 edge.src=idalt2neu.get(src)
8190d724dc01 first release
dwinter
parents:
diff changeset
680 edge.target=idalt2neu.get(target)
8190d724dc01 first release
dwinter
parents:
diff changeset
681 edges.add(edge)
8190d724dc01 first release
dwinter
parents:
diff changeset
682
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
683 graphsOldToNew={}
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
684 for nodeID,toGraph in g.partOfGraph.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
685
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
686 node=g.id2nodes.get(nodeID)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
687 label=node.label
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
688 currentID =mg.label2Ids.get(label,dispensor.getID()) #hole id wenn existent sonst neue
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
689
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
690 #graphID = graphsOldToNew.get(graph,dispensor.getID()) #hole id wenn existent sonst neue
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
691 toGraphID = graphsOldToNew.get(toGraph,dispensor.getID()) #hole id wenn existent sonst neue
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
692 graphsOldToNew[toGraph]=toGraphID
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
693 mg.partOfGraph[currentID]=toGraphID
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
694
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
695
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
696 for fromGraph,toGraph in g.isSubGraphOf.items():
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
697 toGraphID = graphsOldToNew.get(toGraph,dispensor.getID()) #hole id wenn existent sonst neue
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
698 graphsOldToNew[toGraph]=toGraphID
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
699
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
700 fromGraphID = graphsOldToNew.get(fromGraph,dispensor.getID()) #hole id wenn existent sonst neue
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
701 graphsOldToNew[fromGraph]=fromGraphID
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
702 mg.isSubGraphOf[fromGraphID]=toGraphID
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
703
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
704
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
705 startID=graphsOldToNew[g.startGraphId]
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
706 partOfGraph[startID]=g.graphURI
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
707
0
8190d724dc01 first release
dwinter
parents:
diff changeset
708 mg.edges=edges
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
709 #mg.partOfGraph=partOfSubGraph
0
8190d724dc01 first release
dwinter
parents:
diff changeset
710 return mg,partOfGraph,linksToGraph
8190d724dc01 first release
dwinter
parents:
diff changeset
711
8190d724dc01 first release
dwinter
parents:
diff changeset
712 if __name__ == '__main__':
8190d724dc01 first release
dwinter
parents:
diff changeset
713 dispensor = IDDispensor()
8190d724dc01 first release
dwinter
parents:
diff changeset
714 #g1=Graph(dispensor)
8190d724dc01 first release
dwinter
parents:
diff changeset
715 #g1.readPalette("/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/graphML2RDF/examples/Manuscripts_3.graphml")
8190d724dc01 first release
dwinter
parents:
diff changeset
716 #g1.convertGrahml("/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/graphML2RDF/examples/5.7.3_cubics_other.graphml")
8190d724dc01 first release
dwinter
parents:
diff changeset
717
8190d724dc01 first release
dwinter
parents:
diff changeset
718
8190d724dc01 first release
dwinter
parents:
diff changeset
719
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
720 #path="/Users/dwinter/Documents/Projekte/Europeana/-graphml/Maps_20120523/"
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
721 path="/Users/dwinter/Documents/Projekte/Europeana/harriot-graphml/Maps_20120626/"
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
722 #path="/Users/dwinter/Documents/Projekte/Europeana/-graphml/Maps_short/"
0
8190d724dc01 first release
dwinter
parents:
diff changeset
723 ls = os.listdir(path)
8190d724dc01 first release
dwinter
parents:
diff changeset
724 graphs=set()
8190d724dc01 first release
dwinter
parents:
diff changeset
725
8190d724dc01 first release
dwinter
parents:
diff changeset
726 for l in ls:
8190d724dc01 first release
dwinter
parents:
diff changeset
727
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
728
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
729 try:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
730 g1=Graph(dispensor)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
731 g1.readPalette("/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/graphML2RDF/examples/Manuscripts_3.graphml")
0
8190d724dc01 first release
dwinter
parents:
diff changeset
732
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
733 g1.convertGraphml(path+l)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
734 g1.graphURI=l
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
735 graphs.add(g1)
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
736 except:
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
737 logging.error("Can't handle:"+l)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
738 g,po,lg = merge(graphs,dispensor)
8190d724dc01 first release
dwinter
parents:
diff changeset
739
8190d724dc01 first release
dwinter
parents:
diff changeset
740
8190d724dc01 first release
dwinter
parents:
diff changeset
741 #print g.label2Ids.keys()
8190d724dc01 first release
dwinter
parents:
diff changeset
742 #print len(g.label2Ids.keys())
8190d724dc01 first release
dwinter
parents:
diff changeset
743
8190d724dc01 first release
dwinter
parents:
diff changeset
744 #g.readPalette("/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/graphML2RDF/examples/Manuscripts_3.graphml")
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
745 #g.exportAsDot("/tmp/out.dot", "",onlyMs=False,partOfGraph=po,linksToGraph=lg)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
746 g.exportAsDot("/tmp/out.dot", "harriot",onlyMs=False,partOfGraph=po,linksToGraph=lg)
6
6b51bd2418b9 version 0.3
dwinter
parents: 5
diff changeset
747 g.exportAsRDF("/tmp/out.rdf", "harriot",onlyMs=False,partOfGraph=po,linksToGraph=lg,describe=True)
0
8190d724dc01 first release
dwinter
parents:
diff changeset
748
8190d724dc01 first release
dwinter
parents:
diff changeset
749 out2 = file("/tmp/out.txt","w")
8190d724dc01 first release
dwinter
parents:
diff changeset
750 for key in g.label2Ids.keys():
8190d724dc01 first release
dwinter
parents:
diff changeset
751 try:
8190d724dc01 first release
dwinter
parents:
diff changeset
752 out2.write('"'+key+'"'+"\n")
8190d724dc01 first release
dwinter
parents:
diff changeset
753 except:
8190d724dc01 first release
dwinter
parents:
diff changeset
754 pass
8190d724dc01 first release
dwinter
parents:
diff changeset
755 out2.close()
8190d724dc01 first release
dwinter
parents:
diff changeset
756