aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <marussy@mit.bme.hu>2021-09-19 18:26:04 +0200
committerLibravatar Kristóf Marussy <marussy@mit.bme.hu>2021-09-19 18:26:04 +0200
commit9148746ecd8c90825e18d0bb1314c34f2a98df16 (patch)
tree5ad51cf4d2ad609b9cc7d6b1c892a04e57cc2910
parentFrontend color changes (diff)
parentImport fix (diff)
downloadrefinery-9148746ecd8c90825e18d0bb1314c34f2a98df16.tar.gz
refinery-9148746ecd8c90825e18d0bb1314c34f2a98df16.tar.zst
refinery-9148746ecd8c90825e18d0bb1314c34f2a98df16.zip
Merge remote-tracking branch 'origin/web-demo'
-rw-r--r--language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend11
-rw-r--r--model-data/src/main/java/org/eclipse/viatra/solver/data/query/internal/PredicateTranslator.java (renamed from model-data/src/main/java/org/eclipse/viatra/solver/data/query/RelationalQuery.java)25
-rw-r--r--model-data/src/main/java/org/eclipse/viatra/solver/data/query/view/KeyOnlyRelationView.java4
-rw-r--r--model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java6
4 files changed, 24 insertions, 22 deletions
diff --git a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
index fcf05d1d..11bfc6d9 100644
--- a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
+++ b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
@@ -42,13 +42,14 @@ class ProblemParsingTest {
42 } 42 }
43 43
44 % A child cannot have any dependents. 44 % A child cannot have any dependents.
45 error invalidTaxStatus(Person p) <=> 45 error invalidTaxStatus(Person p) <->
46 taxStatus(p, child), children(p, _q). 46 taxStatus(p, child), children(p, _q).
47 47
48 Family('family'). 48 unique family.
49 members('family', anne): true. 49 Family(family).
50 members('family', bob). 50 members(family, anne): true.
51 members('family', ciri). 51 members(family, bob).
52 members(family, ciri).
52 children(anne, ciri). 53 children(anne, ciri).
53 ?children(bob, ciri). 54 ?children(bob, ciri).
54 taxStatus(anne, adult). 55 taxStatus(anne, adult).
diff --git a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/RelationalQuery.java b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/internal/PredicateTranslator.java
index 39fc2482..54cb4bab 100644
--- a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/RelationalQuery.java
+++ b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/internal/PredicateTranslator.java
@@ -1,4 +1,4 @@
1package org.eclipse.viatra.solver.data.query; 1package org.eclipse.viatra.solver.data.query.internal;
2 2
3import java.util.ArrayList; 3import java.util.ArrayList;
4import java.util.HashMap; 4import java.util.HashMap;
@@ -28,16 +28,17 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; 28import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery;
29import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; 29import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
30import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; 30import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
31import org.eclipse.viatra.solver.data.query.RelationalScope;
31import org.eclipse.viatra.solver.data.query.view.RelationView; 32import org.eclipse.viatra.solver.data.query.view.RelationView;
32 33
33public class RelationalQuery extends BasePQuery { 34public class PredicateTranslator extends BasePQuery {
34 35
35 private final Map<String, PParameter> parameters = new HashMap<String, PParameter>(); 36 private final Map<String, PParameter> parameters = new HashMap<String, PParameter>();
36 private String fullyQualifiedName; 37 private String fullyQualifiedName;
37 private LinkedList<PBody> bodies = new LinkedList<PBody>(); 38 private LinkedList<PBody> bodies = new LinkedList<PBody>();
38 private List<ExportedParameter> symbolicParameters; 39 private List<ExportedParameter> symbolicParameters;
39 40
40 public RelationalQuery(String fullyQualifiedName) { 41 public PredicateTranslator(String fullyQualifiedName) {
41 super(PVisibility.PUBLIC); 42 super(PVisibility.PUBLIC);
42 this.fullyQualifiedName = fullyQualifiedName; 43 this.fullyQualifiedName = fullyQualifiedName;
43 PBody body = new PBody(this); 44 PBody body = new PBody(this);
@@ -49,7 +50,7 @@ public class RelationalQuery extends BasePQuery {
49 return fullyQualifiedName; 50 return fullyQualifiedName;
50 } 51 }
51 52
52 public RelationalQuery addParameter(String name, RelationView<?> type) { 53 public PredicateTranslator addParameter(String name, RelationView<?> type) {
53 PParameter parameter = new PParameter(name); 54 PParameter parameter = new PParameter(name);
54 parameters.put(name, parameter); 55 parameters.put(name, parameter);
55 56
@@ -68,7 +69,7 @@ public class RelationalQuery extends BasePQuery {
68 public List<PParameter> getParameters() { 69 public List<PParameter> getParameters() {
69 return new ArrayList<PParameter>(parameters.values()); 70 return new ArrayList<PParameter>(parameters.values());
70 } 71 }
71 public <D> RelationalQuery addConstraint(RelationView<D> view, String... name) { 72 public <D> PredicateTranslator addConstraint(RelationView<D> view, String... name) {
72 if(name.length != view.getArity()) { 73 if(name.length != view.getArity()) {
73 throw new IllegalArgumentException("Arity ("+view.getArity()+") does not match parameter numbers ("+name.length+")"); 74 throw new IllegalArgumentException("Arity ("+view.getArity()+") does not match parameter numbers ("+name.length+")");
74 } 75 }
@@ -100,7 +101,7 @@ public class RelationalQuery extends BasePQuery {
100// } 101// }
101 102
102 // Create new Body 103 // Create new Body
103 public RelationalQuery or() { 104 public PredicateTranslator or() {
104 PBody body = new PBody(this); 105 PBody body = new PBody(this);
105 List<ExportedParameter> symbolicParameters = new ArrayList<>(); 106 List<ExportedParameter> symbolicParameters = new ArrayList<>();
106 parameters.forEach((name, parameter) -> { 107 parameters.forEach((name, parameter) -> {
@@ -113,7 +114,7 @@ public class RelationalQuery extends BasePQuery {
113 } 114 }
114 115
115 // Equality constraint 116 // Equality constraint
116 public RelationalQuery addEquality(String sourceName, String targetName) { 117 public PredicateTranslator addEquality(String sourceName, String targetName) {
117 PBody body = bodies.peekLast(); 118 PBody body = bodies.peekLast();
118 PVariable var_source = body.getOrCreateVariableByName(sourceName); 119 PVariable var_source = body.getOrCreateVariableByName(sourceName);
119 PVariable var_target = body.getOrCreateVariableByName(targetName); 120 PVariable var_target = body.getOrCreateVariableByName(targetName);
@@ -122,7 +123,7 @@ public class RelationalQuery extends BasePQuery {
122 } 123 }
123 124
124 // Inequality constraint 125 // Inequality constraint
125 public RelationalQuery addInequality(String sourceName, String targetName) { 126 public PredicateTranslator addInequality(String sourceName, String targetName) {
126 PBody body = bodies.peekLast(); 127 PBody body = bodies.peekLast();
127 PVariable var_source = body.getOrCreateVariableByName(sourceName); 128 PVariable var_source = body.getOrCreateVariableByName(sourceName);
128 PVariable var_target = body.getOrCreateVariableByName(targetName); 129 PVariable var_target = body.getOrCreateVariableByName(targetName);
@@ -131,7 +132,7 @@ public class RelationalQuery extends BasePQuery {
131 } 132 }
132 133
133 // Positive pattern call 134 // Positive pattern call
134 public RelationalQuery addPatternCall(PQuery query, String... names) { 135 public PredicateTranslator addPatternCall(PQuery query, String... names) {
135 PBody body = bodies.peekLast(); 136 PBody body = bodies.peekLast();
136 PVariable[] vars = new PVariable[names.length]; 137 PVariable[] vars = new PVariable[names.length];
137 for (int i = 0; i < names.length; i++) { 138 for (int i = 0; i < names.length; i++) {
@@ -142,7 +143,7 @@ public class RelationalQuery extends BasePQuery {
142 } 143 }
143 144
144 // Negative pattern call 145 // Negative pattern call
145 public RelationalQuery addNegativePatternCall(PQuery query, String... names) { 146 public PredicateTranslator addNegativePatternCall(PQuery query, String... names) {
146 PBody body = bodies.peekLast(); 147 PBody body = bodies.peekLast();
147 PVariable[] vars = new PVariable[names.length]; 148 PVariable[] vars = new PVariable[names.length];
148 for (int i = 0; i < names.length; i++) { 149 for (int i = 0; i < names.length; i++) {
@@ -153,7 +154,7 @@ public class RelationalQuery extends BasePQuery {
153 } 154 }
154 155
155 // Binary transitive closure pattern call 156 // Binary transitive closure pattern call
156 public RelationalQuery addBinaryTransitiveClosure(PQuery query, String sourceName, String targetName) { 157 public PredicateTranslator addBinaryTransitiveClosure(PQuery query, String sourceName, String targetName) {
157 PBody body = bodies.peekLast(); 158 PBody body = bodies.peekLast();
158 PVariable var_source = body.getOrCreateVariableByName(sourceName); 159 PVariable var_source = body.getOrCreateVariableByName(sourceName);
159 PVariable var_target = body.getOrCreateVariableByName(targetName); 160 PVariable var_target = body.getOrCreateVariableByName(targetName);
@@ -162,7 +163,7 @@ public class RelationalQuery extends BasePQuery {
162 } 163 }
163 164
164 // Binary reflexive transitive closure pattern call 165 // Binary reflexive transitive closure pattern call
165 public RelationalQuery addBinaryReflexiveTransitiveClosure(PQuery query, String sourceName, String targetName) { 166 public PredicateTranslator addBinaryReflexiveTransitiveClosure(PQuery query, String sourceName, String targetName) {
166 PBody body = bodies.peekLast(); 167 PBody body = bodies.peekLast();
167 PVariable var_source = body.getOrCreateVariableByName(sourceName); 168 PVariable var_source = body.getOrCreateVariableByName(sourceName);
168 PVariable var_target = body.getOrCreateVariableByName(targetName); 169 PVariable var_target = body.getOrCreateVariableByName(targetName);
diff --git a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/view/KeyOnlyRelationView.java b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/view/KeyOnlyRelationView.java
index bb1ddaa8..11a24fc8 100644
--- a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/view/KeyOnlyRelationView.java
+++ b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/view/KeyOnlyRelationView.java
@@ -3,9 +3,9 @@ package org.eclipse.viatra.solver.data.query.view;
3import org.eclipse.viatra.solver.data.model.Tuple; 3import org.eclipse.viatra.solver.data.model.Tuple;
4import org.eclipse.viatra.solver.data.model.representation.Relation; 4import org.eclipse.viatra.solver.data.model.representation.Relation;
5 5
6public class TupleRelationView extends FilteredRelationView<Boolean>{ 6public class KeyOnlyRelationView extends FilteredRelationView<Boolean>{
7 7
8 public TupleRelationView(Relation<Boolean> representation) { 8 public KeyOnlyRelationView(Relation<Boolean> representation) {
9 super(representation, (k,v)->true); 9 super(representation, (k,v)->true);
10 } 10 }
11 @Override 11 @Override
diff --git a/model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java b/model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java
index 5555dac8..182f6c94 100644
--- a/model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java
+++ b/model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java
@@ -18,8 +18,8 @@ import org.eclipse.viatra.solver.data.model.ModelStoreImpl;
18import org.eclipse.viatra.solver.data.model.Tuple; 18import org.eclipse.viatra.solver.data.model.Tuple;
19import org.eclipse.viatra.solver.data.model.representation.Relation; 19import org.eclipse.viatra.solver.data.model.representation.Relation;
20import org.eclipse.viatra.solver.data.model.representation.TruthValue; 20import org.eclipse.viatra.solver.data.model.representation.TruthValue;
21import org.eclipse.viatra.solver.data.query.RelationalQuery;
22import org.eclipse.viatra.solver.data.query.RelationalScope; 21import org.eclipse.viatra.solver.data.query.RelationalScope;
22import org.eclipse.viatra.solver.data.query.internal.PredicateTranslator;
23import org.eclipse.viatra.solver.data.query.view.FilteredRelationView; 23import org.eclipse.viatra.solver.data.query.view.FilteredRelationView;
24import org.eclipse.viatra.solver.data.query.view.FunctionalRelationView; 24import org.eclipse.viatra.solver.data.query.view.FunctionalRelationView;
25import org.eclipse.viatra.solver.data.query.view.RelationView; 25import org.eclipse.viatra.solver.data.query.view.RelationView;
@@ -32,7 +32,7 @@ class QueryTest {
32 Relation<Boolean> person = new Relation<>("Person", 1, false); 32 Relation<Boolean> person = new Relation<>("Person", 1, false);
33 33
34 RelationView<Boolean> persionView = new KeyOnlyRelationView(person); 34 RelationView<Boolean> persionView = new KeyOnlyRelationView(person);
35 GenericQuerySpecification<GenericPatternMatcher> personQuery = (new RelationalQuery("PersonQuery")) 35 GenericQuerySpecification<GenericPatternMatcher> personQuery = (new PredicateTranslator("PersonQuery"))
36 .addParameter("p", persionView).addConstraint(persionView, "p").build(); 36 .addParameter("p", persionView).addConstraint(persionView, "p").build();
37 37
38 ModelStore store = new ModelStoreImpl(Set.of(person)); 38 ModelStore store = new ModelStoreImpl(Set.of(person));
@@ -76,7 +76,7 @@ class QueryTest {
76 76
77 RelationalScope scope = new RelationalScope(model, Set.of(persionView, ageView, friendMustView, friendMayView)); 77 RelationalScope scope = new RelationalScope(model, Set.of(persionView, ageView, friendMustView, friendMayView));
78 78
79 GenericQuerySpecification<GenericPatternMatcher> personQuery = (new RelationalQuery("PersonQuery")) 79 GenericQuerySpecification<GenericPatternMatcher> personQuery = (new PredicateTranslator("PersonQuery"))
80 .addParameter("p", persionView).addConstraint(persionView, "p").build(); 80 .addParameter("p", persionView).addConstraint(persionView, "p").build();
81 81
82 ViatraQueryEngine engine = AdvancedViatraQueryEngine.on(scope); 82 ViatraQueryEngine engine = AdvancedViatraQueryEngine.on(scope);