annotate src/de/mpiwg/dwinter/duomo/lexdump/OWLImporter.java @ 5:923e73fa07f1

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