From: <ku...@us...> - 2008-09-29 18:43:34
|
Revision: 1308 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1308&view=rev Author: kurzum Date: 2008-09-29 18:43:02 +0000 (Mon, 29 Sep 2008) Log Message: ----------- more fixes domain range of datatypeproperties Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -46,7 +46,8 @@ public int getBNodeId(){ return bNodeId; } - //RBC + + @Override public String toString(){ //RBC Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -84,7 +84,8 @@ @Override public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ SortedSet<RDFNodeTuple> ret = retrieveTupel(uri); - disambiguateBlankNodes(uri, ret); + //the next line is not necessary + //disambiguateBlankNodes(uri, ret); return ret; } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -74,6 +74,7 @@ } private Node processTuple( RDFNodeTuple tuple, boolean dissolveBlankNodes) { + try { String property = tuple.a.toString(); if(tuple.b.isLiteral()) { @@ -101,7 +102,7 @@ // further expansion stops here ClassNode tmp = new ClassNode(tuple.b.toString()); classProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp)); - // return tmp; is missing on purpose + return tmp; //is missing on purpose } } catch (Exception e) { logger.warn("Problem with: " + this + " in tuple " + tuple); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -19,14 +19,23 @@ */ package org.dllearner.kb.extraction; +import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.kb.aquisitors.RDFBlankNode; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; +import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataProperty; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDescription; /** * Property node, has connection to a and b part @@ -37,6 +46,11 @@ public class DatatypePropertyNode extends PropertyNode { + // specialtypes like owl:symmetricproperty + private SortedSet<String> specialTypes = new TreeSet<String>(); + private SortedSet<RDFNodeTuple> propertyInformation = new TreeSet<RDFNodeTuple>(); + private List<BlankNode> blankNodes = new ArrayList<BlankNode>(); + public DatatypePropertyNode(String uri, Node a, LiteralNode b) { super(uri, a, b); } @@ -51,7 +65,38 @@ // gets the types for properties recursively @Override public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { - return new ArrayList<BlankNode>(); + List<BlankNode> ret = new ArrayList<BlankNode>(); + //ret.addAll(b.expandProperties(tupelAquisitor, manipulator)); + SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); + + for (RDFNodeTuple tuple : newTypes) { + try { + if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) { + if(!tuple.b.toString().equals(OWLVocabulary.OWL_DATATYPPROPERTY)){ + specialTypes.add(tuple.b.toString()); + } + }else if(tuple.b.isAnon()){ + + if(tupelAquisitor.isDissolveBlankNodes()){ + RDFBlankNode n = (RDFBlankNode) tuple.b; + BlankNode tmp = new BlankNode( n, tuple.a.toString()); + //add it to the graph + blankNodes.add(tmp); + ret.add( tmp); + } + + }else{ + + propertyInformation.add(tuple); + + } + } catch (Exception e) { + logger.warn("resource "+uri+" with "+ tuple); + e.printStackTrace(); + } + + } + return ret; } @Override @@ -75,6 +120,42 @@ @Override public void toOWLOntology( OWLAPIOntologyCollector owlAPIOntologyCollector){ + + OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); + OWLDataProperty me =factory.getOWLDataProperty(getURI()); + + for (RDFNodeTuple one : propertyInformation) { + + + if(one.aPartContains(OWLVocabulary.RDFS_range)){ + //System.out.println(me + one.b.toString()); + OWLDataRange o = factory.getOWLDataType(URI.create(one.b.toString())); + OWLAxiom ax = factory.getOWLDataPropertyRangeAxiom(me, o); + owlAPIOntologyCollector.addAxiom(ax); + //XXX implement + //OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); + //owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyRangeAxiom(propery, owlDataRange)(me, c)); + }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyDomainAxiom(me, c)); + } + } + + + for (BlankNode bn : blankNodes) { + OWLDescription target = bn.getAnonymousClass(owlAPIOntologyCollector); + if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_range)){ + + //XXX implement + //owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, target)); + }else if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_domain)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyDomainAxiom(me, target)); + + } + //System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + } + + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -131,10 +131,15 @@ if(configuration.isGetPropertyInformation() ){ Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetPropertyInformation").start(); - List<ObjectPropertyNode> l = getObjectPropertyNodes(collectNodes); - for (ObjectPropertyNode node : l) { + List<ObjectPropertyNode> objectProperties = getObjectPropertyNodes(collectNodes); + for (ObjectPropertyNode node : objectProperties) { collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); } + List<DatatypePropertyNode> datatypeProperties = getDatatypeProperties(collectNodes); + for (DatatypePropertyNode node : datatypeProperties) { + collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); + //System.out.println(node+""+collectNodes.size()); + } m.stop(); } @@ -195,14 +200,18 @@ while (!newClasses.isEmpty() ) { logger.trace("Remaining classes: " + newClasses.size()); Node next = newClasses.remove(0); + logger.trace("Getting Superclasses for: " + next); if (!alreadyQueriedSuperClasses.contains(next.getURIString().toString())) { logger.trace("" + next+" not in cache retrieving"); alreadyQueriedSuperClasses.add(next.getURIString().toString()); tupelAquisitor.setNextTaskToClassInformation(); + newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); + + if (i > configuration.getBreakSuperClassesAfter()) { break; }//endinnerif @@ -267,5 +276,17 @@ } return properties; } + + public static List<DatatypePropertyNode> getDatatypeProperties(List<Node> l ){ + List<DatatypePropertyNode> properties = new ArrayList<DatatypePropertyNode>(); + for (Node node : l) { + if (node instanceof InstanceNode) { + properties.addAll(( (InstanceNode) node).getDatatypePropertyNode()); + + } + + } + return properties; + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -87,11 +87,9 @@ datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); return null; }else if(tuple.b.isAnon()){ + @SuppressWarnings("unused") RDFBlankNode n = (RDFBlankNode) tuple.b; - //RBC - System.out.println(n.getBNodeId()); - System.exit(0); - logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple); + logger.warn("encountered Bnode in InstanceNode"+ this +"in tuple" + tuple); return null; // basically : if p is rdf:type then o is a class @@ -119,6 +117,10 @@ for (ObjectPropertyNode one : objectProperties) { ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); } + + for (DatatypePropertyNode one : datatypeProperties) { + ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); + } return ret; } @@ -163,12 +165,21 @@ one.toOWLOntology(owlAPIOntologyCollector); } for (ObjectPropertyNode one : objectProperties) { - //create axiom - OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); - OWLObjectProperty p = factory.getOWLObjectProperty(one.getURI()); - OWLAxiom ax = factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + OWLAxiom ax = null; + if(one.getURIString().equals(OWLVocabulary.OWL_DIFFERENT_FROM)){ + OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); + + ax = factory.getOWLDifferentIndividualsAxiom(new OWLIndividual[]{me,o}); + }else{ + + //create axiom + OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); + OWLObjectProperty p = factory.getOWLObjectProperty(one.getURI()); + ax = factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + } //collect owlAPIOntologyCollector.addAxiom(ax); + //handover one.toOWLOntology(owlAPIOntologyCollector); one.getBPart().toOWLOntology(owlAPIOntologyCollector); @@ -179,26 +190,32 @@ Literal ln = one.getBPart().getLiteral(); try{ - if(one.getBPart().isString()){ + + if(one.getBPart().isFloat()){ owlAPIOntologyCollector.addAxiom( - factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); - + factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getFloat())); } else if(one.getBPart().isDouble()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getDouble())); - } else if(one.getBPart().isFloat()){ - owlAPIOntologyCollector.addAxiom( - factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getFloat())); } else if(one.getBPart().isInt()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getInt())); } else if(one.getBPart().isBoolean()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getBoolean())); - } else { + }else if(one.getBPart().isString()){ + //System.out.println(ln.getString()+" "+one.getBPart().isBoolean()); + owlAPIOntologyCollector.addAxiom( + factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); + + } + + else { tail(getURIString()+"||"+one.getURIString()); } + //handover + one.toOWLOntology(owlAPIOntologyCollector); }catch (Exception e) { e.printStackTrace(); @@ -216,6 +233,10 @@ return objectProperties; } + public List<DatatypePropertyNode> getDatatypePropertyNode() { + return datatypeProperties; + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -104,17 +104,33 @@ public boolean isDouble(){ try{ + if(l.getDatatypeURI().contains("double")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + }/* + try{ l.getDouble(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isFloat(){ try{ - l.getFloat(); - return true; + if(l.getDatatypeURI().contains("float")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; }catch (Exception e) { return false; } @@ -122,20 +138,45 @@ public boolean isInt(){ try{ + if(l.getDatatypeURI().contains("int")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + } + + + /*try{ l.getInt(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isBoolean(){ try{ + if(l.getDatatypeURI().contains("boolean")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + } + + /*try{ l.getBoolean(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isString(){ Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -52,9 +52,8 @@ // specialtypes like owl:symmetricproperty private SortedSet<String> specialTypes = new TreeSet<String>(); - @SuppressWarnings("unused") private SortedSet<RDFNodeTuple> propertyInformation = new TreeSet<RDFNodeTuple>(); - List<BlankNode> blankNodes = new ArrayList<BlankNode>(); + private List<BlankNode> blankNodes = new ArrayList<BlankNode>(); public ObjectPropertyNode(String propertyURI, Node a, Node b) { super(propertyURI, a, b); @@ -131,11 +130,13 @@ OWLObjectProperty me =factory.getOWLObjectProperty(getURI()); for (RDFNodeTuple one : propertyInformation) { - OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); + if(one.aPartContains(OWLVocabulary.RDFS_range)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyDomainAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_SUB_PROPERTY_OF)){ OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -66,8 +66,7 @@ keep.add(tuple); }else{ logJamon(); - //RBC - logger.debug("for "+ subject+ " removed tuple: "+tuple); + //logger.debug("for "+ subject+ " removed tuple: "+tuple); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -73,7 +73,7 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - //RBC + private static final boolean debug = false; //private static final boolean threaded = debug && true ; Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -95,7 +95,7 @@ private static String tmpFilename = dir + "tmp.conf"; //static File log = new File(dir+"results+prop.txt"); //private static String tableFile = tableDir+"sembib.table"; - private static String tableLatex = tableDir+"sembibLatex.table"; + //private static String tableLatex = tableDir+"sembibLatex.table"; private static Stat accFragment = new Stat(); private static Stat accOnOnto = new Stat(); @@ -313,6 +313,13 @@ } }//end for + String tmp=""; + tmp+="NOT: "+descHasNot+"|"; + tmp+="ALL: "+descHasAll+"|"; + tmp+="Bool: "+descHasBooleanData+"|"; + tmp+="NRRes: "+descHasNrRes+""; + logger.warn(tmp); + writeJamonLog(dir+"jamon"+exp+".html"); reinitStat(); }//endconduct Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -41,6 +41,8 @@ public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs"; + public static final String OWL_DIFFERENT_FROM = "http://www.w3.org/2002/07/owl#differentFrom"; + public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty"; public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty"; public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |