From: <sk...@us...> - 2008-03-26 13:41:27
|
Revision: 726 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=726&view=rev Author: sknappe Date: 2008-03-26 06:41:24 -0700 (Wed, 26 Mar 2008) Log Message: ----------- a sparql query is created, that gets all individuals to a given concept Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/Description.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/Description.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2008-03-25 19:11:32 UTC (rev 725) +++ trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2008-03-26 13:41:24 UTC (rev 726) @@ -33,6 +33,7 @@ protected Description parent = null; protected List<Description> children = new LinkedList<Description>(); + protected String sparqlVar = "subject"; public abstract int getArity(); @@ -200,4 +201,12 @@ public abstract String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes); public abstract void accept(DescriptionVisitor visitor); + + public String getSparqlVar() { + return sparqlVar; + } + + public void setSparqlVar(String sparqlVar) { + this.sparqlVar = sparqlVar; + } } Added: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-03-26 13:41:24 UTC (rev 726) @@ -0,0 +1,213 @@ +package org.dllearner.kb.sparql; + + +import org.dllearner.algorithms.gp.ADC; +import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; +import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; +import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; +import org.dllearner.core.owl.DatatypeSomeRestriction; +import org.dllearner.core.owl.DatatypeValueRestriction; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.DescriptionVisitor; +import org.dllearner.core.owl.Intersection; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.Nothing; +import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectExactCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.Union; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; + +/** + * Converter from DL-Learner descriptions to a corresponding SPARQL query + * to get all instances that are described by this description. + * @author Sebastian Knappe + * + */ +public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ + + private String query=""; + + private int currentObject=0; + + public String getSparqlQuery() + { + query="SELECT ?subject\nWHERE {"+query; + query+="}\n"; + query+="LIMIT 5"; + return query; + } + + public static String getSparqlQuery(Description description) + { + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); + description.accept(visitor); + return visitor.getSparqlQuery(); + } + + /** + * Used for testing the Sparql Query converter. + * + * @param args + */ + public static void main(String[] args) { + try { + Description d = KBParser.parseConcept("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); + String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(d); + System.out.println(d); + System.out.println(query); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation) + */ + public void visit(Negation description) { + System.out.println("Negation"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction) + */ + public void visit(ObjectAllRestriction description) { + System.out.println("ObjectAllRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction) + */ + public void visit(ObjectSomeRestriction description) { + System.out.println("ObjectSomeRestriction"); + query+="?"+description.getSparqlVar()+" <"+description.getRole()+"> ?object"+currentObject+"."; + description.getChild(0).setSparqlVar("object"+currentObject); + currentObject++; + description.getChild(0).accept(this); + System.out.println(description.getRole()); + System.out.println(description.getChild(0)); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Nothing) + */ + public void visit(Nothing description) { + System.out.println("Nothing"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing) + */ + public void visit(Thing description) { + System.out.println("Thing"); + + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) + */ + public void visit(Intersection description) { + System.out.println("Intersection"); + description.getChild(0).accept(this); + query+="."; + description.getChild(1).accept(this); + query+="."; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) + */ + public void visit(Union description) { + System.out.println("Union"); + query+="{"; + description.getChild(0).accept(this); + query+="} UNION {"; + description.getChild(1).accept(this); + query+="}"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction) + */ + public void visit(ObjectMinCardinalityRestriction description) { + System.out.println("ObjectMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction) + */ + public void visit(ObjectExactCardinalityRestriction description) { + System.out.println("ObjectExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction) + */ + public void visit(ObjectMaxCardinalityRestriction description) { + System.out.println("ObjectMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction) + */ + public void visit(ObjectValueRestriction description) { + System.out.println("ObjectValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction) + */ + public void visit(DatatypeValueRestriction description) { + System.out.println("DatatypeValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) + */ + public void visit(NamedClass description) { + System.out.println("NamedClass"); + query+="?"+description.getSparqlVar()+" a <"+description.getName()+">"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) + */ + public void visit(ADC description) { + System.out.println("ADC"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction) + */ + public void visit(DatatypeMinCardinalityRestriction description) { + System.out.println("DatatypeMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction) + */ + public void visit(DatatypeExactCardinalityRestriction description) { + System.out.println("DatatypeExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction) + */ + public void visit(DatatypeMaxCardinalityRestriction description) { + System.out.println("DatatypeMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction) + */ + public void visit(DatatypeSomeRestriction description) { + System.out.println("DatatypeSomeRestriction"); + } +} Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-03-25 19:11:32 UTC (rev 725) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-03-26 13:41:24 UTC (rev 726) @@ -56,6 +56,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryException; import org.dllearner.kb.sparql.SparqlQueryThreaded; import org.dllearner.learningproblems.PosNegDefinitionLP; @@ -590,6 +591,13 @@ } @WebMethod + public String getSparqlForConcept(int id) throws ClientNotKnownException { + ClientState state = getState(id); + Description solution=state.getLearningAlgorithm().getBestSolution(); + return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(solution); + } + + @WebMethod public void debug(String deb) { System.out.println(deb); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |