Mercurial > hg > NamedIdentityManager
comparison src/de/mpiwg/itgroup/nimanager/owl/MetaDataHandler.java @ 0:1384a0d382fa
first input
author | dwinter |
---|---|
date | Thu, 30 Jun 2011 11:44:24 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1384a0d382fa |
---|---|
1 package de.mpiwg.itgroup.nimanager.owl; | |
2 | |
3 import java.io.File; | |
4 import java.net.MalformedURLException; | |
5 import java.net.URI; | |
6 import java.net.URISyntaxException; | |
7 import java.util.ArrayList; | |
8 import java.util.Collection; | |
9 import java.util.HashMap; | |
10 import java.util.Iterator; | |
11 import java.util.List; | |
12 import java.util.Map; | |
13 import java.util.Set; | |
14 | |
15 import org.apache.log4j.Logger; | |
16 import org.openrdf.repository.RepositoryException; | |
17 | |
18 import com.hp.hpl.jena.graph.impl.LiteralLabel; | |
19 import com.hp.hpl.jena.util.FileUtils; | |
20 | |
21 import de.mpiwg.itgroup.nimanager.exceptions.TripleStoreHandlerException; | |
22 | |
23 import edu.stanford.smi.protege.exception.OntologyLoadException; | |
24 import edu.stanford.smi.protege.storage.xml.XMLString; | |
25 import edu.stanford.smi.protegex.owl.ProtegeOWL; | |
26 import edu.stanford.smi.protegex.owl.jena.JenaOWLModel; | |
27 import edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator; | |
28 import edu.stanford.smi.protegex.owl.model.OWLIndividual; | |
29 import edu.stanford.smi.protegex.owl.model.OWLModel; | |
30 import edu.stanford.smi.protegex.owl.model.OWLNamedClass; | |
31 import edu.stanford.smi.protegex.owl.model.RDFProperty; | |
32 import edu.stanford.smi.protegex.owl.model.RDFResource; | |
33 import edu.stanford.smi.protegex.owl.model.RDFSNamedClass; | |
34 import edu.stanford.smi.protegex.owl.model.impl.DefaultOWLNamedClass; | |
35 import edu.stanford.smi.protegex.owl.model.impl.DefaultRDFProperty; | |
36 import edu.stanford.smi.protegex.owl.model.impl.DefaultRDFSNamedClass; | |
37 import edu.stanford.smi.protegex.owl.repository.RepositoryManager; | |
38 import edu.stanford.smi.protegex.owl.repository.impl.LocalFolderRepository; | |
39 import edu.stanford.smi.protegex.owl.ui.profiles.OWLProfiles; | |
40 import edu.stanford.smi.protegex.owl.ui.profiles.ProfilesManager; | |
41 | |
42 public class MetaDataHandler { | |
43 | |
44 String ontologieUriString = "file:///Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/NamedIdentityManager/ontologies/namedIdentities.owl"; | |
45 //String rdfUriString = "file:///Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/NamedIdentityManager/ontologies/rdf-schema"; | |
46 String owlFolder = "/Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/NamedIdentityManager/ontologies"; | |
47 | |
48 static MetaDataHandler instance=null; | |
49 | |
50 private JenaOWLModel owlModel; | |
51 | |
52 public JenaOWLModel getOwlModel() { | |
53 return owlModel; | |
54 } | |
55 | |
56 private Logger logger = Logger.getRootLogger(); | |
57 | |
58 public MetaDataHandler() { | |
59 try { | |
60 URI ontologieUri = new URI(ontologieUriString); | |
61 loadOWL(owlFolder, ontologieUri); | |
62 } catch (URISyntaxException e) { | |
63 // TODO Auto-generated catch block | |
64 e.printStackTrace(); | |
65 return; | |
66 } catch (OntologyLoadException e) { | |
67 // TODO Auto-generated catch block | |
68 e.printStackTrace(); | |
69 } | |
70 logger.info("initialized handler"); | |
71 | |
72 } | |
73 | |
74 // public JenaOWLModel createMyJenaOWLModelFromURI(String uri) throws OntologyLoadException { | |
75 // //Collection errors = new ArrayList(); | |
76 // OwlProjectFromUriCreator creator = new OwlProjectFromUriCreator(); | |
77 // creator.setLang(FileUtils. | |
78 // creator.setOntologyUri(uri); | |
79 // //creator.create(errors); | |
80 // JenaOWLModel owlModel = creator.getOwlModel(); | |
81 // //handleErrors(errors); | |
82 // return owlModel; | |
83 // } | |
84 | |
85 public void loadOWL(String folder, URI uri) throws OntologyLoadException { | |
86 //owlModel = ProtegeOWL.createJenaOWLModel(); | |
87 | |
88 owlModel = ProtegeOWL.createJenaOWLModelFromURI(ontologieUriString); | |
89 | |
90 //ProfilesManager.setProfile(owlModel, OWLProfiles.RDFSClass_but_not_OWLClass_Type.getURI()); | |
91 // Load repository | |
92 RepositoryManager rman = owlModel.getRepositoryManager(); | |
93 | |
94 // Add working directory to repository manager. | |
95 File workingDirectory = new File(folder); | |
96 rman.addGlobalRepository(new LocalFolderRepository(workingDirectory)); | |
97 | |
98 LocalFolderRepository localRepository = new LocalFolderRepository(new File("/tmp")); | |
99 rman.addProjectRepository(localRepository); | |
100 | |
101 | |
102 | |
103 | |
104 // Load ontology | |
105 | |
106 //((JenaOWLModel) owlModel).load(uri, "OWL-FULL"); | |
107 } | |
108 | |
109 /** | |
110 * Gibt alle Properties der Klasse zurueck, d.h. auch diejenigen die inferiert werden. | |
111 * @param string | |
112 * @return | |
113 */ | |
114 public Set getAssociatedPropsForClass(String string) { | |
115 | |
116 | |
117 | |
118 OWLNamedClass owlclass; | |
119 try { | |
120 owlclass = (OWLNamedClass) owlModel.getOWLNamedClass(string); | |
121 } catch (Exception e) { | |
122 logger.debug("Problem getting OWLClass, try RDFS later."); | |
123 //wenn eine Klasse sowohl eine RDFS als auch per Zuordnung in der Ontologie eine OWL classe ist, wir hier eine Fehler ausgeworfen: | |
124 //java.lang.ClassCastException: edu.stanford.smi.protegex.owl.model.impl.DefaultRDFSNamedClass cannot be cast to edu.stanford.smi.protegex.owl.model.OWLNamedClass | |
125 //at edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.getOWLNamedClass(Unknown Source) | |
126 owlclass= null; | |
127 } | |
128 | |
129 if (owlclass != null) { | |
130 return owlclass.getAssociatedProperties(); | |
131 } else { | |
132 logger.debug("Cannot find OWLClass:" + string); | |
133 logger.debug("Trying RDFSClass"); | |
134 RDFSNamedClass rdfsclass=(RDFSNamedClass)owlModel.getRDFSNamedClass(string); | |
135 if (rdfsclass != null) { | |
136 return rdfsclass.getAssociatedProperties(); | |
137 } else { | |
138 logger.debug("Cannot find RDFSClass:" + string); | |
139 return null; | |
140 } | |
141 } | |
142 | |
143 | |
144 | |
145 } | |
146 | |
147 /** | |
148 * Gibt alle direkten Properties der angegebenen Klasse zurueck. | |
149 * @param string | |
150 * @return | |
151 */ | |
152 public Collection getDirectPropsForClass(String string, Boolean transitiv) { | |
153 | |
154 | |
155 | |
156 OWLNamedClass owlclass; | |
157 try { | |
158 owlclass = (OWLNamedClass) owlModel.getOWLNamedClass(string); | |
159 } catch (Exception e) { | |
160 logger.debug("Problem getting OWLClass, try RDFS later."); | |
161 //wenn eine Klasse sowohl eine RDFS als auch per Zuordnung in der Ontologie eine OWL classe ist, wir hier eine Fehler ausgeworfen: | |
162 //java.lang.ClassCastException: edu.stanford.smi.protegex.owl.model.impl.DefaultRDFSNamedClass cannot be cast to edu.stanford.smi.protegex.owl.model.OWLNamedClass | |
163 //at edu.stanford.smi.protegex.owl.model.impl.AbstractOWLModel.getOWLNamedClass(Unknown Source) | |
164 owlclass= null; | |
165 } | |
166 | |
167 if (owlclass != null) { | |
168 return owlclass.getUnionDomainProperties(transitiv); | |
169 } else { | |
170 logger.debug("Cannot find OWLClass:" + string); | |
171 logger.debug("Trying RDFSClass"); | |
172 RDFSNamedClass rdfsclass=(RDFSNamedClass)owlModel.getRDFSNamedClass(string); | |
173 if (rdfsclass != null) { | |
174 | |
175 return rdfsclass.getUnionDomainProperties(transitiv); | |
176 } else { | |
177 logger.debug("Cannot find RDFSClass:" + string); | |
178 return null; | |
179 } | |
180 } | |
181 | |
182 | |
183 | |
184 } | |
185 | |
186 | |
187 public List<String> getEquivalentClasses(String string) { | |
188 OWLNamedClass owlclass = (OWLNamedClass) owlModel | |
189 .getOWLNamedClass(string); | |
190 | |
191 List<String> retList = new ArrayList<String>(); | |
192 Collection eqClasses = owlclass.getEquivalentClasses(); | |
193 Iterator it = eqClasses.iterator(); | |
194 while(it.hasNext()){ | |
195 Object cls = it.next(); | |
196 String name = ""; | |
197 if (DefaultOWLNamedClass.class.isInstance(cls)){ | |
198 name=((DefaultOWLNamedClass)cls).getName(); | |
199 } else if (DefaultRDFSNamedClass.class.isInstance(cls)){ | |
200 name=((DefaultRDFSNamedClass)cls).getName(); | |
201 } | |
202 retList.add(name); | |
203 | |
204 } | |
205 | |
206 return retList; | |
207 } | |
208 | |
209 | |
210 public static void main(String args[]) throws RepositoryException, TripleStoreHandlerException { | |
211 TripleStoreHandler th = new TripleStoreHandler("jdbc:virtuoso://virtuoso.mpiwg-berlin.mpg.de:1111", "dba", "dba"); | |
212 MetaDataHandler mh = new MetaDataHandler(); | |
213 | |
214 //Set<DefaultRDFProperty> props= mh.getPropsForClass("http://dbpedia.org/ontology/Person"); | |
215 | |
216 mh.getEquivalentClasses("http://dbpedia.org/ontology/Person"); | |
217 | |
218 //Map<String, String> ret = th.getValues(props,"<http://dbpedia.org/resource/Abraham_Lincoln>"); | |
219 | |
220 //Map<String, String> ret = th.getResources("http://xmlns.com/foaf/0.1/name","Abraham Lincoln","en"); | |
221 //System.out.println(ret); | |
222 } | |
223 | |
224 public OWLIndividual generateEntity(String clsName, Map<String, Object> values) { | |
225 OWLNamedClass owlclass = (OWLNamedClass) owlModel | |
226 .getOWLNamedClass(clsName); | |
227 | |
228 OWLIndividual inst = (OWLIndividual) owlclass.createInstance(null); | |
229 for(String key:values.keySet()){ | |
230 RDFProperty property =owlModel.getRDFProperty(key); | |
231 inst.setPropertyValue(property, values.get(key)); | |
232 | |
233 | |
234 } | |
235 | |
236 return inst; | |
237 } | |
238 | |
239 public OWLIndividual generateEntity(String clsName, String instanceName) { | |
240 OWLNamedClass owlclass = (OWLNamedClass) owlModel | |
241 .getOWLNamedClass(clsName); | |
242 | |
243 OWLIndividual inst = (OWLIndividual) owlclass.createInstance(instanceName); | |
244 | |
245 | |
246 return inst; | |
247 } | |
248 | |
249 public OWLIndividual generateEntity(String clsName, String instanceName, Map<String, Object> values) { | |
250 OWLNamedClass owlclass = (OWLNamedClass) owlModel | |
251 .getOWLNamedClass(clsName); | |
252 | |
253 OWLIndividual inst = (OWLIndividual) owlclass.createInstance(instanceName); | |
254 | |
255 for(String key:values.keySet()){ | |
256 RDFProperty property =owlModel.getRDFProperty(key); | |
257 inst.setPropertyValue(property, values.get(key)); | |
258 | |
259 | |
260 } | |
261 | |
262 return inst; | |
263 } | |
264 | |
265 public void printIndividual(OWLIndividual ind){ | |
266 Collection<RDFProperty> props = ind.getRDFProperties(); | |
267 Iterator<RDFProperty> propsIts = props.iterator(); | |
268 while(propsIts.hasNext()){ | |
269 RDFProperty prop = propsIts.next(); | |
270 System.err.println(prop.getName()+":"+ind.getPropertyValue(prop)); | |
271 } | |
272 } | |
273 | |
274 public static MetaDataHandler getInstance(){ | |
275 | |
276 if (instance==null){ | |
277 instance = new MetaDataHandler(); | |
278 } | |
279 return instance; | |
280 } | |
281 | |
282 | |
283 | |
284 | |
285 } |