Skip to content

Commit 709f79d

Browse files
committed
New implementation using dynamic objectification
1 parent e81af52 commit 709f79d

File tree

157 files changed

+1041
-118
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+1041
-118
lines changed
Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
T__51=51
1+
T__52=52
2+
T__53=53
3+
T__54=54
24
ALPHA=4
35
AND=5
46
BASE=6
@@ -10,40 +12,43 @@ EOL=11
1012
EQUAL=12
1113
EXISTS=13
1214
EXTERNAL=14
13-
FORALL=15
14-
GREATER=16
15-
GROUP=17
16-
ID=18
17-
ID_CHAR=19
18-
ID_START_CHAR=20
19-
IMPLICATION=21
20-
IMPORT=22
21-
INSTANCE=23
22-
IRI=24
23-
IRI_CHAR=25
24-
IRI_REF=26
25-
IRI_START_CHAR=27
26-
LESS=28
27-
LITERAL=29
28-
LOCAL=30
29-
LPAR=31
30-
LSQBR=32
31-
MULTI_LINE_COMMENT=33
32-
NUMBER=34
33-
OR=35
34-
PREFIX=36
35-
PSOA=37
36-
RPAR=38
37-
RSQBR=39
38-
SHORTCONST=40
39-
SLOT=41
40-
SLOT_ARROW=42
41-
STRING=43
42-
SUBCLASS=44
43-
SYMSPACE_OPER=45
44-
TOP=46
45-
TUPLE=47
46-
VAR_ID=48
47-
VAR_LIST=49
48-
WHITESPACE=50
49-
'@'=51
15+
FALSITY=15
16+
FORALL=16
17+
GREATER=17
18+
GROUP=18
19+
ID=19
20+
ID_CHAR=20
21+
ID_START_CHAR=21
22+
IMPLICATION=22
23+
IMPORT=23
24+
INSTANCE=24
25+
IRI=25
26+
IRI_CHAR=26
27+
IRI_REF=27
28+
IRI_START_CHAR=28
29+
LESS=29
30+
LITERAL=30
31+
LOCAL=31
32+
LPAR=32
33+
LSQBR=33
34+
MULTI_LINE_COMMENT=34
35+
NUMBER=35
36+
OR=36
37+
PREFIX=37
38+
PSOA=38
39+
RPAR=39
40+
RSQBR=40
41+
SHORTCONST=41
42+
SLOT=42
43+
SLOT_ARROW=43
44+
STRING=44
45+
SUBCLASS=45
46+
SYMSPACE_OPER=46
47+
TOP=47
48+
TUPLE=48
49+
VAR_ID=49
50+
VAR_LIST=50
51+
WHITESPACE=51
52+
'@'=52
53+
'no'=53
54+
'yes'=54

PSOA2X/src/main/antlr3/org/ruleml/psoa/psoa2x/psoa2prolog/PSOA2PrologWalker.g

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ formula
132132
else
133133
_output.replace(len - 1, len, ")");
134134
}
135-
| ^(EXISTS
135+
| FALSITY { _output.append("false"); }
136+
| ^(EXISTS
136137
(VAR_ID { if (isQuery) existVars.add($VAR_ID.text); })+
137138
formula)
138139
{
@@ -161,6 +162,10 @@ equal
161162
{
162163
append(_output, "is(", $t1.output, ",", $t2.output, ")");
163164
}
165+
else
166+
{
167+
append(_output, "\'=\'(", $t1.output, ",", $t2.output ,")");
168+
}
164169
}
165170
;
166171

@@ -232,11 +237,14 @@ scope
232237
{
233238
if (!hasTupleOrSlot)
234239
{
235-
// Class membership
236-
if (!$t.output.equals("TOP"))
237-
append(_output, "memterm(", $psoa::oid, ",", $t.output, ")");
240+
if ($t.output.equals("TOP"))
241+
append(_output, "true");
242+
else if (o == null)
243+
// Nullary predicate
244+
append(_output, $t.output);
238245
else
239-
append(_output, "true");
246+
// Class membership
247+
append(_output, "memterm(", $psoa::oid, ",", $t.output, ")");
240248
}
241249
}
242250
;

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/common/ANTLRBasedTranslator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void translate(CharStream input, boolean isQuery, OutputStream out) throw
5555
{
5656
try {
5757
CommonTreeNodeStream parseTreeStream = parse(input, isQuery);
58-
printTree(parseTreeStream);
58+
debugPrintTree(parseTreeStream);
5959
CommonTreeNodeStream astStream = preprocess(parseTreeStream, isQuery);
6060
TranslatorWalker walker = createTranslatorWalker(astStream);
6161
walker.setOutputStream(getPrintStream(out));
@@ -108,9 +108,10 @@ protected CommonTreeNodeStream preprocess(CommonTreeNodeStream treeNodeStream, b
108108
return newTreeNodeStream;
109109
}
110110

111-
protected static void printTree(CommonTreeNodeStream stream)
111+
protected static void debugPrintTree(CommonTreeNodeStream stream)
112112
{
113-
// System.out.println(((CommonTree)stream.getTreeSource()).toStringTree());
113+
if (debugMode)
114+
System.out.println(((CommonTree)stream.getTreeSource()).toStringTree());
114115
}
115116

116117
public static abstract class TranslatorWalker extends TreeParser {

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/common/RelationalTranslatorConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ public abstract class RelationalTranslatorConfig extends TranslatorConfig
44
{
55
public boolean reproduceClass,
66
omitMemtermInBody,
7+
dynamicObjectification,
78
crossOverAxiom;
89
}

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/common/Translator.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
import java.util.List;
77
import java.util.Map;
88

9+
import org.ruleml.psoa.analyzer.*;
10+
911
public abstract class Translator {
10-
Map<String, String> _queryVarMap = new HashMap<String, String>();
12+
protected Map<String, String> _queryVarMap = new HashMap<String, String>();
13+
protected KBInfoCollector m_KBInfo = null;
14+
protected static boolean debugMode = false;
1115

1216
abstract public void translateKB(String kb, OutputStream out) throws TranslatorException;
1317
abstract public void translateQuery(String query, OutputStream out) throws TranslatorException;
@@ -68,4 +72,27 @@ public Map<String, String> getQueryVarMap()
6872
public List<String> getQueryVars() {
6973
return new ArrayList<String>(_queryVarMap.keySet());
7074
}
75+
76+
protected static void print(Object... objs)
77+
{
78+
for (Object obj : objs)
79+
{
80+
System.out.print(obj);
81+
}
82+
}
83+
84+
protected static void debugPrint(Object... objs)
85+
{
86+
if (debugMode)
87+
print(objs);
88+
}
89+
90+
protected static void debugPrintln(Object... objs)
91+
{
92+
if (debugMode)
93+
{
94+
print(objs);
95+
System.out.println();
96+
}
97+
}
7198
}

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/PSOA2PrologConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public PSOA2PrologConfig()
88
{
99
reproduceClass = false;
1010
crossOverAxiom = false;
11+
dynamicObjectification = true;
1112
}
1213
}

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/PrologTranslator.java

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.antlr.runtime.RecognitionException;
44
import org.antlr.runtime.TokenStream;
55
import org.antlr.runtime.tree.CommonTreeNodeStream;
6+
import org.ruleml.psoa.analyzer.KBInfoCollector;
67
import org.ruleml.psoa.normalizer.*;
78
import org.ruleml.psoa.psoa2x.common.ANTLRBasedTranslator;
89
import org.ruleml.psoa.psoa2x.common.PSOATranslatorUtil;
@@ -15,7 +16,7 @@ public PrologTranslator(PSOA2PrologConfig config)
1516
{
1617
m_config = config;
1718
}
18-
19+
1920
@Override
2021
protected TranslatorWalker createTranslatorWalker(
2122
CommonTreeNodeStream astNodes) {
@@ -30,58 +31,89 @@ protected CommonTreeNodeStream preprocess(CommonTreeNodeStream treeNodeStream, b
3031
SlotTupributor slotTupributor;
3132
ExternalFlattener externalFlattener;
3233
ConjunctiveHeadSplitter splitter;
34+
QueryRewriter rewriter;
3335
TokenStream tokens = treeNodeStream.getTokenStream();
3436

3537
if (isQuery)
3638
{
37-
// System.out.println("Objectify Query");
38-
objectifier = new DiscriminativeObjectifier(treeNodeStream);
39+
if (m_config.dynamicObjectification)
40+
{
41+
debugPrintln("Rewrite query");
42+
rewriter = new QueryRewriter(treeNodeStream, m_KBInfo);
43+
treeNodeStream = new CommonTreeNodeStream(rewriter.query().getTree());
44+
treeNodeStream.setTokenStream(tokens);
45+
debugPrintTree(treeNodeStream);
46+
47+
objectifier = new DiscriminativeObjectifier(treeNodeStream, m_KBInfo);
48+
objectifier.setReducedObjectification(true);
49+
}
50+
else
51+
objectifier = new DiscriminativeObjectifier(treeNodeStream);
52+
53+
debugPrintln("Objectify query");
3954
treeNodeStream = new CommonTreeNodeStream(objectifier.query().getTree());
40-
treeNodeStream.setTokenStream(tokens);
55+
treeNodeStream.setTokenStream(tokens);
56+
debugPrintTree(treeNodeStream);
4157

42-
// System.out.println("Slotribute and Tupribute Query");
58+
debugPrintln("Slotribute and tupribute query");
4359
slotTupributor = new SlotTupributor(treeNodeStream);
4460
slotTupributor.setReproduceClass(m_config.reproduceClass);
4561
treeNodeStream = new CommonTreeNodeStream(slotTupributor.query().getTree());
4662
treeNodeStream.setTokenStream(tokens);
63+
debugPrintTree(treeNodeStream);
4764

48-
// System.out.println("Flatten Externals for Query");
65+
debugPrintln("Flatten externals in query");
4966
externalFlattener = new ExternalFlattener(treeNodeStream);
5067
treeNodeStream = new CommonTreeNodeStream(externalFlattener.query().getTree());
5168
treeNodeStream.setTokenStream(tokens);
52-
53-
// System.out.println();
69+
debugPrintTree(treeNodeStream);
5470
}
5571
else
56-
{
57-
// System.out.println("Objectify KB");
58-
objectifier = new DiscriminativeObjectifier(treeNodeStream);
72+
{
73+
if (m_config.dynamicObjectification)
74+
{
75+
m_KBInfo = new KBInfoCollector(treeNodeStream);
76+
m_KBInfo.document().getTree();
77+
treeNodeStream.reset();
78+
// treeNodeStream = new CommonTreeNodeStream(objectifier.document().getTree());
79+
objectifier = new DiscriminativeObjectifier(treeNodeStream, m_KBInfo);
80+
objectifier.setReducedObjectification(true);
81+
}
82+
else
83+
{
84+
objectifier = new DiscriminativeObjectifier(treeNodeStream);
85+
}
86+
87+
debugPrintln("Objectify KB");
5988
treeNodeStream = new CommonTreeNodeStream(objectifier.document().getTree());
6089
treeNodeStream.setTokenStream(tokens);
90+
debugPrintTree(treeNodeStream);
6191

6292
// Skolemization
93+
debugPrintln("Skolemize KB");
6394
skolemizer = new Skolemizer(treeNodeStream);
6495
treeNodeStream = new CommonTreeNodeStream(skolemizer.document().getTree());
6596
treeNodeStream.setTokenStream(tokens);
97+
debugPrintTree(treeNodeStream);
6698

67-
// System.out.println("Slotribute and Tupribute KB");
99+
debugPrintln("Slotribute and tupribute KB");
68100
slotTupributor = new SlotTupributor(treeNodeStream);
69101
slotTupributor.setReproduceClass(m_config.reproduceClass);
70102
treeNodeStream = new CommonTreeNodeStream(slotTupributor.document().getTree());
71103
treeNodeStream.setTokenStream(tokens);
72-
printTree(treeNodeStream);
104+
debugPrintTree(treeNodeStream);
73105

74-
// System.out.println("Flatten Externals for KB");
106+
debugPrintln("Flatten externals in KB");
75107
externalFlattener = new ExternalFlattener(treeNodeStream);
76108
treeNodeStream = new CommonTreeNodeStream(externalFlattener.document().getTree());
77109
treeNodeStream.setTokenStream(tokens);
78-
printTree(treeNodeStream);
110+
debugPrintTree(treeNodeStream);
79111

80-
// System.out.println("Split Conjunctive Head for KB");
112+
debugPrintln("Split conjunctive-headed KB rules");
81113
splitter = new ConjunctiveHeadSplitter(treeNodeStream);
82114
treeNodeStream = new CommonTreeNodeStream(splitter.document().getTree());
83115
treeNodeStream.setTokenStream(tokens);
84-
printTree(treeNodeStream);
116+
debugPrintTree(treeNodeStream);
85117

86118
// System.out.println("Finished normalizing KB.");
87119
// System.out.println("Normalized tree:");
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.ruleml.psoa.psoa2x.psoa2tptp;
2+
3+
import org.ruleml.psoa.psoa2x.common.RelationalTranslatorConfig;
4+
5+
public class PSOA2TPTPConfig extends RelationalTranslatorConfig
6+
{
7+
8+
}

0 commit comments

Comments
 (0)