|
From: Elmer G. <ega...@us...> - 2004-08-19 14:45:41
|
Update of /cvsroot/javaowl/JavaOWL/src/org/javaowl/editor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17990/src/org/javaowl/editor Modified Files: ModelEditorBean.java ResourceEditorBean.java ModelEditor.java Log Message: more work on remote model Index: ModelEditorBean.java =================================================================== RCS file: /cvsroot/javaowl/JavaOWL/src/org/javaowl/editor/ModelEditorBean.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ModelEditorBean.java 18 Aug 2004 01:23:23 -0000 1.11 --- ModelEditorBean.java 19 Aug 2004 14:45:22 -0000 1.12 *************** *** 44,48 **** --- 44,50 ---- import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Statement; + import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.vocabulary.RDF; + import com.hp.hpl.jena.vocabulary.XSD; public class ModelEditorBean implements ModelEditor { *************** *** 93,97 **** } ! public Set getPropertiesURIs(Resource clazz, boolean all) { List l = new ArrayList(); l.add(clazz.getURI()); --- 95,99 ---- } ! private Set getPropertiesURIs(Resource clazz, boolean all) { List l = new ArrayList(); l.add(clazz.getURI()); *************** *** 113,116 **** --- 115,169 ---- } + //TODO: get all valid Instances for the range intersection and the + // resource restrictions + public OntResource getValidLeafClass(Property property) { + OntProperty op; + if (property instanceof OntProperty) + op = (OntProperty) property; + else + op = ontModel.createOntProperty(property.getURI()); + List list = new ArrayList(); + // TODO: fix this. Many ranges on a property implies an intersection... + for (Iterator it = op.listRange(); it.hasNext();) { + OntResource or = (OntResource) it.next(); + OntClass oc = or.asClass(); + Iterator it2 = oc.listSubClasses(); + if (!it2.hasNext() && !or.getNameSpace().equals(XSD.xstring.getNameSpace())) + list.add(or); + } + if (list.size() > 0) + return (OntResource) list.get(0); + return null; + } + + public OntProperty[] getApplicableProperties(Resource resource) { + Set props = new HashSet(); + InstanceClassification ic = getInstanceClassification(resource); + for (Iterator iter = ic.possibleIterator(); iter.hasNext(); ) { + String uri = (String) iter.next(); + if (ic.isDeclaredClass(uri) || ic.isInferredClass(uri)) { + OntClass resourceClass = ontModel.getOntClass(uri); + props.addAll(getPropertiesURIs(resourceClass, true)); + } + } + OntProperty[] result = new OntProperty[props.size()]; + int i = 0; + for (Iterator iter = props.iterator(); iter.hasNext(); ) { + String uri = (String) iter.next(); + result[i++] = ontModel.getOntProperty(uri); + } + return result; + } + + public Statement[] getDeclaredProperties(Resource resource) { + List resources = new ArrayList(); + for (Iterator it = resource.listProperties(); it.hasNext();) { + Statement stmt = (Statement) it.next(); + if (stmt.getPredicate().getNameSpace().equals(prefix)) + resources.add(stmt); + } + return (Statement[]) resources.toArray(new Statement[0]); + } + public OntProperty[] getProperties(Resource clazz, boolean all) { Set props = getPropertiesURIs(clazz, all); *************** *** 132,136 **** } ! public Resource[] getInstances(OntResource clazz, boolean all) { List resources = new ArrayList(); if (all) { --- 185,189 ---- } ! public Resource[] getInstances(Resource clazz, boolean all) { List resources = new ArrayList(); if (all) { *************** *** 157,160 **** --- 210,241 ---- } + + public InstanceClassification getInstanceClassification(Resource instance) { + EditorReasoner reasoner = new EditorReasoner(); + Model model = ModelFactory.createDefaultModel(); + model.add(ontology); + model.add(data); + try { + reasoner.loadOntology(model); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("instance reasoner exception: ", e); + } + InstanceClassification result = new InstanceClassification(); + Resource modelInstance = data.getResource(instance.getURI()); + for (StmtIterator iter = modelInstance.listProperties(RDF.type); iter.hasNext(); ) + result.addDeclaredClass(iter.nextStatement().getObject().toString()); + OntClass[] classes = getAllClasses(); + for (int i = 0; i < classes.length; i++) { + OntClass oc = classes[i]; + String uri = oc.getURI(); + if (!result.isDeclaredClass(uri) && reasoner.isType(instance, oc)) + result.addInferredClass(uri); + if (result.isDeclaredClass(uri) || result.isInferredClass(uri) || + reasoner.canBeInstanceOf(instance, oc)) + result.addPossibleClass(uri); + } + return result; + } public OntClass getOntClass(Resource resource) { *************** *** 193,218 **** } ! public ResourceEditorBean createResource(OntResource classResource) { Resource r = data.createResource(); r.addProperty(RDF.type, classResource); ! return new ResourceEditorBean(r, prefix, ontModel, this); } ! public ResourceEditorBean createResource(String uri, OntResource classResource) { Resource r = data.createResource(uri); r.addProperty(RDF.type, classResource); ! return new ResourceEditorBean(r, prefix, ontModel, this); } ! public ResourceEditorBean getResource(Resource resource) { ! return new ResourceEditorBean(resource, prefix, ontModel, this); } ! ! public Model getOntology() { ! return ontology; } ! ! public Model getData() { ! return data; } --- 274,303 ---- } ! public ResourceEditorBean createResourceEditor(OntResource classResource) { Resource r = data.createResource(); r.addProperty(RDF.type, classResource); ! return new ResourceEditorBean(r, prefix, ontModel); } ! public ResourceEditorBean createResourceEditor(String uri, OntResource classResource) { Resource r = data.createResource(uri); r.addProperty(RDF.type, classResource); ! return new ResourceEditorBean(r, prefix, ontModel); } ! public ResourceEditorBean getResourceEditor(Resource resource) { ! return new ResourceEditorBean(resource, prefix, ontModel); } ! ! public Resource createResource(OntResource classResource) { ! Resource r = data.createResource(); ! r.addProperty(RDF.type, classResource); ! return r; } ! ! public Resource createResource(String uri, OntResource classResource) { ! Resource r = data.createResource(uri); ! r.addProperty(RDF.type, classResource); ! return r; } Index: ModelEditor.java =================================================================== RCS file: /cvsroot/javaowl/JavaOWL/src/org/javaowl/editor/ModelEditor.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ModelEditor.java 18 Aug 2004 01:23:23 -0000 1.24 --- ModelEditor.java 19 Aug 2004 14:45:31 -0000 1.25 *************** *** 20,24 **** package org.javaowl.editor; - import java.util.Set; import com.hp.hpl.jena.ontology.OntClass; --- 20,23 ---- *************** *** 26,30 **** import com.hp.hpl.jena.ontology.OntResource; import com.hp.hpl.jena.rdf.model.Literal; - import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; --- 25,28 ---- *************** *** 35,45 **** public OntClass[] getAllClasses(); - public Set getPropertiesURIs(Resource clazz, boolean all); - public OntProperty[] getProperties(Resource clazz, boolean all); public OntProperty[] getAllDatatypeProperties(); ! public Resource[] getInstances(OntResource clazz, boolean all); public OntClass getOntClass(Resource resource); --- 33,41 ---- public OntClass[] getAllClasses(); public OntProperty[] getProperties(Resource clazz, boolean all); public OntProperty[] getAllDatatypeProperties(); ! public Resource[] getInstances(Resource clazz, boolean all); public OntClass getOntClass(Resource resource); *************** *** 55,66 **** public OntClass[] getSubClasses(OntClass resourceClass); ! public ResourceEditorBean createResource(OntResource classResource); ! public ResourceEditorBean createResource(String uri, OntResource classResource); ! public ResourceEditorBean getResource(Resource resource); ! public Model getOntology(); - public Model getData(); } --- 51,67 ---- public OntClass[] getSubClasses(OntClass resourceClass); ! public ResourceEditorBean createResourceEditor(OntResource classResource); ! public ResourceEditorBean createResourceEditor(String uri, OntResource classResource); ! public ResourceEditorBean getResourceEditor(Resource resource); ! ! public Resource createResource(OntResource classResource); ! public Resource createResource(String uri, OntResource classResource); ! ! public OntProperty[] getApplicableProperties(Resource resource); ! ! public Statement[] getDeclaredProperties(Resource resource); } Index: ResourceEditorBean.java =================================================================== RCS file: /cvsroot/javaowl/JavaOWL/src/org/javaowl/editor/ResourceEditorBean.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ResourceEditorBean.java 18 Aug 2004 01:23:23 -0000 1.7 --- ResourceEditorBean.java 19 Aug 2004 14:45:31 -0000 1.8 *************** *** 21,30 **** import java.util.ArrayList; - import java.util.HashSet; import java.util.Iterator; import java.util.List; - import java.util.Set; - - import org.javaowl.editor.reasoner.EditorReasoner; import com.hp.hpl.jena.ontology.Individual; --- 21,26 ---- *************** *** 33,44 **** import com.hp.hpl.jena.ontology.OntProperty; import com.hp.hpl.jena.ontology.OntResource; ! import com.hp.hpl.jena.rdf.model.Model; ! import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Statement; - import com.hp.hpl.jena.rdf.model.Literal; - import com.hp.hpl.jena.rdf.model.StmtIterator; - import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; import com.hp.hpl.jena.vocabulary.XSD; --- 29,36 ---- import com.hp.hpl.jena.ontology.OntProperty; import com.hp.hpl.jena.ontology.OntResource; ! import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.vocabulary.RDFS; import com.hp.hpl.jena.vocabulary.XSD; *************** *** 52,65 **** private final OntModel ontModel; - private final ModelEditorBean modelEditor; ! public ResourceEditorBean(Resource resource, String prefix, OntModel ontModel, ! ModelEditorBean modelEditor) { this.prefix = prefix; this.resource = resource; this.ontModel = ontModel; - this.modelEditor = modelEditor; ! InstanceClassification ic = getInstanceClassification(resource); for (Iterator it = ic.possibleIterator(); it.hasNext(); ) { String uri = (String) it.next(); --- 44,54 ---- private final OntModel ontModel; ! public ResourceEditorBean(Resource resource, String prefix, OntModel ontModel) { this.prefix = prefix; this.resource = resource; this.ontModel = ontModel; ! /*InstanceClassification ic = getInstanceClassification(resource); for (Iterator it = ic.possibleIterator(); it.hasNext(); ) { String uri = (String) it.next(); *************** *** 67,71 **** System.out.print(ic.isInferredClass(uri) ? "I" : "-"); System.out.println(" " + uri); ! } } --- 56,60 ---- System.out.print(ic.isInferredClass(uri) ? "I" : "-"); System.out.println(" " + uri); ! }*/ } *************** *** 73,160 **** return resource; } - - public OntProperty[] getApplicableProperties() { - Set props = new HashSet(); - InstanceClassification ic = getInstanceClassification(resource); - for (Iterator iter = ic.possibleIterator(); iter.hasNext(); ) { - String uri = (String) iter.next(); - if (ic.isDeclaredClass(uri) || ic.isInferredClass(uri)) { - OntClass resourceClass = ontModel.getOntClass(uri); - props.addAll(modelEditor.getPropertiesURIs(resourceClass, true)); - } - } - OntProperty[] result = new OntProperty[props.size()]; - int i = 0; - for (Iterator iter = props.iterator(); iter.hasNext(); ) { - String uri = (String) iter.next(); - result[i++] = ontModel.getOntProperty(uri); - } - return result; - } - public Statement[] getDeclaredProperties() { - List resources = new ArrayList(); - for (Iterator it = resource.listProperties(); it.hasNext();) { - Statement stmt = (Statement) it.next(); - if (stmt.getPredicate().getNameSpace().equals(prefix)) - resources.add(stmt); - } - return (Statement[]) resources.toArray(new Statement[0]); - } - public boolean isRequiredProperty(OntProperty property) { return false; } ! ! //TODO: get all valid Instances for the range intersection and the ! // resource restrictions ! public OntResource getValidLeafClass(Property property) { ! OntProperty op; ! if (property instanceof OntProperty) ! op = (OntProperty) property; ! else ! op = ontModel.createOntProperty(property.getURI()); ! List list = new ArrayList(); ! // TODO: fix this. Many ranges on a property implies an intersection... ! for (Iterator it = op.listRange(); it.hasNext();) { ! OntResource or = (OntResource) it.next(); ! OntClass oc = or.asClass(); ! Iterator it2 = oc.listSubClasses(); ! if (!it2.hasNext() && !or.getNameSpace().equals(XSD.xstring.getNameSpace())) ! list.add(or); ! } ! if (list.size() > 0) ! return (OntResource) list.get(0); ! return null; ! } ! ! public InstanceClassification getInstanceClassification(Resource instance) { ! EditorReasoner reasoner = new EditorReasoner(); ! Model model = ModelFactory.createDefaultModel(); ! model.add(modelEditor.getOntology()); ! model.add(modelEditor.getData()); ! try { ! reasoner.loadOntology(model); ! } catch (Exception e) { ! e.printStackTrace(); ! throw new RuntimeException("instance reasoner exception: ", e); ! } ! InstanceClassification result = new InstanceClassification(); ! Resource modelInstance = modelEditor.getData().getResource(instance.getURI()); ! for (StmtIterator iter = modelInstance.listProperties(RDF.type); iter.hasNext(); ) ! result.addDeclaredClass(iter.nextStatement().getObject().toString()); ! OntClass[] classes = modelEditor.getAllClasses(); ! for (int i = 0; i < classes.length; i++) { ! OntClass oc = classes[i]; ! String uri = oc.getURI(); ! if (!result.isDeclaredClass(uri) && reasoner.isType(instance, oc)) ! result.addInferredClass(uri); ! if (result.isDeclaredClass(uri) || result.isInferredClass(uri) || ! reasoner.canBeInstanceOf(instance, oc)) ! result.addPossibleClass(uri); ! } ! return result; ! } ! public Individual[] getValidObjects(OntResource resource) { List resources = new ArrayList(); --- 62,70 ---- return resource; } public boolean isRequiredProperty(OntProperty property) { return false; } ! public Individual[] getValidObjects(OntResource resource) { List resources = new ArrayList(); |