| Commit message (Collapse) | Author | Age |
|
|
|
| |
We were spuriously counting lower multiplicity errors for non-existent objects.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Now unary predicates may be used as types for cross-references.
This might create circular references between predicate, but no differently than
when the user manually creates predicates with circular references.
The reference types of containment and container references still have to be
classes, because we use the class hierarchy to encode contained types.
|
| |
|
|
|
|
|
| |
If an object has a lower bound of 1, but it is still a multi-object, model
generation can't be finished yet.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Use a simplified name invalidContainer, since this pattern may match even if
there is a sufficient number of ERROR containers.
|
|
|
|
|
|
| |
Providing an efficient refinement calculus would be too difficult at this point,
and contains is much more useful as a constraint in predicates that as an
assertions anyway.
|
|
|
|
|
| |
Also makes model seeds cancellable to reduce server load during semantic
analysis.
|
| |
|
| |
|
|
|
|
| |
Avoid creating interpretations not needed for the graph analysis task.
|
| |
|
|
|
|
|
| |
Improper equality implementation of representative election literals merged weak
and strong connected components during query canonicalization.
|
| |
|
| |
|
|
|
|
|
| |
Reduce memory use of initial partial models by consolidating value
objects.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Adds translator for EQUALS and EXISTS symbols based on the multi-object
formalism. Only diagonal equality links are supported (e.g., distinct nodes may
not be EQUALS with each other).
Also introduces initial model seeds to separate partial interpreter construction
and graph initialization better.
|
| |
|
|
|
|
|
| |
* Use method object pattern to simplify code.
* Optimize existential quantification in transitive queries.
|
|
|
|
| |
Support for count and aggregation is still missing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enable deterministic state-space exploration by ordering activations in
lexicographic order.
This preliminary implementation adds oredering as a wrapper for ResultSet
instances, but more sophisticated support could be built directly into query
engine adapters if a query engine supports deterministic output by default.
* Implements Comparable for tuples with loops unrolled for small tuples by hand.
* Cleans up the contents of the (root of the) tools.refinery.query package.
* Adds ResultSetListener to notify clients about ResultSet changes.
* Adds OrderStatisticTree data structure for determinisitc ordering of keys.
|
|
|
|
|
| |
The filer can't return true for the default value, because tuples with default
value cannot be enumerated.
|
|
|
|
| |
We will need to rework rule execution according to recent Dnf changes.
|
|
|
|
| |
Shorthad syntax for the most commonly used symbol types.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Introduce parameter directions for constraints and DNF
* Introduce variable directions for literals
* Infer and check variable directions in DNF and topologically sort literals by
their input variables
|
|
|
|
|
|
|
| |
* Separate different operators into different classes to make it easier to add
functionality (e.g., simplification) later.
* Add UpperCardinality terms.
* Move UpperCardinality aggregator and tests into refinery-store-query.
|
|
|
|
|
|
|
|
| |
* Remove the reflection-based machinery around adapter types.
* Adapter builders, store adapters, and model adapters are now only associated
with each other based on static and runtime types.
* Simplifies writing new adapters.
* Hierarchical syntax for adding adapter builders to the store builder.
|
|
|
|
|
| |
* Add NodeFunctionView for symbols that hold function-like (single
associated object for each key) relations as integer values for performance.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make sure we obey the REUSE (https://reuse.software) specification and the
origin, copyright owner, and license of all files are clearly marked.
The whole project is under the EPL-2.0, except for trivial files where copyright
is not applicable that are marked with the CC0-1.0 license. Moreover, code
included from third parties is also available under the respective license.
chore: add CONTRIBUTORS.md
List all authors and supporting organizations in accordance with the REUSE
specification.
|
|
|
|
|
|
|
|
|
|
| |
* Directly transform VIATRA tuples into Refinery tuples, since creating
the additional wrapper object doesn't save any memory.
* Adds static arity Tuple3 and Tuple4 implementations to be more
aligned with VIATRA internals and save memory for queries with up to
4 parameters.
* Makes sure no new objects are allocated (for varargs handling) when a
static arity tuple is hashed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Implement data terms for computations in queries.
* Function-like queries with computed results.
* Improved query evaluation, including positive and negative diagonal
cosntraints.
* Preliminary local search support.
* Changes to the DNF representation for count and aggregation support.
feat: terms wip
feat: query terms wip
feat: query evaluation, diagonal constraints, local search wip
fix reasoning compilation wip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Accessing VIATRA result sets through IQueryResultProvider requires a lot
of indirection, allocations, and locking.
We use reflection instead to have direct access to the underlying
Indexer instead.
Unfortunately, projection to arbitrary tuple masks (with wildcard
entries in a tuple) is completely broken in VIATRA when RETE update
propagation is delayed. While a new, ad-hoc projection indexer gets
added to the RETE net immediately, it is not populated with the
projection results until updates are flushed in the query engine.
Therefore, when encountering an ad-hoc projection for the first time,
the projection results will always be empty (thus usually out of date).
While declaring the desired projections ahead of time would be a
possible solution, for now, we completely remove ad-hoc projection
support. If projections are needed on the ModelQuery level, we should
create an API for declaring projections for each registered Dnf.
|
|
|