From: <chr...@us...> - 2011-12-19 16:07:22
|
Revision: 3510 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3510&view=rev Author: christinaunger Date: 2011-12-19 16:07:11 +0000 (Mon, 19 Dec 2011) Log Message: ----------- [tbsl] corrections in BasicTemplate building Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Path.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java 2011-12-19 14:55:37 UTC (rev 3509) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java 2011-12-19 16:07:11 UTC (rev 3510) @@ -19,9 +19,11 @@ import org.dllearner.algorithm.tbsl.sparql.SPARQL_OrderBy; import org.dllearner.algorithm.tbsl.sparql.SPARQL_Pair; import org.dllearner.algorithm.tbsl.sparql.SPARQL_PairType; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Prefix; import org.dllearner.algorithm.tbsl.sparql.SPARQL_Property; import org.dllearner.algorithm.tbsl.sparql.SPARQL_QueryType; import org.dllearner.algorithm.tbsl.sparql.SPARQL_Term; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Triple; import org.dllearner.algorithm.tbsl.sparql.Slot; import org.dllearner.algorithm.tbsl.sparql.SlotType; @@ -120,6 +122,14 @@ for (DRS_Condition cond : scope.getConditions()) { temp = convertCondition(cond,temp); } + // preserve marked referents from restrictor and scope + Set<DiscourseReferent> tokeep = restrictor.collectDRs(); + tokeep.addAll(scope.collectDRs()); + for (DiscourseReferent dr : tokeep) { + if (dr.isMarked()) { + temp.addSelTerm(new SPARQL_Term(dr.getValue())); + } + } // add the quantifier at last DiscourseReferent ref = complex.getReferent(); String sref = ref.getValue(); @@ -165,7 +175,7 @@ } else { Simple_DRS_Condition simple = (Simple_DRS_Condition) condition; - + String predicate = simple.getPredicate(); if (predicate.startsWith("SLOT")) { for (Slot s : slots) { @@ -287,6 +297,28 @@ SPARQL_PairType.EQ))); return temp; } + else if (predicate.equals("DATE")) { + temp.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term("'^"+simple.getArguments().get(1).getValue()+"'",true), + SPARQL_PairType.REGEX))); + } + else if (predicate.equals("regex")) { + temp.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),true), + SPARQL_PairType.REGEX))); + } + else if (predicate.equals("ISA")) { + temp.addConditions(new Path(simple.getArguments().get(0).getValue(),"isA",simple.getArguments().get(1).getValue())); + } +// else { +// if (simple.getArguments().size() == 1) { +// temp.addConditions(new Path(simple.getArguments().get(0).getValue(),"rdf:type",simple.getPredicate())); +// } +// } } return temp; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-12-19 14:55:37 UTC (rev 3509) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-12-19 16:07:11 UTC (rev 3510) @@ -63,6 +63,7 @@ * x/RBR adj/JJ > adj/JJR, x/RBS adj/JJ > adj/JJS, x/WRB adj/JJ > x/JJH * nn/RBR of/IN > nn/NPREP * usw. + * Note: Matching these patterns is order-dependent! * */ String condensedstring = taggedstring.replaceAll("``/``","").replaceAll("''/''","").replaceAll(" "," "); Matcher m; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Path.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Path.java 2011-12-19 14:55:37 UTC (rev 3509) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Path.java 2011-12-19 16:07:11 UTC (rev 3510) @@ -28,11 +28,14 @@ } public String toString() { + String v; + if (via.equals("isA")) v = via; else v = "?"+via; + if (via.isEmpty()) { return "?" + start + " -- " + "?" + target; } else { - return "?" + start + " -- ?" + via + " -- ?" + target; + return "?" + start + " -- " + v + " -- ?" + target; } } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java 2011-12-19 14:55:37 UTC (rev 3509) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java 2011-12-19 16:07:11 UTC (rev 3510) @@ -59,19 +59,19 @@ /* DP */ String[] dpEntry1 = {token, "(DP (NP " + treetoken + "))", - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ x,p | SLOT_" + tokenfluent + "(p), ISA(x,p) ] ],[],[],[" + slot + "]>"}; String[] dpEntry2 = {token, "(DP (NP " + treetoken + " DP[name]))", - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ x,p | SLOT_" + tokenfluent + "(p), ISA(x,p), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; result.add(dpEntry1); result.add(dpEntry2); /* NP */ String[] npEntry1 = {token, "(NP " + treetoken + ")", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ p | SLOT_" + tokenfluent + "(p), ISA(x,p) ] ],[],[],[" + slot + "]>"}; String[] npEntry2 = {token, "(NP " + treetoken + " DP[name])", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ p | SLOT_" + tokenfluent + "(p), ISA(x,p), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; result.add(npEntry1); result.add(npEntry2); } @@ -89,13 +89,13 @@ else if (pos.equals("NPREP")) { String[] dpEntry1 = {token, "(DP (NP " + treetoken + " DP[pobj]))", - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(p), p(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; String[] dpEntry2 = {token, "(DP DET[det] (NP " + treetoken + " DP[pobj]))", - "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(p), p(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>"}; String[] npEntry = {token, "(NP " + treetoken + " DP[pobj])", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(p), p(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; result.add(dpEntry1); result.add(dpEntry2); result.add(npEntry); @@ -116,10 +116,10 @@ result.add(npEntry); } else if(pos.equals("JJNN") && token.contains("_")) { - slot = "SLOT_" + tokenfluent + "/USNPEC/" + token; + slot = "SLOT_" + tokenfluent + "/UNSPEC/" + token; String[] npEntry = {token, "(NP " + treetoken + " )", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ p | SLOT_" + tokenfluent + "(p), ISA(x,p) ] ],[],[],[" + slot + "]>"}; result.add(npEntry); } @@ -160,10 +160,14 @@ result.add(passEntry); } else if (pos.equals("VPASSIN")) { - String[] passEntry = {token, + String[] passEntry1 = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", "<x,l1,t,[ l1:[|], l4:[ p | SLOT_" + token + "(p), p(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; - result.add(passEntry); + String[] passEntry2 = {token, + "(S DP[dp] (VP V:'" + token + "' NUM[num]))", + "<x,l1,t,[ l1:[|], l4:[ p | SLOT_" + token + "(p), p(y,z) ] ],[(l2,x,dp,<<e,t>,t>),(l3,z,num,e)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry1); + result.add(passEntry2); } else if (pos.equals("GERUNDIN")) { String[] gerundinEntry1 = {token, @@ -178,15 +182,19 @@ result.add(gerundinEntry2); } else if (pos.equals("VPREP")) { - String[] passEntry = {token, + String[] passEntry1 = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", "<x,l1,t,[ l1:[|], l4:[ p | SLOT_" + token + "(p), p(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>" + " ;; <x,l1,t,[ l1:[|], l4:[ | empty(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[]>"}; + String[] passEntry2 = {token, + "(S DP[subj] (VP V:'" + token + "' NUM[num]))", + "<x,l1,t,[ l1:[|], l4:[ p | SLOT_" + token + "(p), p(x,y), DATE(y,z) ] ],[(l2,x,subj,<<e,t>,t>),(l3,z,num,e)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; String[] whEntry = {token, "(S DP[obj] (VP DP[subj] V:'" + token + "'))", "<x,l1,t,[ l1:[|], l4:[ p | SLOT_" + token + "(p), p(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>" + " ;; <x,l1,t,[ l1:[|], l4:[ | empty(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[]>"}; - result.add(passEntry); + result.add(passEntry1); + result.add(passEntry2); result.add(whEntry); } else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP")) { @@ -239,13 +247,13 @@ if (pos.equals("JJ")) { String[] adjEntry = {token, "(NP ADJ:'" + token.toLowerCase() + "' NP*)", - "<x,l1,<e,t>,[ l1:[ j | SLOT_" + token + "(j) ] ],[],[],["+slot+"]>"}; + "<x,l1,<e,t>,[ l1:[ j | SLOT_" + token + "(p), p(x,j) ] ],[],[],["+slot+"]>"}; result.add(adjEntry); } if (pos.equals("JJH")) { String[] howEntry = {"how "+token, "(DP ADJ:'" + token.toLowerCase() + "')", - "<x,l1,<<e,t>,t>,[ l1:[ ?j,x | SLOT_" + token + "(j) ] ],[],[],["+slot+"]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ ?j,x,p | SLOT_" + token + "(p), p(x,j) ] ],[],[],["+slot+"]>"}; result.add(howEntry); } /* COMPARATIVE */ Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-12-19 14:55:37 UTC (rev 3509) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-12-19 16:07:11 UTC (rev 3510) @@ -29,6 +29,21 @@ if (s.equals(":q")) { System.exit(0); } + if (s.equals(":mode")) { + if (BASIC_MODE) System.out.println("Mode: BASIC"); + else System.out.println("Current mode is: LEIPZIG"); + continue; + } + if (s.equals(":mode BASIC")) { + BASIC_MODE = true; + System.out.println("Current mode is switched to BASIC."); + continue; + } + else if (s.equals(":mode LEIPZIG")) { + BASIC_MODE = false; + System.out.println("Current mode is switched to LEIPZIG."); + continue; + } if (BASIC_MODE) { for (BasicQueryTemplate temp : handler.buildBasicTemplates(s)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |