Skip to content

Commit e81af52

Browse files
committed
Added class-reproducing slotribution/tupribution
1 parent 33d452a commit e81af52

File tree

19 files changed

+173
-68
lines changed

19 files changed

+173
-68
lines changed

PSOA2X/.classpath

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<classpath>
33
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
4-
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
5-
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
4+
<classpathentry kind="src" path="src/main/antlr3"/>
65
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
76
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
87
<attributes>

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

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,32 @@ options
1515
import static org.ruleml.psoa.psoa2x.common.PSOATranslatorUtil.*;
1616
import org.ruleml.psoa.psoa2x.common.*;
1717
import org.ruleml.psoa.psoa2x.common.ANTLRBasedTranslator.TranslatorWalker;
18-
import java.io.*;
19-
import java.util.Set;
20-
import java.util.HashSet;
21-
import java.util.Map;
22-
import java.util.LinkedHashMap;
18+
import java.io.*;
19+
import java.util.Set;
20+
import java.util.HashSet;
21+
import java.util.Map;
22+
import java.util.LinkedHashMap;
2323
}
2424

2525
@members
2626
{
27+
private PSOA2PrologConfig m_config;
2728
private StringBuilder _output = new StringBuilder(256);
2829

2930
private enum TermType { CONST, VAR, FUNC_INTERNAL, FUNC_EXTERNAL };
31+
32+
public PSOA2PrologWalker(TreeNodeStream input, PSOA2PrologConfig config) {
33+
this(input);
34+
m_config = config;
35+
}
3036
}
3137

3238
document
3339
: ^(DOCUMENT base? prefix* importDecl* group?)
40+
{
41+
if (m_config.crossOverAxiom)
42+
println("sloterm(X,C1,P,V) :- (sloterm(X,C2,P,V),memterm(X,C1)).");
43+
}
3444
;
3545

3646
base
@@ -198,17 +208,22 @@ scope
198208
{
199209
String oid;
200210
String func;
211+
String type;
201212
}
202213
@init
203214
{
204215
boolean hasTupleOrSlot = false;
205216
}
206217
: ^(PSOA (o=term { $psoa::oid = $o.output; })?
207-
^(INSTANCE type=term
218+
^(INSTANCE t=term
208219
{
209220
if ($psoa::oid == null)
210221
{
211-
$psoa::func = $type.output;
222+
$psoa::func = $t.output;
223+
}
224+
else
225+
{
226+
$psoa::type = $t.output;
212227
}
213228
})
214229
({ hasTupleOrSlot = true; } tuple)*
@@ -218,11 +233,11 @@ scope
218233
if (!hasTupleOrSlot)
219234
{
220235
// Class membership
221-
if (!$type.output.equals("TOP"))
222-
append(_output, "memterm(", $psoa::oid, ",", $type.output, ")");
236+
if (!$t.output.equals("TOP"))
237+
append(_output, "memterm(", $psoa::oid, ",", $t.output, ")");
223238
else
224239
append(_output, "true");
225-
}
240+
}
226241
}
227242
;
228243

@@ -244,7 +259,10 @@ tuple
244259
else
245260
{
246261
b = _output;
247-
append(b, "tupterm(", oid, ",");
262+
if (m_config.reproduceClass)
263+
append(b, "tupterm(", oid, ",", $psoa::type, ",");
264+
else
265+
append(b, "tupterm(", oid, ",");
248266
}
249267
}
250268
: ^(TUPLE (term { append(b, $term.output, ","); })+)
@@ -259,7 +277,12 @@ slot
259277
{
260278
String oid;
261279
if ((oid = $psoa::oid) != null)
262-
append(_output, "sloterm(", oid, ",", $s.output, ",", $v.output, ")");
280+
{
281+
if (m_config.reproduceClass)
282+
append(_output, "sloterm(", oid, ",", $psoa::type, ",", $s.output, ",", $v.output, ")");
283+
else
284+
append(_output, "sloterm(", oid, ",", $s.output, ",", $v.output, ")");
285+
}
263286
}
264287
;
265288

PSOA2X/src/main/antlr3/org/ruleml/psoa/psoa2x/psoa2tptp/TPTPASOTranslatorWalker.g

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ options
2626
@members
2727
{
2828
private TPTPASOGenerator m_generator = new TPTPASOGenerator();
29+
private PSOA2TPTPConfig m_config;
2930

31+
public TPTPASOTranslatorWalker(TreeNodeStream input, PSOA2TPTPConfig config) {
32+
this(input);
33+
m_config = config;
34+
}
35+
3036
public void parseDocument() throws RecognitionException {
3137
document();
3238
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.ruleml.psoa.psoa2x.common;
2+
3+
public abstract class RelationalTranslatorConfig extends TranslatorConfig
4+
{
5+
public boolean reproduceClass,
6+
omitMemtermInBody,
7+
crossOverAxiom;
8+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.io.FileNotFoundException;
88
import java.io.IOException;
99

10+
import org.ruleml.psoa.psoa2x.psoa2prolog.PSOA2PrologConfig;
1011
import org.ruleml.psoa.psoa2x.psoa2prolog.PrologTranslator;
1112
import org.ruleml.psoa.psoa2x.psoa2tptp.*;
1213

@@ -62,7 +63,7 @@ public static void main(String[] args) throws FileNotFoundException, IOException
6263
try {
6364
// ANTLRBasedTranslator translator = new TPTPASOTranslator();
6465
// ANTLRBasedTranslator translator = new DirectTranslator();
65-
ANTLRBasedTranslator translator = new PrologTranslator();
66+
ANTLRBasedTranslator translator = new PrologTranslator(new PSOA2PrologConfig());
6667
for (int i = 0; i < ruleBaseFileNames.length; ++i) {
6768
translator.translateKB(new FileInputStream(ruleBaseFileNames[i]), System.out);
6869
// createBasicTreeParser(ruleBaseFileNames[i], false).document();
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.ruleml.psoa.psoa2x.common;
2+
3+
public abstract class TranslatorConfig
4+
{
5+
6+
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package org.ruleml.psoa.psoa2x.common;
22

3+
import org.ruleml.psoa.psoa2x.psoa2prolog.PSOA2PrologConfig;
34
import org.ruleml.psoa.psoa2x.psoa2prolog.PrologTranslator;
5+
import org.ruleml.psoa.psoa2x.psoa2tptp.PSOA2TPTPConfig;
46
import org.ruleml.psoa.psoa2x.psoa2tptp.TPTPASOTranslator;
57

68
public class TranslatorFactory {
79

810
public Translator createTranslator(String targetLanguage)
911
{
1012
if (targetLanguage.equalsIgnoreCase("prolog"))
11-
return new PrologTranslator();
13+
return new PrologTranslator(new PSOA2PrologConfig());
1214
else if (targetLanguage.equalsIgnoreCase("tptp"))
13-
return new TPTPASOTranslator();
15+
return new TPTPASOTranslator(new PSOA2TPTPConfig());
1416

1517
throw new TranslatorException("Unknown target language: " + targetLanguage);
1618
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.ruleml.psoa.psoa2x.psoa2prolog;
2+
3+
import org.ruleml.psoa.psoa2x.common.RelationalTranslatorConfig;
4+
5+
public class PSOA2PrologConfig extends RelationalTranslatorConfig
6+
{
7+
public PSOA2PrologConfig()
8+
{
9+
reproduceClass = false;
10+
crossOverAxiom = false;
11+
}
12+
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,17 @@
99
import org.ruleml.psoa.psoa2x.common.TranslatorException;
1010

1111
public class PrologTranslator extends ANTLRBasedTranslator {
12+
PSOA2PrologConfig m_config;
13+
14+
public PrologTranslator(PSOA2PrologConfig config)
15+
{
16+
m_config = config;
17+
}
18+
1219
@Override
1320
protected TranslatorWalker createTranslatorWalker(
1421
CommonTreeNodeStream astNodes) {
15-
return new PSOA2PrologWalker(astNodes);
22+
return new PSOA2PrologWalker(astNodes, m_config);
1623
}
1724

1825
@Override
@@ -34,6 +41,7 @@ protected CommonTreeNodeStream preprocess(CommonTreeNodeStream treeNodeStream, b
3441

3542
// System.out.println("Slotribute and Tupribute Query");
3643
slotTupributor = new SlotTupributor(treeNodeStream);
44+
slotTupributor.setReproduceClass(m_config.reproduceClass);
3745
treeNodeStream = new CommonTreeNodeStream(slotTupributor.query().getTree());
3846
treeNodeStream.setTokenStream(tokens);
3947

@@ -58,6 +66,7 @@ protected CommonTreeNodeStream preprocess(CommonTreeNodeStream treeNodeStream, b
5866

5967
// System.out.println("Slotribute and Tupribute KB");
6068
slotTupributor = new SlotTupributor(treeNodeStream);
69+
slotTupributor.setReproduceClass(m_config.reproduceClass);
6170
treeNodeStream = new CommonTreeNodeStream(slotTupributor.document().getTree());
6271
treeNodeStream.setTokenStream(tokens);
6372
printTree(treeNodeStream);

PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2tptp/TPTPASOTranslator.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
import org.ruleml.psoa.psoa2x.common.*;
55

66
public class TPTPASOTranslator extends ANTLRBasedTranslator {
7-
7+
private PSOA2TPTPConfig m_config;
8+
9+
public TPTPASOTranslator(PSOA2TPTPConfig config)
10+
{
11+
m_config = config;
12+
}
13+
814
@Override
915
protected TranslatorWalker createTranslatorWalker(
1016
CommonTreeNodeStream astNodes) {
11-
return new TPTPASOTranslatorWalker(astNodes);
17+
return new TPTPASOTranslatorWalker(astNodes, m_config);
1218
}
1319

1420
@Override

0 commit comments

Comments
 (0)