Mercurial > hg > duomoOWLProject
annotate src/de/mpiwg/dwinter/duomo/lexdump/LexOWLTransformer.java @ 9:4392a6adf85a default tip
new version der label mit language tag
author | dwinter |
---|---|
date | Thu, 16 Aug 2012 11:40:17 +0200 |
parents | 919e9f3b5efd |
children |
rev | line source |
---|---|
0 | 1 package de.mpiwg.dwinter.duomo.lexdump; |
2 | |
1 | 3 import java.io.File; |
4 import java.io.FileWriter; | |
0 | 5 import java.io.IOException; |
6 import java.net.URI; | |
7 import java.net.URISyntaxException; | |
8 import java.net.URLEncoder; | |
9 import java.util.Collection; | |
10 import java.util.HashMap; | |
11 import java.util.HashSet; | |
12 import java.util.Iterator; | |
13 import java.util.List; | |
14 import java.util.Map; | |
15 import java.util.Set; | |
16 | |
17 import javax.print.URIException; | |
18 | |
19 import org.apache.log4j.Level; | |
20 import org.apache.log4j.Logger; | |
21 import org.jdom.Attribute; | |
22 import org.jdom.Element; | |
23 import org.jdom.JDOMException; | |
24 import org.jdom.xpath.XPath; | |
25 | |
26 import com.sun.xml.internal.ws.developer.MemberSubmissionEndpointReference.Elements; | |
27 | |
28 import edu.stanford.smi.protege.exception.OntologyLoadException; | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
29 import edu.stanford.smi.protege.model.Facet; |
0 | 30 import edu.stanford.smi.protege.model.Instance; |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
31 import edu.stanford.smi.protege.model.Slot; |
4 | 32 import edu.stanford.smi.protegex.owl.jena.JenaOWLModel; |
0 | 33 import edu.stanford.smi.protegex.owl.model.OWLAllValuesFrom; |
34 import edu.stanford.smi.protegex.owl.model.OWLClass; | |
35 import edu.stanford.smi.protegex.owl.model.OWLDataRange; | |
36 import edu.stanford.smi.protegex.owl.model.OWLIndividual; | |
37 import edu.stanford.smi.protegex.owl.model.OWLNamedClass; | |
38 import edu.stanford.smi.protegex.owl.model.OWLProperty; | |
39 import edu.stanford.smi.protegex.owl.model.OWLUnionClass; | |
40 import edu.stanford.smi.protegex.owl.model.RDFList; | |
41 import edu.stanford.smi.protegex.owl.model.RDFProperty; | |
42 import edu.stanford.smi.protegex.owl.model.RDFResource; | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
43 import edu.stanford.smi.protegex.owl.model.RDFSClass; |
0 | 44 import edu.stanford.smi.protegex.owl.model.impl.AbstractOWLQuantifierRestriction; |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
45 import edu.stanford.smi.protegex.owl.model.impl.AbstractOWLRestriction; |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
46 import edu.stanford.smi.protegex.owl.model.impl.DefaultOWLAllValuesFrom; |
0 | 47 import edu.stanford.smi.protegex.owl.model.impl.DefaultOWLUnionClass; |
48 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
49 /** |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
50 * @author dwinter |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
51 * |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
52 *Transformiert die Lex Files in OWL |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
53 */ |
0 | 54 public class LexOWLTransformer { |
55 private Logger logger = Logger.getRootLogger(); | |
1 | 56 private FileWriter missing; |
0 | 57 private OWLImporter owlDoc; |
58 private LexDumpImporter lexDoc; | |
59 private Map<String, OWLIndividual> individualIds = new HashMap<String, OWLIndividual>(); // speichere | |
60 // ids | |
61 // fuer | |
62 // weitere | |
63 // Verwendung | |
64 | |
1 | 65 public LexOWLTransformer(OWLImporter owlDoc, LexDumpImporter lexDoc) throws IOException { |
0 | 66 this.owlDoc = owlDoc; |
67 this.lexDoc = lexDoc; | |
2 | 68 missing = new FileWriter(new File("/tmp/missing.out")); |
0 | 69 } |
70 | |
71 /** | |
72 * @param args | |
73 * @throws Exception | |
74 */ | |
75 public static void main(String[] args) throws Exception { | |
6 | 76 System.out.println("Stack size has to be large, use at least -Xmx3048M -Xss10M"); |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
77 if (args.length<2){ |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
78 System.out.println("Usage: \"/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/de.mpiwg.dwinter.duomo/owlInput\""+ |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
79 "\"/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/duomoData/LEXXDUMP.xml\""); |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
80 System.exit(-1); |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
81 } |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
82 |
0 | 83 Logger.getRootLogger().setLevel(Level.DEBUG); |
84 // Import OWL | |
85 //String base = "/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/de.mpiwg.dwinter.duomo/owlInput"; | |
86 String base=args[0]; | |
87 String baseUri= base.replace(" ", "%20"); | |
88 URI ontologieUri = new URI("file://"+baseUri+"/duomoAnalysis.owl"); | |
89 //URI ontologieUri = new URI( | |
90 // "file:///Users/dwinter/Documents/Projekte/Diss%20-%20data-mining/eclipseWorkspace/de.mpiwg.dwinter.duomo/owlInput/duomoAnalysis.owl"); | |
91 OWLImporter owlDoc = null; | |
92 try { | |
93 | |
94 owlDoc = new OWLImporter(base, ontologieUri); | |
95 // owlDoc.printModel(); | |
96 } catch (OntologyLoadException e) { | |
97 e.printStackTrace(); | |
98 System.exit(-1); | |
99 } | |
100 // read and parse lexfile | |
101 //String lexFile = "/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/duomoData/LEXXDUMP.xml"; | |
102 String lexFile=args[1]; | |
103 LexDumpImporter lexDoc = null; | |
104 try { | |
105 lexDoc = new LexDumpImporter(lexFile); | |
106 } catch (JDOMException e) { | |
107 e.printStackTrace(); | |
108 System.exit(-1); | |
109 } catch (IOException e) { | |
110 System.exit(-1); | |
111 e.printStackTrace(); | |
112 } | |
113 | |
114 // List<Element> cartas = lexDoc.getCartas(); | |
115 // System.out.println(cartas.size()); | |
116 | |
117 LexOWLTransformer tf = new LexOWLTransformer(owlDoc, lexDoc); | |
118 tf.transform(); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
119 //owlDoc.save("file:///tmp/out.owl"); |
0 | 120 } |
121 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
122 /** |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
123 * Hautmethoden zur Transformation |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
124 * @throws URISyntaxException |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
125 * @throws Exception |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
126 */ |
4 | 127 private void transform() throws URISyntaxException, Exception { |
0 | 128 List<Element> signatures = lexDoc.getSignatures(); |
129 | |
130 // Element signature = signatures.get(0); | |
4 | 131 int signatureCount = 0; |
0 | 132 int maxsign = signatures.size(); |
133 for (Element signature : signatures) { | |
134 logger.debug(String.format("Signature: %s (%s)", signatureCount, | |
135 maxsign)); | |
4 | 136 |
137 signatureCount++; | |
138 //if (signatureCount<5 || signatureCount>10) | |
139 // continue; | |
0 | 140 OWLIndividual signatureInd = createSignature(signature); |
141 | |
142 @SuppressWarnings("unchecked") | |
143 List<Element> cards = XPath.selectNodes(signature, ".//carta"); | |
144 int cardsCount = 1; | |
145 int maxcards = cards.size(); | |
146 | |
147 // Element card=cards.get(0); | |
148 for (Element card : cards) { | |
149 logger.debug(String.format("Cards: %s (%s)", cardsCount++, | |
150 maxcards)); | |
151 logger.debug(String.format("Signature: %s (%s)", | |
152 signatureCount, maxsign)); | |
153 OWLIndividual cardInd = createCard(card, signatureInd); | |
154 | |
155 @SuppressWarnings("unchecked") | |
156 List<Element> records = XPath.selectNodes(card, ".//record"); | |
157 for (Element record : records) { | |
158 // Element record = records.get(0); | |
159 OWLIndividual recordInd = createRecord(record, cardInd); | |
160 OWLIndividual recordEvent = createEvent(record, recordInd); // Event | |
161 // und | |
162 // Records | |
163 // sind | |
164 // im | |
165 // Original | |
166 // im | |
167 // record-tag | |
168 } | |
169 } | |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
170 //owlDoc.save("file:///tmp/out"+String.valueOf(signatureCount)+".owl"); |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
171 //logger.debug("Saved:"+"/tmp/out"+String.valueOf(signatureCount)+".owl"); |
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
172 //owlDoc.reloadOWL(); |
0 | 173 } |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
174 owlDoc.printModel(); |
0 | 175 } |
176 | |
177 private OWLIndividual createEvent(Element record, OWLIndividual recordInd) { | |
178 | |
179 logger.debug("Create Event"); | |
180 OWLIndividual eventInstance = owlDoc.createInstance("RecordedEvent"); | |
181 | |
182 owlDoc.setProperty(recordInd, "crm:P70_documents", eventInstance); | |
183 | |
184 // timespan | |
185 | |
186 try { | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
187 String dateDcStart = lexDoc.getValue(record, ".//datrf/startdate"); |
0 | 188 |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
189 String dateDcEnd = lexDoc.getValue(record, ".//datrf/enddate"); |
0 | 190 |
191 if (!dateDcStart.equals("")) { | |
192 OWLIndividual timeSpan = owlDoc.createTimeSpan(dateDcStart, | |
193 dateDcEnd); | |
194 owlDoc.setProperty(eventInstance, "crm:P4_has_time-span", | |
195 timeSpan); | |
196 } | |
197 } catch (JDOMException e) { | |
198 // TODO Auto-generated catch block | |
199 e.printStackTrace(); | |
200 } | |
201 | |
202 // tipol | |
203 String typology; | |
204 try { | |
205 typology = lexDoc.getValue(record, ".//tipol"); | |
206 OWLIndividual typolInd = createOrGetTipol(typology); | |
207 owlDoc.setProperty(eventInstance, "has_tipol", typolInd); | |
208 | |
209 } catch (JDOMException e) { | |
210 // TODO Auto-generated catch block | |
211 e.printStackTrace(); | |
212 } | |
213 | |
214 // reges | |
215 try { | |
216 createNewDependingDataTypePropertyFromXpath(record, eventInstance, | |
217 ".//reges/italian", "has_reges", "it"); | |
218 createNewDependingDataTypePropertyFromXpath(record, eventInstance, | |
219 ".//reges/english", "has_reges", "en"); | |
220 } catch (JDOMException e) { | |
221 // TODO Auto-generated catch block | |
222 e.printStackTrace(); | |
223 } | |
224 | |
225 // nomiq | |
226 | |
227 try { | |
228 @SuppressWarnings("unchecked") | |
229 List<Element> nomiqs = XPath.selectNodes(record, ".//nomiq"); | |
230 OWLIndividual recordNamesRoles = null; | |
231 for (Element nomiq : nomiqs) { | |
232 String name = lexDoc.getValue(nomiq, "./name"); | |
233 String role = lexDoc.getValue(nomiq, "./role"); | |
234 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
235 String provenance = lexDoc.getValue(nomiq, "./name/provenance"); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
236 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
237 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
238 |
0 | 239 if (!name.equals("") && !role.equals("")) { |
240 recordNamesRoles = handleNameWithRole(recordInd, name, role); | |
241 } else if (!role.equals("")) { | |
2 | 242 recordNamesRoles = createOrGetRole(role); |
0 | 243 } else if (!name.equals("")) { |
2 | 244 recordNamesRoles = createOrGetName(name); |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
245 if (provenance!=""){ |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
246 owlDoc.setDataTypePropery(recordNamesRoles, "has_provenance_as_string", provenance, "it"); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
247 } |
0 | 248 } |
249 | |
250 if (recordNamesRoles != null) { | |
251 owlDoc.setProperty(eventInstance, | |
252 "recordsDuomoObjectNameRoles", recordNamesRoles); | |
253 String id = lexDoc.getValue(nomiq, "./@id"); | |
254 individualIds.put(id, recordNamesRoles); | |
255 } | |
256 } | |
257 | |
258 } catch (JDOMException e) { | |
259 // TODO Auto-generated catch block | |
260 e.printStackTrace(); | |
261 } | |
262 | |
263 // istit | |
264 try { | |
7 | 265 String istit = lexDoc.getValue(record, ".//istit"); |
266 if (!istit.equals("")){ | |
0 | 267 OWLIndividual istitInd = owlDoc.getIndividualByReadableId( |
268 "IndicesInstitutions", istit); | |
269 if (istitInd == null) { | |
270 istitInd = createOrGetInstitution(istit); | |
271 } | |
7 | 272 |
0 | 273 |
274 owlDoc.setProperty(eventInstance, "recordsDuomoObjectInstitution", | |
275 istitInd); | |
7 | 276 } |
0 | 277 |
278 } catch (JDOMException e) { | |
279 // TODO Auto-generated catch block | |
280 e.printStackTrace(); | |
281 } | |
282 | |
283 // types | |
284 | |
285 try { | |
286 List<Element> types = XPath.selectNodes(record, ".//type"); | |
287 for (Element type : types) { | |
288 createType(eventInstance, type); | |
289 } | |
290 } catch (JDOMException e) { | |
291 // TODO Auto-generated catch block | |
292 e.printStackTrace(); | |
293 } | |
294 | |
295 return eventInstance; | |
296 } | |
297 | |
298 private void createType(OWLIndividual eventInstance, Element type) { | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
299 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
300 |
0 | 301 String typeId; |
302 try { | |
303 typeId = lexDoc.getValue(type, "./ptr/@target"); | |
304 String clsName = owlDoc.getClassNameFromTypeId(typeId); | |
305 OWLIndividual typeInd = owlDoc.createInstance(clsName); | |
306 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
307 owlDoc.setProperty(eventInstance, "has_topic", typeInd); |
0 | 308 List<Element> freeTexts = XPath.selectNodes(type, "./freetext"); |
309 for (Element freeText : freeTexts) { | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
310 OWLNamedClass cls = owlDoc.getClassFromTypeId(typeId); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
311 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
312 OWLNamedClass subjectClass = getPreferredTargetClass(cls, |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
313 "has_subject"); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
314 OWLNamedClass predicateClass = getPreferredTargetClass(cls, |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
315 "has_predicate"); |
0 | 316 |
317 String subjPointer = lexDoc.getValue(freeText, | |
318 "./sub/ptrtoperson/@target"); | |
319 String subjText = lexDoc.getValue(freeText, "./sub"); | |
320 | |
321 OWLIndividual subjInd = createSubjectOrPredicate(subjectClass, | |
322 subjPointer, subjText); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
323 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
324 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
325 //suche ob eine subpropery von materiaInvolved fuer die die zem Type (type) gehoerige Klasse (clsName) existiert |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
326 // und wenn ja welche, TODO: zur Zeit wird dann aus dem String "subjText" das entsprechende Material erzeugt. |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
327 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
328 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
329 //Collection<RDFProperty> props = cls.getPossibleRDFProperties(); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
330 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
331 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
332 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
333 RDFProperty superproperty= owlDoc.owlModel.getRDFProperty("http://ontologies.mpiwg-berlin.mpg.de/research/duomoAnalysis.owl/materialInvolved"); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
334 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
335 Collection<RDFSClass> sc = cls.getSuperclasses(true); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
336 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
337 OWLNamedClass mat = owlDoc.owlModel.getOWLNamedClass("http://ontologies.mpiwg-berlin.mpg.de/research/duomoAnalysis.owl/DuomoActivities"); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
338 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
339 if (sc.contains(mat)){ // cls is subclass of DuomoActivities |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
340 Collection<RDFProperty> props = superproperty.getSubproperties(false); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
341 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
342 //jetzt suche zu welcher subproperty die classe cls gehšrt |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
343 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
344 //dazu gehe durch alle subproperties von materialInvolved- |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
345 for (RDFProperty prop:props){ |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
346 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
347 @SuppressWarnings("unchecked") |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
348 Collection<RDFSClass> domains = prop.getDomains(true); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
349 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
350 for(RDFSClass domain: domains){ |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
351 //if (domain.getName().equals(cls.getName())) |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
352 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
353 //suche jetzt die domaene zu diesen property in schaue ob die cls eine subklasse davon ist |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
354 if (cls.isSubclassOf(domain)) // cls ist in der domaene der property |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
355 { |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
356 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
357 //die propery muss genau einen wert aus einer festen klasse haben, diese wird jetzt gesucht und dann eine individual erzeugt. |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
358 Collection<AbstractOWLRestriction> restrictions = cls.getRestrictions(prop, false); // suche die restriction und erzeuge dann ein object dieses type |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
359 for (AbstractOWLRestriction restriction: restrictions){ |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
360 if (DefaultOWLAllValuesFrom.class.isInstance(restriction)){ |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
361 DefaultOWLAllValuesFrom rest = (DefaultOWLAllValuesFrom)restriction; |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
362 RDFResource restClass = rest.getAllValuesFrom(); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
363 OWLIndividual inst = owlDoc.createOrGetInstanceWithIdentifier(restClass.getLocalName(), "Identifier", subjText, false); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
364 owlDoc.setProperty(typeInd, prop.getLocalName(), inst); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
365 //materialInd = owlDoc.createInstance(res.getName()); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
366 } |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
367 } |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
368 } |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
369 } |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
370 } |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
371 } |
0 | 372 |
373 String predPointer = lexDoc.getValue(freeText, | |
374 "./pred/ptrtoperson/@target"); | |
375 String predText = lexDoc.getValue(freeText, "./pred"); | |
376 | |
377 OWLIndividual predInd = createSubjectOrPredicate( | |
378 predicateClass, predPointer, predText); | |
379 | |
380 if (subjInd != null) { | |
381 owlDoc.setProperty(typeInd, "has_subject", subjInd); | |
382 } | |
383 | |
384 if (predInd != null) { | |
385 owlDoc.setProperty(typeInd, "has_predicate", predInd); | |
386 } | |
387 | |
388 owlDoc.setProperty(eventInstance, "recordsDuomoObjectConcept", | |
389 typeInd); | |
390 } | |
391 | |
392 } catch (JDOMException e) { | |
393 // TODO Auto-generated catch block | |
394 e.printStackTrace(); | |
395 } | |
396 | |
397 } | |
398 | |
399 private OWLIndividual createSubjectOrPredicate(OWLNamedClass toClass, | |
400 String subjPointer, String subjText) { | |
401 OWLIndividual subjInd = null; | |
402 | |
403 if (!subjPointer.equals("")) { | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
404 subjInd = owlDoc.createInstance(toClass.getName()); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
405 //subjInd = toClass.createOWLIndividual(null); |
0 | 406 OWLIndividual ind = individualIds.get(subjPointer); |
407 if (ind == null) { | |
408 logger.debug("target ID does not exist:" + subjPointer); | |
1 | 409 try { |
410 missing.write("target ID does not exist:" + subjPointer+"\n"); | |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
411 missing.flush(); |
1 | 412 } catch (IOException e) { |
413 // TODO Auto-generated catch block | |
414 e.printStackTrace(); | |
415 } | |
0 | 416 } else { |
417 owlDoc.setProperty(subjInd, "has_NameOrRoleFromIndex", ind); | |
418 } | |
419 } | |
420 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
421 if (!subjText.equals("") & !subjText.equals(" ")) { |
0 | 422 if (subjInd == null) |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
423 subjInd = owlDoc.createInstance(toClass.getName()); |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
424 //subjInd = toClass.createOWLIndividual(null); |
0 | 425 |
426 OWLNamedClass idcls = owlDoc.owlModel | |
427 .getOWLNamedClass("Identifier"); // is die klasse selbst | |
428 // schon ein identifiert | |
429 if (toClass.getNamedSuperclasses(true).contains(idcls)) { // to | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
430 owlDoc.setProperty(subjInd, "rdfs:label", subjText); |
0 | 431 } else { |
432 | |
433 OWLIndividual ident = owlDoc | |
434 .createInstance("IdentifierPredicateOrSubject"); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
435 owlDoc.setProperty(ident, "rdfs:label", subjText); |
0 | 436 owlDoc.setProperty(subjInd, "crm:P48_has_preferred_identifier", |
437 ident); | |
438 } | |
439 } | |
440 return subjInd; | |
441 } | |
442 | |
443 private OWLNamedClass getPreferredTargetClass(OWLNamedClass cls, | |
444 String propertyName) { | |
445 RDFProperty prop = owlDoc.owlModel.getRDFProperty(propertyName); | |
446 | |
447 // finde welche klasse als subject erlaubt ist | |
448 Collection<?> restrictions = cls.getRestrictions(prop, true); | |
449 | |
450 RDFResource restrictionValues = prop.getRange(); // nimm erstmal den | |
451 // gesammten Range | |
452 | |
453 // schaue jetzt nach ob eb es einschraenkungen gibt. | |
454 for (Iterator<?> it = restrictions.iterator(); it.hasNext();) { | |
455 Object restriction = it.next(); | |
456 if (OWLAllValuesFrom.class.isInstance(restriction)) { | |
457 OWLAllValuesFrom ar = (OWLAllValuesFrom) restriction; | |
458 restrictionValues = ar.getAllValuesFrom(); | |
459 break; | |
460 } | |
461 | |
462 } | |
463 OWLNamedClass toClass = null; | |
464 if (OWLNamedClass.class.isInstance(restrictionValues)) { | |
465 toClass = (OWLNamedClass) restrictionValues; | |
466 } else if (OWLDataRange.class.isInstance(restrictionValues)) { | |
467 RDFList dr = ((OWLDataRange) restrictionValues).getOneOf(); | |
468 for (Object d : dr.getValues()) { | |
469 System.out.println(d); | |
470 toClass = (OWLNamedClass) d; | |
471 // FIXME: geht das?? | |
472 } | |
473 } else if (DefaultOWLUnionClass.class.isInstance(restrictionValues)) { // mehr | |
474 // als | |
475 // eine | |
476 // moeglich | |
477 DefaultOWLUnionClass ou = (DefaultOWLUnionClass) restrictionValues; | |
478 Set set = new HashSet(); | |
479 ou.getNestedNamedClasses(set); | |
480 | |
481 for (Iterator<?> it = set.iterator(); it.hasNext();) { | |
482 OWLNamedClass cl = (OWLNamedClass) it.next(); | |
483 OWLNamedClass idcls = owlDoc.owlModel | |
484 .getOWLNamedClass("Identifier"); // nimm die Klasse die | |
485 // ein Identifier | |
486 // ist. | |
487 if (cl.getNamedSuperclasses(true).contains(idcls)) { | |
488 toClass = cl; | |
489 break; | |
490 } | |
491 | |
492 } | |
493 } | |
494 return toClass; | |
495 } | |
496 | |
2 | 497 |
0 | 498 |
499 private OWLIndividual handleNameWithRole(OWLIndividual recordInd, | |
500 String name, String role) { | |
501 // teste ob schon ein solcer Eintrag existiert | |
502 OWLIndividual nameInd = owlDoc.getIndividualByReadableId( | |
503 "IndicesNames", name); | |
504 Boolean createNewNameWithRole = false; | |
505 if (nameInd == null) { | |
506 nameInd = createOrGetName(name); | |
507 createNewNameWithRole = true; // name existierte nicht dann kann | |
508 // auch NameWithRole nicht | |
509 // existierten. | |
510 } | |
511 OWLIndividual roleInd = owlDoc.getIndividualByReadableId( | |
512 "IndicesRoles", role); | |
513 if (roleInd == null) { | |
2 | 514 roleInd = createOrGetRole(role); |
0 | 515 createNewNameWithRole = true; // role existierte nicht dann kann |
516 // auch NameWithRole nicht | |
517 // existierten. | |
518 } | |
519 OWLIndividual nameWithRoleInd = null; | |
520 if (!createNewNameWithRole) { // schon klar, dass er nicht existiert | |
521 nameWithRoleInd = getNameWithRole(nameInd, roleInd); | |
522 } | |
523 | |
524 if (nameWithRoleInd == null) { // existiert nicht | |
525 nameWithRoleInd = createNameWithRole(nameInd, roleInd); | |
526 } | |
527 | |
528 return nameWithRoleInd; | |
529 } | |
530 | |
531 private OWLIndividual getNameWithRole(OWLIndividual nameInd, | |
532 OWLIndividual roleInd) { | |
533 List<OWLIndividual> indicesWithNames = owlDoc.getIndividuals( | |
534 "IndicesNameWithRole", "refers_to_name", nameInd); // suche alle | |
535 // infrage | |
536 // kommenden | |
537 // nameen | |
538 | |
539 if (indicesWithNames == null) { // kein Treffer | |
540 return null; | |
541 } | |
542 | |
543 for (OWLIndividual name : indicesWithNames) { | |
544 Object role = owlDoc.getRelatedIndividual(name, "refers_to_role"); | |
545 if (roleInd.equals(role)) { | |
546 return name; | |
547 } | |
548 } | |
549 return null; | |
550 } | |
551 | |
552 private OWLIndividual createOrGetTipol(String typology) { | |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
553 OWLIndividual tipol = owlDoc.createOrGetInstanceWithIdentifier("Typology","Identifier",typology,false); |
0 | 554 return tipol; |
555 } | |
556 | |
557 private OWLIndividual createNameWithRole(OWLIndividual nameInd, | |
558 OWLIndividual roleInd) { | |
559 | |
560 OWLIndividual nameWithRoleInd = owlDoc | |
561 .createInstance("IndicesNameWithRole"); | |
562 | |
563 owlDoc.setProperty(nameWithRoleInd, "refers_to_name", nameInd); | |
564 owlDoc.setProperty(nameWithRoleInd, "refers_to_role", roleInd); | |
565 | |
566 return nameWithRoleInd; | |
567 | |
568 } | |
569 | |
570 private OWLIndividual createOrGetInstitution(String name) { | |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
571 OWLIndividual nameInd = owlDoc.createOrGetInstanceWithIdentifier("IndicesInstitutions","IdentifierInstitutions",name,false); |
0 | 572 |
573 return nameInd; | |
574 } | |
575 | |
576 private OWLIndividual createOrGetName(String name) { | |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
577 OWLIndividual nameInd = owlDoc.createOrGetInstanceWithIdentifier("IndicesNames","IdentifierNames",name,false); |
0 | 578 return nameInd; |
579 } | |
580 | |
2 | 581 private OWLIndividual createOrGetRole(String name) { |
5
923e73fa07f1
Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents:
4
diff
changeset
|
582 OWLIndividual roleInd = owlDoc.createOrGetInstanceWithIdentifier("IndicesRoles","IdentifierRoles",name,false); |
0 | 583 return roleInd; |
584 } | |
585 | |
586 private OWLIndividual createRecord(Element record, OWLIndividual cardInd) | |
587 throws JDOMException { | |
588 OWLIndividual recordInstance = owlDoc.createInstance("Record"); | |
589 owlDoc.setProperty(recordInstance, "is_on_card", cardInd); | |
590 createNewDependingInstanceFromXpath(record, recordInstance, "./@id", | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
591 new String[] { "rdfs:label" }, |
0 | 592 "IdentifierCurrent", "crm:P48_has_preferred_identifier"); |
593 | |
594 String value = lexDoc.getValue(record, ".//textblockid"); | |
595 if (!value.equals("")) | |
596 owlDoc.setProperty(recordInstance, "has_textblockid", value); | |
597 | |
598 String endOnCarta = lexDoc.getValue(record, "./@end_on_carta"); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
599 |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
600 //FIXME: addRecordToCarta ist buggy. siehe dort! ausserdem wir nicht berŸcksichtig, dass zwischen |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
601 // card und end_on_carta mehr als eine liegen kann, zur Zeit wird nur die carta die in end_on_carta beschrieben wird zu |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
602 // record mittels is_on_card hinzugefŸgt. |
0 | 603 if (!endOnCarta.equals("")) { |
604 OWLIndividual signature = (OWLIndividual) owlDoc | |
605 .getRelatedIndividual(cardInd, "has_signature"); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
606 addRecordToCarta(recordInstance, endOnCarta, signature); |
0 | 607 } |
608 | |
609 String dateDcStart = lexDoc.getValue(record, ".//datdc/startdate"); | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
610 String dateDcEnd = lexDoc.getValue(record, ".//datdc/enddate"); |
0 | 611 |
612 OWLIndividual timeSpan = owlDoc.createTimeSpan(dateDcStart, dateDcEnd); | |
613 | |
614 owlDoc.setProperty(recordInstance, "crm:P4_has_time-span", timeSpan); | |
615 | |
616 return recordInstance; | |
617 } | |
618 | |
619 private void addRecordToCarta(OWLIndividual recordInstance, String cardID, | |
620 OWLIndividual signature) { | |
621 | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
622 //FIXME: cartID ist nur innerhalb einer Signatur eindeutig, d.h. h, es muss die cardID gefunden werden die in der |
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
623 // selben signatur lebt wir "signature" |
0 | 624 OWLIndividual card = owlDoc.getIndividualByReadableId("Card", cardID); |
625 | |
626 if (card == null) { | |
627 card = createCard(cardID, signature); | |
628 } | |
629 | |
630 owlDoc.setProperty(recordInstance, "is_on_card", card); | |
631 } | |
632 | |
633 private OWLIndividual createSignature(Element signature) | |
634 throws JDOMException { | |
635 Element segHeaderElement = (Element) XPath.selectSingleNode(signature, | |
636 ".//segheader"); | |
637 String segheader = segHeaderElement.getTextTrim(); | |
638 | |
639 OWLIndividual signatureInstance = owlDoc.createInstance("Signatur"); | |
9 | 640 |
641 | |
642 OWLIndividual preferredId = owlDoc.createInstance("Identifier"); | |
643 owlDoc.setProperty(preferredId, "rdfs:label", segheader); | |
644 | |
645 owlDoc.setProperty(signatureInstance, "crm:P48_has_preferred_identifier", | |
646 preferredId); | |
647 | |
648 | |
0 | 649 return signatureInstance; |
650 } | |
651 | |
652 private OWLIndividual createCard(String cardId, OWLIndividual signature) { | |
653 | |
654 OWLIndividual cardInstance = owlDoc.createInstance("Card"); | |
655 | |
656 owlDoc.setProperty(cardInstance, "has_signature", signature); | |
657 | |
658 OWLIndividual preferredId = owlDoc.createInstance("IdentifierCurrent"); | |
659 owlDoc.setProperty(preferredId, "rdfs:label", cardId); | |
660 | |
661 owlDoc.setProperty(cardInstance, "crm:P48_has_preferred_identifier", | |
662 preferredId); | |
663 | |
664 return cardInstance; | |
665 } | |
666 | |
667 private OWLIndividual createCard(Element card, OWLIndividual signatureInd) { | |
668 | |
669 OWLIndividual cardInstance = owlDoc.createInstance("Card"); | |
670 | |
671 try { | |
672 | |
673 createNewDependingInstanceFromXpath(card, cardInstance, | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
674 ".//cartanr", new String[] { "rdfs:label" }, "IdentifierCurrent", |
0 | 675 "crm:P48_has_preferred_identifier"); |
676 | |
677 createNewDependingInstanceFromXpath(card, cardInstance, | |
8
919e9f3b5efd
neue klassen zur textanalyse (stanford parser eingebaut)
dwinter
parents:
7
diff
changeset
|
678 ".//cartaant", new String[] { "rdfs:label" }, "IdentifierCurrent", |
0 | 679 "crm:P1_is_identified_by"); |
680 | |
681 owlDoc.setProperty(cardInstance, "has_signature", signatureInd); | |
682 | |
683 } catch (JDOMException e) { | |
684 e.printStackTrace(); | |
685 return null; | |
686 } | |
687 | |
688 return cardInstance; | |
689 } | |
690 | |
691 private void createNewDependingInstanceFromXpath(Element card, | |
692 OWLIndividual cardInstance, String xpath, String[] propertyNames, | |
693 String newInstanceClassName, String relationNameToNewInstance) | |
694 throws JDOMException { | |
695 | |
696 List<?> identifierIdEls = (List<?>) XPath.selectNodes(card, xpath); | |
697 for (Object identifierIdEl : identifierIdEls) { | |
698 String identifierId = ""; | |
699 if (Element.class.isInstance(identifierIdEl)) { | |
700 identifierId = ((Element) identifierIdEl).getTextTrim(); | |
701 } else if (Attribute.class.isInstance(identifierIdEl)) { | |
702 identifierId = ((Attribute) identifierIdEl).getValue(); | |
703 } | |
704 | |
705 OWLIndividual identifier = owlDoc | |
706 .createInstance(newInstanceClassName); | |
707 for (int i = 0; i < propertyNames.length; i++) { | |
708 owlDoc.setProperty(identifier, propertyNames[i], identifierId); | |
709 } | |
710 | |
711 owlDoc.setProperty(cardInstance, relationNameToNewInstance, | |
712 identifier); | |
713 } | |
714 | |
715 } | |
716 | |
717 // createNewDependingDataTypePropertyFromXpath(record, eventInstance, | |
718 // ".//resges/italian", "has_reges", | |
719 // "italian"); | |
720 private void createNewDependingDataTypePropertyFromXpath(Element record, | |
721 OWLIndividual eventInstance, String xpath, String propertyName, | |
722 String lang) throws JDOMException { | |
723 | |
724 List<?> identifierIdEls = (List<?>) XPath.selectNodes(record, xpath); | |
725 for (Object identifierIdEl : identifierIdEls) { | |
726 String identifierId = ""; | |
727 if (Element.class.isInstance(identifierIdEl)) { | |
728 identifierId = ((Element) identifierIdEl).getTextTrim(); | |
729 } else if (Attribute.class.isInstance(identifierIdEl)) { | |
730 identifierId = ((Attribute) identifierIdEl).getValue(); | |
731 } | |
732 | |
733 owlDoc.setDataTypePropery(eventInstance, propertyName, | |
734 identifierId, lang); | |
735 } | |
736 } | |
737 } |