ftsrg / ire Goto Github PK
View Code? Open in Web Editor NEWThis repository is only kept for historical reasons, the projects was merged to the ingraph repository
Home Page: http://docs.inf.mit.bme.hu/ingraph/
License: Eclipse Public License 1.0
This repository is only kept for historical reasons, the projects was merged to the ingraph repository
Home Page: http://docs.inf.mit.bme.hu/ingraph/
License: Eclipse Public License 1.0
Trimmer
-> ProjectionNode
Checker
-> SelectionNode
AlphaNode
-> UnaryNode
BetaNode
-> BinaryNode
Also:
HashAntijoiner
-> AntiJoinNode
HashJoiner
-> JoinNode
We should get rid of maps as they 1) consume a lot of memory 2) provide much worse performance than vectors. For now, we should restrict the Rete network to fixed with tuples, with vertex/edge ids and simple properties (used for selection). This will work fine for queries that return the IDs:
MATCH (n)
RETURN ID(n)
However, it will not not suffice even for simple queries, e.g.
MATCH (n)
RETURN n
This query returns all the properties of the n
variable.
To get the properties of n
, we will have to join n
to it's properties in the production node. For this, we have to implement a node similar to the properties()
method in Neo4j. E.g. the get-properties
nullary operator should return 2-tuples of <ID, properties>
, e.g. <1, {name: "John", age: 34}>
, etc.
ire should focus on query processing, and not remote messaging - we should remove the akka-remote
components and the related source code files.
Refactor this method an use for all tests (where applicable): https://github.com/FTSRG/ire/blob/5c574a1894f9e8f95bac4b9ec358a37f3504fb42/src/test/scala/HashAntijoinerTest.scala#L15
(Related ticket: ftsrg/ingraph#35)
Use this issue to keep track of supported Cypher constructs.
CREATE
MERGE
SET
DELETE
DETACH DELETE
REMOVE
CALL ... YIELD
WHERE
ftsrg/ingraph#43ON CREATE
ON MATCH
DISTINCT
#14STARTS WITH
CONTAINS
ENDS WITH
=
<>
<
>
<=
>=
+
-
/
*
NOT
AND
OR
XOR
IS NULL
IS NOT NULL
.
(property access)[]
(subscript)$
)toBoolean()
toInteger()
(called toInt()
)R+(src, trg)
E.g. track the number of tuples in the network.
Aggregation
Aggregation functions including count(), sum(), avg(), max(), min(), collect() and others. Includes DISTINCT.
https://neo4j.com/docs/developer-manual/current/cypher/#query-aggregation
count()
sum()
avg()
max()
min()
collect()
: https://github.com/FTSRG/ingraph/blob/master/queries/fraud-detection/financial-risk.cyp#L10Implement a SKIP
...LIMIT
operator, which works on ordered expressions: https://neo4j.com/docs/developer-manual/current/cypher/#_skip_and_limit
I think it would be a good idea to make transactions Autoclosable
, similarly to Neo4j's Transaction.
The union operator is a simple binary node, which produces โ you guessed it โ the union of its input relations.
RDFReader
and RdfReaderTest
classes.container_performance
DistributedQueries
, RemoteOnlyQuerie
, Slave
Related issue: #5
Why do we override the value of expectedTerminatorCount
to 2.
If we keep it with a value of 2, the following test case becomes: nondeterministic
"Unary nodes" must {
"propagate terminator messages" in {
ORDER BY
A sub-clause following RETURN or WITH, specifying that the output should be sorted in particular way.
https://neo4j.com/docs/developer-manual/current/cypher/#query-order
The user of the library should specify a list of variable-direction pairs (e.g. person-ASC, city-DESC) for the ordering.
We should definitely support labels()
and type()
. I am not sure about properties()
and keys()
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.