diff options
author | Kristóf Marussy <marussy@mit.bme.hu> | 2021-09-19 18:26:04 +0200 |
---|---|---|
committer | Kristóf Marussy <marussy@mit.bme.hu> | 2021-09-19 18:26:04 +0200 |
commit | 9148746ecd8c90825e18d0bb1314c34f2a98df16 (patch) | |
tree | 5ad51cf4d2ad609b9cc7d6b1c892a04e57cc2910 | |
parent | Frontend color changes (diff) | |
parent | Import fix (diff) | |
download | refinery-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.xtend | 11 | ||||
-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.java | 4 | ||||
-rw-r--r-- | model-data/src/test/java/org/eclipse/viatra/solver/data/query/test/QueryTest.java | 6 |
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 @@ | |||
1 | package org.eclipse.viatra.solver.data.query; | 1 | package org.eclipse.viatra.solver.data.query.internal; |
2 | 2 | ||
3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
4 | import java.util.HashMap; | 4 | import java.util.HashMap; |
@@ -28,16 +28,17 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | |||
28 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; | 28 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; |
29 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | 29 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; |
30 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | 30 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; |
31 | import org.eclipse.viatra.solver.data.query.RelationalScope; | ||
31 | import org.eclipse.viatra.solver.data.query.view.RelationView; | 32 | import org.eclipse.viatra.solver.data.query.view.RelationView; |
32 | 33 | ||
33 | public class RelationalQuery extends BasePQuery { | 34 | public 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; | |||
3 | import org.eclipse.viatra.solver.data.model.Tuple; | 3 | import org.eclipse.viatra.solver.data.model.Tuple; |
4 | import org.eclipse.viatra.solver.data.model.representation.Relation; | 4 | import org.eclipse.viatra.solver.data.model.representation.Relation; |
5 | 5 | ||
6 | public class TupleRelationView extends FilteredRelationView<Boolean>{ | 6 | public 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; | |||
18 | import org.eclipse.viatra.solver.data.model.Tuple; | 18 | import org.eclipse.viatra.solver.data.model.Tuple; |
19 | import org.eclipse.viatra.solver.data.model.representation.Relation; | 19 | import org.eclipse.viatra.solver.data.model.representation.Relation; |
20 | import org.eclipse.viatra.solver.data.model.representation.TruthValue; | 20 | import org.eclipse.viatra.solver.data.model.representation.TruthValue; |
21 | import org.eclipse.viatra.solver.data.query.RelationalQuery; | ||
22 | import org.eclipse.viatra.solver.data.query.RelationalScope; | 21 | import org.eclipse.viatra.solver.data.query.RelationalScope; |
22 | import org.eclipse.viatra.solver.data.query.internal.PredicateTranslator; | ||
23 | import org.eclipse.viatra.solver.data.query.view.FilteredRelationView; | 23 | import org.eclipse.viatra.solver.data.query.view.FilteredRelationView; |
24 | import org.eclipse.viatra.solver.data.query.view.FunctionalRelationView; | 24 | import org.eclipse.viatra.solver.data.query.view.FunctionalRelationView; |
25 | import org.eclipse.viatra.solver.data.query.view.RelationView; | 25 | import 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); |