annotate src/de/mpiwg/dwinter/duomo/lexdump/OWLImporter.java @ 7:19e40abb3e8a

bug in istit
author dwinter
date Wed, 09 Feb 2011 16:36:36 +0100
parents 923e73fa07f1
children 919e9f3b5efd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
fb3f3df002df first release
dwinter
parents:
diff changeset
1 package de.mpiwg.dwinter.duomo.lexdump;
fb3f3df002df first release
dwinter
parents:
diff changeset
2
fb3f3df002df first release
dwinter
parents:
diff changeset
3 import java.io.File;
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
4 import java.io.FileWriter;
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
5 import java.io.IOException;
0
fb3f3df002df first release
dwinter
parents:
diff changeset
6 import java.net.URI;
fb3f3df002df first release
dwinter
parents:
diff changeset
7 import java.net.URISyntaxException;
fb3f3df002df first release
dwinter
parents:
diff changeset
8 import java.util.ArrayList;
fb3f3df002df first release
dwinter
parents:
diff changeset
9 import java.util.Collection;
fb3f3df002df first release
dwinter
parents:
diff changeset
10 import java.util.HashMap;
fb3f3df002df first release
dwinter
parents:
diff changeset
11 import java.util.Iterator;
fb3f3df002df first release
dwinter
parents:
diff changeset
12 import java.util.List;
fb3f3df002df first release
dwinter
parents:
diff changeset
13
fb3f3df002df first release
dwinter
parents:
diff changeset
14 import org.apache.log4j.Logger;
fb3f3df002df first release
dwinter
parents:
diff changeset
15
fb3f3df002df first release
dwinter
parents:
diff changeset
16 import edu.stanford.smi.protege.exception.OntologyLoadException;
fb3f3df002df first release
dwinter
parents:
diff changeset
17 import edu.stanford.smi.protegex.owl.ProtegeOWL;
fb3f3df002df first release
dwinter
parents:
diff changeset
18 import edu.stanford.smi.protegex.owl.jena.JenaOWLModel;
fb3f3df002df first release
dwinter
parents:
diff changeset
19 import edu.stanford.smi.protegex.owl.model.OWLClass;
fb3f3df002df first release
dwinter
parents:
diff changeset
20 import edu.stanford.smi.protegex.owl.model.OWLIndividual;
fb3f3df002df first release
dwinter
parents:
diff changeset
21 import edu.stanford.smi.protegex.owl.model.OWLNamedClass;
fb3f3df002df first release
dwinter
parents:
diff changeset
22 import edu.stanford.smi.protegex.owl.model.RDFProperty;
fb3f3df002df first release
dwinter
parents:
diff changeset
23 import edu.stanford.smi.protegex.owl.model.RDFSLiteral;
fb3f3df002df first release
dwinter
parents:
diff changeset
24 import edu.stanford.smi.protegex.owl.repository.RepositoryManager;
fb3f3df002df first release
dwinter
parents:
diff changeset
25 import edu.stanford.smi.protegex.owl.repository.impl.LocalFolderRepository;
fb3f3df002df first release
dwinter
parents:
diff changeset
26
fb3f3df002df first release
dwinter
parents:
diff changeset
27 public class OWLImporter {
fb3f3df002df first release
dwinter
parents:
diff changeset
28
fb3f3df002df first release
dwinter
parents:
diff changeset
29 JenaOWLModel owlModel; // contains the model
fb3f3df002df first release
dwinter
parents:
diff changeset
30 Logger logger = Logger.getRootLogger();
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
31 FileWriter fh;
0
fb3f3df002df first release
dwinter
parents:
diff changeset
32 private HashMap<String, String> typeId2className=null;
fb3f3df002df first release
dwinter
parents:
diff changeset
33 private HashMap<String, OWLNamedClass> typeId2class=null;
4
72004a788198 save single file
dwinter
parents: 3
diff changeset
34 private String ontFolder;
72004a788198 save single file
dwinter
parents: 3
diff changeset
35 private URI uri;
0
fb3f3df002df first release
dwinter
parents:
diff changeset
36
fb3f3df002df first release
dwinter
parents:
diff changeset
37 public OWLImporter(String folder, URI uri) throws OntologyLoadException {
fb3f3df002df first release
dwinter
parents:
diff changeset
38 // owlModel = ProtegeOWL.createJenaOWLModelFromURI(uri);
fb3f3df002df first release
dwinter
parents:
diff changeset
39
4
72004a788198 save single file
dwinter
parents: 3
diff changeset
40 this.ontFolder=folder;
72004a788198 save single file
dwinter
parents: 3
diff changeset
41 this.uri=uri;
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
42 try {
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
43 this.fh= new FileWriter(new File("/tmp/identifier"));
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
44 } catch (IOException e) {
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
45 // TODO Auto-generated catch block
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
46 e.printStackTrace();
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
47 }
4
72004a788198 save single file
dwinter
parents: 3
diff changeset
48 loadOWL(folder, uri);
72004a788198 save single file
dwinter
parents: 3
diff changeset
49 }
72004a788198 save single file
dwinter
parents: 3
diff changeset
50
72004a788198 save single file
dwinter
parents: 3
diff changeset
51 public void reloadOWL() throws OntologyLoadException{
72004a788198 save single file
dwinter
parents: 3
diff changeset
52 loadOWL(ontFolder, uri);
72004a788198 save single file
dwinter
parents: 3
diff changeset
53 }
72004a788198 save single file
dwinter
parents: 3
diff changeset
54
72004a788198 save single file
dwinter
parents: 3
diff changeset
55 public void loadOWL(String folder, URI uri) throws OntologyLoadException {
0
fb3f3df002df first release
dwinter
parents:
diff changeset
56 owlModel = ProtegeOWL.createJenaOWLModel();
fb3f3df002df first release
dwinter
parents:
diff changeset
57 // Load repository
fb3f3df002df first release
dwinter
parents:
diff changeset
58 RepositoryManager rman = owlModel.getRepositoryManager();
fb3f3df002df first release
dwinter
parents:
diff changeset
59
fb3f3df002df first release
dwinter
parents:
diff changeset
60 // Add working directory to repository manager.
fb3f3df002df first release
dwinter
parents:
diff changeset
61 File workingDirectory = new File(folder);
fb3f3df002df first release
dwinter
parents:
diff changeset
62 rman.addGlobalRepository(new LocalFolderRepository(workingDirectory));
fb3f3df002df first release
dwinter
parents:
diff changeset
63 // Load ontology
fb3f3df002df first release
dwinter
parents:
diff changeset
64
fb3f3df002df first release
dwinter
parents:
diff changeset
65 ((JenaOWLModel) owlModel).load(uri, "OWL-DL");
fb3f3df002df first release
dwinter
parents:
diff changeset
66 }
fb3f3df002df first release
dwinter
parents:
diff changeset
67
fb3f3df002df first release
dwinter
parents:
diff changeset
68 /**
fb3f3df002df first release
dwinter
parents:
diff changeset
69 * Drucke das Modell nach stdout
fb3f3df002df first release
dwinter
parents:
diff changeset
70 */
fb3f3df002df first release
dwinter
parents:
diff changeset
71 public void printModel() {
fb3f3df002df first release
dwinter
parents:
diff changeset
72 Collection<?> classes = owlModel.getUserDefinedOWLNamedClasses();
fb3f3df002df first release
dwinter
parents:
diff changeset
73 for (Iterator<?> it = classes.iterator(); it.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
74 OWLNamedClass cls = (OWLNamedClass) it.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
75 Collection<?> instances = cls.getInstances(false);
fb3f3df002df first release
dwinter
parents:
diff changeset
76 System.out.println("Class " + cls.getBrowserText() + " ("
fb3f3df002df first release
dwinter
parents:
diff changeset
77 + instances.size() + ")");
fb3f3df002df first release
dwinter
parents:
diff changeset
78 for (Iterator<?> jt = instances.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
79 OWLIndividual individual = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
80 System.out.println(" - " + individual.getBrowserText());
fb3f3df002df first release
dwinter
parents:
diff changeset
81 }
fb3f3df002df first release
dwinter
parents:
diff changeset
82 }
fb3f3df002df first release
dwinter
parents:
diff changeset
83
fb3f3df002df first release
dwinter
parents:
diff changeset
84 }
fb3f3df002df first release
dwinter
parents:
diff changeset
85
fb3f3df002df first release
dwinter
parents:
diff changeset
86 public static void main(String args[]) throws URISyntaxException {
fb3f3df002df first release
dwinter
parents:
diff changeset
87 String base = "/Users/dwinter/Documents/Projekte/Diss - data-mining/eclipseWorkspace/de.mpiwg.dwinter.duomo/owlInput";
fb3f3df002df first release
dwinter
parents:
diff changeset
88 URI ontologieUri = new URI(
fb3f3df002df first release
dwinter
parents:
diff changeset
89 "file:///Users/dwinter/Documents/Projekte/Diss%20-%20data-mining/eclipseWorkspace/de.mpiwg.dwinter.duomo/owlInput/duomoAnalysis.owl");
fb3f3df002df first release
dwinter
parents:
diff changeset
90 try {
fb3f3df002df first release
dwinter
parents:
diff changeset
91
fb3f3df002df first release
dwinter
parents:
diff changeset
92 OWLImporter im = new OWLImporter(base, ontologieUri);
fb3f3df002df first release
dwinter
parents:
diff changeset
93 im.printModel();
fb3f3df002df first release
dwinter
parents:
diff changeset
94 } catch (OntologyLoadException e) {
fb3f3df002df first release
dwinter
parents:
diff changeset
95 // TODO Auto-generated catch block
fb3f3df002df first release
dwinter
parents:
diff changeset
96 e.printStackTrace();
fb3f3df002df first release
dwinter
parents:
diff changeset
97 }
fb3f3df002df first release
dwinter
parents:
diff changeset
98 }
fb3f3df002df first release
dwinter
parents:
diff changeset
99
fb3f3df002df first release
dwinter
parents:
diff changeset
100 public OWLIndividual createInstance(String string) {
fb3f3df002df first release
dwinter
parents:
diff changeset
101 OWLNamedClass owlclass = (OWLNamedClass) owlModel
fb3f3df002df first release
dwinter
parents:
diff changeset
102 .getOWLNamedClass(string);
fb3f3df002df first release
dwinter
parents:
diff changeset
103
fb3f3df002df first release
dwinter
parents:
diff changeset
104 if (owlclass == null) {
fb3f3df002df first release
dwinter
parents:
diff changeset
105 logger.debug("Cannot find OWLClass:" + string);
fb3f3df002df first release
dwinter
parents:
diff changeset
106 return null;
fb3f3df002df first release
dwinter
parents:
diff changeset
107 }
fb3f3df002df first release
dwinter
parents:
diff changeset
108 //logger.debug("Create new individual of type:"+string);
fb3f3df002df first release
dwinter
parents:
diff changeset
109 return owlclass.createOWLIndividual(null);
fb3f3df002df first release
dwinter
parents:
diff changeset
110
fb3f3df002df first release
dwinter
parents:
diff changeset
111 }
fb3f3df002df first release
dwinter
parents:
diff changeset
112
fb3f3df002df first release
dwinter
parents:
diff changeset
113 public void setProperty(OWLIndividual identifier, String propertyName,
fb3f3df002df first release
dwinter
parents:
diff changeset
114 Object value) {
fb3f3df002df first release
dwinter
parents:
diff changeset
115 RDFProperty prop = owlModel.getRDFProperty(propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
116 identifier.setPropertyValue(prop, value);
fb3f3df002df first release
dwinter
parents:
diff changeset
117
fb3f3df002df first release
dwinter
parents:
diff changeset
118 }
fb3f3df002df first release
dwinter
parents:
diff changeset
119
fb3f3df002df first release
dwinter
parents:
diff changeset
120 public void setDataTypePropery(OWLIndividual eventInstance,
fb3f3df002df first release
dwinter
parents:
diff changeset
121 String propertyName, String value, String lang) {
fb3f3df002df first release
dwinter
parents:
diff changeset
122 RDFProperty prop = owlModel.getRDFProperty(propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
123 // if(OWLDatatypeProperty.class.isInstance(prop)){
fb3f3df002df first release
dwinter
parents:
diff changeset
124 // OWLDatatypeProperty dp = (OWLDatatypeProperty)prop;
fb3f3df002df first release
dwinter
parents:
diff changeset
125 // prop.set
fb3f3df002df first release
dwinter
parents:
diff changeset
126 //
fb3f3df002df first release
dwinter
parents:
diff changeset
127 // } else {
fb3f3df002df first release
dwinter
parents:
diff changeset
128 // logger.error("Is not a datatypeprop:"+propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
129 // }
fb3f3df002df first release
dwinter
parents:
diff changeset
130
fb3f3df002df first release
dwinter
parents:
diff changeset
131
fb3f3df002df first release
dwinter
parents:
diff changeset
132 RDFSLiteral langLiteral = owlModel.createRDFSLiteral(value, lang);
fb3f3df002df first release
dwinter
parents:
diff changeset
133 eventInstance.setPropertyValue(prop, langLiteral);
fb3f3df002df first release
dwinter
parents:
diff changeset
134
fb3f3df002df first release
dwinter
parents:
diff changeset
135
fb3f3df002df first release
dwinter
parents:
diff changeset
136 }
fb3f3df002df first release
dwinter
parents:
diff changeset
137
fb3f3df002df first release
dwinter
parents:
diff changeset
138 public Object getRelatedIndividual(OWLIndividual cardInd,
fb3f3df002df first release
dwinter
parents:
diff changeset
139 String propertyName) {
fb3f3df002df first release
dwinter
parents:
diff changeset
140 RDFProperty prop = owlModel.getRDFProperty(propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
141 if (prop == null) {
fb3f3df002df first release
dwinter
parents:
diff changeset
142 logger.debug("Property does not exist:" + propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
143 }
fb3f3df002df first release
dwinter
parents:
diff changeset
144
fb3f3df002df first release
dwinter
parents:
diff changeset
145 Object value = cardInd.getPropertyValue(prop);
fb3f3df002df first release
dwinter
parents:
diff changeset
146 return value;
fb3f3df002df first release
dwinter
parents:
diff changeset
147 }
fb3f3df002df first release
dwinter
parents:
diff changeset
148
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
149
0
fb3f3df002df first release
dwinter
parents:
diff changeset
150 public OWLIndividual getIndividual(String classNameFrom,
fb3f3df002df first release
dwinter
parents:
diff changeset
151 String propertyNameToClass, String classNameTo,
fb3f3df002df first release
dwinter
parents:
diff changeset
152 String propertyName2, Object value) {
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
153 return getIndividual(classNameFrom,
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
154 propertyNameToClass, classNameTo,
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
155 propertyName2, value, true);
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
156 }
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
157
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
158
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
159 public OWLIndividual getIndividual(String classNameFrom,
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
160 String propertyNameToClass, String classNameTo,
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
161 String propertyName2, Object value,boolean subclasses) {
0
fb3f3df002df first release
dwinter
parents:
diff changeset
162
fb3f3df002df first release
dwinter
parents:
diff changeset
163 RDFProperty prop = owlModel.getRDFProperty(propertyName2);
fb3f3df002df first release
dwinter
parents:
diff changeset
164
fb3f3df002df first release
dwinter
parents:
diff changeset
165 OWLClass classTo = owlModel.getOWLNamedClass(classNameTo);
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
166 Collection<?> instances = classTo.getInstances(subclasses);
0
fb3f3df002df first release
dwinter
parents:
diff changeset
167 OWLIndividual toIv = null;
fb3f3df002df first release
dwinter
parents:
diff changeset
168 // Such individiual mit propertyName2 und Wert value
fb3f3df002df first release
dwinter
parents:
diff changeset
169 for (Iterator<?> jt = instances.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
170 OWLIndividual iv = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
171 Object propVal = iv.getPropertyValue(prop);
fb3f3df002df first release
dwinter
parents:
diff changeset
172
fb3f3df002df first release
dwinter
parents:
diff changeset
173 if (propVal!=null && iv.getPropertyValue(prop).equals(value)) {
fb3f3df002df first release
dwinter
parents:
diff changeset
174 toIv = iv;
fb3f3df002df first release
dwinter
parents:
diff changeset
175 break;
fb3f3df002df first release
dwinter
parents:
diff changeset
176 }
fb3f3df002df first release
dwinter
parents:
diff changeset
177 }
fb3f3df002df first release
dwinter
parents:
diff changeset
178
fb3f3df002df first release
dwinter
parents:
diff changeset
179 // kein treffer
fb3f3df002df first release
dwinter
parents:
diff changeset
180 if (toIv == null)
fb3f3df002df first release
dwinter
parents:
diff changeset
181 return null;
fb3f3df002df first release
dwinter
parents:
diff changeset
182
fb3f3df002df first release
dwinter
parents:
diff changeset
183 // jetzt suche das Invidual, dass mit dieser Instance verbunden ist
fb3f3df002df first release
dwinter
parents:
diff changeset
184 RDFProperty prop2 = owlModel.getRDFProperty(propertyNameToClass);
fb3f3df002df first release
dwinter
parents:
diff changeset
185
fb3f3df002df first release
dwinter
parents:
diff changeset
186 OWLClass classFrom = owlModel.getOWLNamedClass(classNameFrom);
fb3f3df002df first release
dwinter
parents:
diff changeset
187 Collection<?> instancesFrom = classFrom.getInstances(true);
fb3f3df002df first release
dwinter
parents:
diff changeset
188 OWLIndividual fromIv = null;
fb3f3df002df first release
dwinter
parents:
diff changeset
189 // Such individiual mit propertyName2 und Wert value
fb3f3df002df first release
dwinter
parents:
diff changeset
190 for (Iterator<?> jt = instancesFrom.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
191 OWLIndividual iv = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
192 Object propValue = iv.getPropertyValue(prop2);
fb3f3df002df first release
dwinter
parents:
diff changeset
193 if (propValue!=null && iv.getPropertyValue(prop2).equals(toIv)) {
fb3f3df002df first release
dwinter
parents:
diff changeset
194 fromIv = iv;
fb3f3df002df first release
dwinter
parents:
diff changeset
195 break;
fb3f3df002df first release
dwinter
parents:
diff changeset
196 }
fb3f3df002df first release
dwinter
parents:
diff changeset
197 }
fb3f3df002df first release
dwinter
parents:
diff changeset
198
fb3f3df002df first release
dwinter
parents:
diff changeset
199 return fromIv;
fb3f3df002df first release
dwinter
parents:
diff changeset
200 }
fb3f3df002df first release
dwinter
parents:
diff changeset
201
fb3f3df002df first release
dwinter
parents:
diff changeset
202 public List<OWLIndividual> getIndividuals(String classNameFrom,
fb3f3df002df first release
dwinter
parents:
diff changeset
203 String propertyNameToClass, String classNameTo,
fb3f3df002df first release
dwinter
parents:
diff changeset
204 String propertyName2, Object value) {
fb3f3df002df first release
dwinter
parents:
diff changeset
205
fb3f3df002df first release
dwinter
parents:
diff changeset
206 List<OWLIndividual> returnList= new ArrayList<OWLIndividual>();
fb3f3df002df first release
dwinter
parents:
diff changeset
207
fb3f3df002df first release
dwinter
parents:
diff changeset
208 RDFProperty prop = owlModel.getRDFProperty(propertyName2);
fb3f3df002df first release
dwinter
parents:
diff changeset
209
fb3f3df002df first release
dwinter
parents:
diff changeset
210 OWLClass classTo = owlModel.getOWLNamedClass(classNameTo);
fb3f3df002df first release
dwinter
parents:
diff changeset
211 Collection<?> instances = classTo.getInstances(true);
fb3f3df002df first release
dwinter
parents:
diff changeset
212 OWLIndividual toIv = null;
fb3f3df002df first release
dwinter
parents:
diff changeset
213 // Such individiual mit propertyName2 und Wert value
fb3f3df002df first release
dwinter
parents:
diff changeset
214 for (Iterator<?> jt = instances.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
215 OWLIndividual iv = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
216 if (iv.getPropertyValue(prop).equals(value)) {
fb3f3df002df first release
dwinter
parents:
diff changeset
217 toIv = iv;
fb3f3df002df first release
dwinter
parents:
diff changeset
218 break;
fb3f3df002df first release
dwinter
parents:
diff changeset
219 }
fb3f3df002df first release
dwinter
parents:
diff changeset
220 }
fb3f3df002df first release
dwinter
parents:
diff changeset
221
fb3f3df002df first release
dwinter
parents:
diff changeset
222 // kein treffer
fb3f3df002df first release
dwinter
parents:
diff changeset
223 if (toIv == null)
fb3f3df002df first release
dwinter
parents:
diff changeset
224 return null;
fb3f3df002df first release
dwinter
parents:
diff changeset
225
fb3f3df002df first release
dwinter
parents:
diff changeset
226 // jetzt suche das Invidual, dass mit dieser Instance verbunden ist
fb3f3df002df first release
dwinter
parents:
diff changeset
227 RDFProperty prop2 = owlModel.getRDFProperty(propertyNameToClass);
fb3f3df002df first release
dwinter
parents:
diff changeset
228
fb3f3df002df first release
dwinter
parents:
diff changeset
229 OWLClass classFrom = owlModel.getOWLNamedClass(classNameFrom);
fb3f3df002df first release
dwinter
parents:
diff changeset
230 Collection<?> instancesFrom = classFrom.getInstances(true);
fb3f3df002df first release
dwinter
parents:
diff changeset
231 //OWLIndividual fromIv = null;
fb3f3df002df first release
dwinter
parents:
diff changeset
232 // Such individiual mit propertyName2 und Wert value
fb3f3df002df first release
dwinter
parents:
diff changeset
233 for (Iterator<?> jt = instancesFrom.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
234 OWLIndividual iv = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
235 if (iv.getPropertyValue(prop2).equals(toIv)) {
fb3f3df002df first release
dwinter
parents:
diff changeset
236 returnList.add(iv);
fb3f3df002df first release
dwinter
parents:
diff changeset
237 break;
fb3f3df002df first release
dwinter
parents:
diff changeset
238 }
fb3f3df002df first release
dwinter
parents:
diff changeset
239 }
fb3f3df002df first release
dwinter
parents:
diff changeset
240
fb3f3df002df first release
dwinter
parents:
diff changeset
241 return returnList;
fb3f3df002df first release
dwinter
parents:
diff changeset
242 }
fb3f3df002df first release
dwinter
parents:
diff changeset
243
fb3f3df002df first release
dwinter
parents:
diff changeset
244 public List<OWLIndividual> getIndividuals(String className, String propertyName,
fb3f3df002df first release
dwinter
parents:
diff changeset
245 OWLIndividual targetInd) {
fb3f3df002df first release
dwinter
parents:
diff changeset
246 List<OWLIndividual> returnList= new ArrayList<OWLIndividual>();
fb3f3df002df first release
dwinter
parents:
diff changeset
247
fb3f3df002df first release
dwinter
parents:
diff changeset
248 RDFProperty prop = owlModel.getRDFProperty(propertyName);
fb3f3df002df first release
dwinter
parents:
diff changeset
249
fb3f3df002df first release
dwinter
parents:
diff changeset
250 OWLClass cls = owlModel.getOWLNamedClass(className);
fb3f3df002df first release
dwinter
parents:
diff changeset
251
fb3f3df002df first release
dwinter
parents:
diff changeset
252 Collection<?> instances = cls.getInstances(true);
fb3f3df002df first release
dwinter
parents:
diff changeset
253 // Such individiual mit propertyName2 und Wert value
fb3f3df002df first release
dwinter
parents:
diff changeset
254 for (Iterator<?> jt = instances.iterator(); jt.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
255 OWLIndividual iv = (OWLIndividual) jt.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
256 if (iv.getPropertyValue(prop).equals(targetInd)) {
fb3f3df002df first release
dwinter
parents:
diff changeset
257 returnList.add(iv);
fb3f3df002df first release
dwinter
parents:
diff changeset
258
fb3f3df002df first release
dwinter
parents:
diff changeset
259 }
fb3f3df002df first release
dwinter
parents:
diff changeset
260 }
fb3f3df002df first release
dwinter
parents:
diff changeset
261
fb3f3df002df first release
dwinter
parents:
diff changeset
262 return returnList;
fb3f3df002df first release
dwinter
parents:
diff changeset
263 }
fb3f3df002df first release
dwinter
parents:
diff changeset
264
fb3f3df002df first release
dwinter
parents:
diff changeset
265 public OWLIndividual createTimeSpan(String dateDcStart, String dateDcEnd) {
fb3f3df002df first release
dwinter
parents:
diff changeset
266 OWLIndividual timeSpan = createInstance("DatesDocument");
fb3f3df002df first release
dwinter
parents:
diff changeset
267
fb3f3df002df first release
dwinter
parents:
diff changeset
268
fb3f3df002df first release
dwinter
parents:
diff changeset
269
fb3f3df002df first release
dwinter
parents:
diff changeset
270 setProperty(timeSpan, "has_readable_date", dateDcStart);
fb3f3df002df first release
dwinter
parents:
diff changeset
271
fb3f3df002df first release
dwinter
parents:
diff changeset
272 if(!(dateDcEnd==null || dateDcEnd.equals(""))){
fb3f3df002df first release
dwinter
parents:
diff changeset
273 setProperty(timeSpan, "has_readable_to_date", dateDcEnd);
fb3f3df002df first release
dwinter
parents:
diff changeset
274 } else {
fb3f3df002df first release
dwinter
parents:
diff changeset
275 dateDcEnd=dateDcStart;
fb3f3df002df first release
dwinter
parents:
diff changeset
276 }
fb3f3df002df first release
dwinter
parents:
diff changeset
277
fb3f3df002df first release
dwinter
parents:
diff changeset
278 OWLIndividual timeSpanIdentifier = createInstance("Identifier");
fb3f3df002df first release
dwinter
parents:
diff changeset
279 setProperty(timeSpanIdentifier,"has_readable_id",dateDcStart+"-"+dateDcEnd);
fb3f3df002df first release
dwinter
parents:
diff changeset
280
fb3f3df002df first release
dwinter
parents:
diff changeset
281 setProperty(timeSpan,"crm:P48_has_preferred_identifier",timeSpanIdentifier);
fb3f3df002df first release
dwinter
parents:
diff changeset
282
fb3f3df002df first release
dwinter
parents:
diff changeset
283 return timeSpan;
fb3f3df002df first release
dwinter
parents:
diff changeset
284 }
fb3f3df002df first release
dwinter
parents:
diff changeset
285
fb3f3df002df first release
dwinter
parents:
diff changeset
286 public OWLIndividual getIndividualByReadableId(String className,String identifier){
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
287 return getIndividual(className, "crm:P48_has_preferred_identifier", "Identifier", "has_readable_id", identifier, true);
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
288 }
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
289
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
290 public OWLIndividual getIndividualByReadableId(String className,String identifier, String classNameIdentifier,boolean subclassedIdentifier){
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
291 return getIndividual(className, "crm:P48_has_preferred_identifier", classNameIdentifier, "has_readable_id", identifier,subclassedIdentifier);
0
fb3f3df002df first release
dwinter
parents:
diff changeset
292 }
fb3f3df002df first release
dwinter
parents:
diff changeset
293
fb3f3df002df first release
dwinter
parents:
diff changeset
294 public String getClassNameFromTypeId(String typeId) {
fb3f3df002df first release
dwinter
parents:
diff changeset
295 if (typeId2className==null){ // hash nicht angelegt
fb3f3df002df first release
dwinter
parents:
diff changeset
296 createTypeId2classHashes();
fb3f3df002df first release
dwinter
parents:
diff changeset
297 }
fb3f3df002df first release
dwinter
parents:
diff changeset
298
fb3f3df002df first release
dwinter
parents:
diff changeset
299 return typeId2className.get(typeId);
fb3f3df002df first release
dwinter
parents:
diff changeset
300
fb3f3df002df first release
dwinter
parents:
diff changeset
301 }
fb3f3df002df first release
dwinter
parents:
diff changeset
302
fb3f3df002df first release
dwinter
parents:
diff changeset
303 private void createTypeId2classHashes() {
fb3f3df002df first release
dwinter
parents:
diff changeset
304 typeId2className= new HashMap<String,String>();
fb3f3df002df first release
dwinter
parents:
diff changeset
305 typeId2class= new HashMap<String,OWLNamedClass>();
fb3f3df002df first release
dwinter
parents:
diff changeset
306
fb3f3df002df first release
dwinter
parents:
diff changeset
307 Collection<?> classes = owlModel.getUserDefinedOWLNamedClasses();
fb3f3df002df first release
dwinter
parents:
diff changeset
308
fb3f3df002df first release
dwinter
parents:
diff changeset
309 RDFProperty property = owlModel.getRDFProperty("duomoTypeID");
fb3f3df002df first release
dwinter
parents:
diff changeset
310 for (Iterator<?> it = classes.iterator(); it.hasNext();) {
fb3f3df002df first release
dwinter
parents:
diff changeset
311 OWLNamedClass cls = (OWLNamedClass) it.next();
fb3f3df002df first release
dwinter
parents:
diff changeset
312 String tid = (String) cls.getPropertyValue(property);
fb3f3df002df first release
dwinter
parents:
diff changeset
313 if(tid!=null){
fb3f3df002df first release
dwinter
parents:
diff changeset
314 typeId2class.put(tid, cls);
fb3f3df002df first release
dwinter
parents:
diff changeset
315 typeId2className.put(tid, cls.getName());
fb3f3df002df first release
dwinter
parents:
diff changeset
316 logger.debug("Adding to typId2className:"+tid+"---"+cls.getName());
fb3f3df002df first release
dwinter
parents:
diff changeset
317 }
fb3f3df002df first release
dwinter
parents:
diff changeset
318 }
fb3f3df002df first release
dwinter
parents:
diff changeset
319 }
fb3f3df002df first release
dwinter
parents:
diff changeset
320
fb3f3df002df first release
dwinter
parents:
diff changeset
321 public OWLNamedClass getClassFromTypeId(String typeId) {
fb3f3df002df first release
dwinter
parents:
diff changeset
322 if (typeId2className==null){ // hash nicht angelegt
fb3f3df002df first release
dwinter
parents:
diff changeset
323 createTypeId2classHashes();
fb3f3df002df first release
dwinter
parents:
diff changeset
324 }
fb3f3df002df first release
dwinter
parents:
diff changeset
325
fb3f3df002df first release
dwinter
parents:
diff changeset
326 return typeId2class.get(typeId);
fb3f3df002df first release
dwinter
parents:
diff changeset
327 }
fb3f3df002df first release
dwinter
parents:
diff changeset
328
fb3f3df002df first release
dwinter
parents:
diff changeset
329 public void save(String string) throws URISyntaxException, Exception {
fb3f3df002df first release
dwinter
parents:
diff changeset
330 owlModel.save(new URI(string));
fb3f3df002df first release
dwinter
parents:
diff changeset
331
fb3f3df002df first release
dwinter
parents:
diff changeset
332 }
fb3f3df002df first release
dwinter
parents:
diff changeset
333
fb3f3df002df first release
dwinter
parents:
diff changeset
334 public OWLIndividual createOrGetInstanceWithIdentifier(String classNameInstance,
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
335 String classNameIdentifier, String identifier,boolean followSubclasses) {
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
336 OWLIndividual ind = getIndividualByReadableId(classNameInstance, identifier,classNameIdentifier,followSubclasses);
0
fb3f3df002df first release
dwinter
parents:
diff changeset
337 if(ind==null){
fb3f3df002df first release
dwinter
parents:
diff changeset
338 ind = createInstance(classNameInstance);
fb3f3df002df first release
dwinter
parents:
diff changeset
339 OWLIndividual identifierInd = createInstance(classNameIdentifier);
fb3f3df002df first release
dwinter
parents:
diff changeset
340 setProperty(identifierInd, "has_readable_id", identifier);
5
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
341 try {
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
342 fh.write(classNameInstance+" --" +classNameIdentifier+"---"+identifier+"\n");
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
343 fh.flush();
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
344 } catch (IOException e) {
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
345 // TODO Auto-generated catch block
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
346 e.printStackTrace();
923e73fa07f1 Minor changes, Suche nach Objekten nach readableId jetzt einschraenkbar, nicht auf subclassen ausweiten.
dwinter
parents: 4
diff changeset
347 }
0
fb3f3df002df first release
dwinter
parents:
diff changeset
348 setProperty(ind, "crm:P48_has_preferred_identifier",
3
d9fd32ecae24 minor bug identifieer
dwinter
parents: 2
diff changeset
349 identifierInd);
0
fb3f3df002df first release
dwinter
parents:
diff changeset
350 }
2
273164f81926 bug in transformer handleroles
dwinter
parents: 0
diff changeset
351 return ind;
0
fb3f3df002df first release
dwinter
parents:
diff changeset
352 }
7
19e40abb3e8a bug in istit
dwinter
parents: 5
diff changeset
353
19e40abb3e8a bug in istit
dwinter
parents: 5
diff changeset
354
0
fb3f3df002df first release
dwinter
parents:
diff changeset
355 }