Standard In¶
Quine fully supports reading from Standard In. Together with writing Standing Queries to Standard Out, Quine is a powerful tool for any command-line data processing task.
The following is a simple Recipe that ingests each line of input from Standard In as a node in the graph. It also uses a Standing Query to write every to Standard Out:
version: 1
title: Pipe
contributor: https://github.com/landon9720
summary: Ingest from Standard Input and writes to Standard Output
description: |-
Ingests each line from Standard Input as a graph node with property "line".
All graph nodes all written to Standard Output.
ingestStreams:
- type: StandardInputIngest
format:
type: CypherLine
query: |-
MATCH (n)
WHERE id(n) = idFrom($that)
SET n.line = $that
standingQueries:
- pattern:
type: Cypher
query: |-
MATCH (n)
RETURN DISTINCT id(n) AS id
outputs:
output-1:
type: CypherQuery
query: |-
MATCH (n)
WHERE id(n) = $that.data.id
RETURN n.line AS line
andThen:
type: PrintToStandardOut
nodeAppearances: [ ]
quickQueries: [ ]
sampleQueries: [ ]
To run this Recipe, pipe data from other program into Quine. This example uses the Unix find
program as a data source:
❯ java -jar quine-1.7.3.jar -r pipe.yaml
Graph is ready
Running Recipe Pipe
Running Standing Query STANDING-1
Running Ingest Stream INGEST-1
2022-02-22 15:33:21,995 Standing query `output-1` match: {"meta":{"isPositiveMatch":true,"resultId":"54754813-574b-b86e-5e8e-6968ef4ce2e5"},"data":{"line":"/dev/ptyu1"}}
2022-02-22 15:33:21,996 Standing query `output-1` match: {"meta":{"isPositiveMatch":true,"resultId":"e2783bf4-3328-1365-0fed-d9a9ab12489c"},"data":{"line":"/dev/ptyu4"}}
2022-02-22 15:33:21,997 Standing query `output-1` match: {"meta":{"isPositiveMatch":true,"resultId":"845cac7b-7994-baf8-982f-06adc4a818ff"},"data":{"line":"/dev/ptytf"}}
2022-02-22 15:33:21,998 Standing query `output-1` match: {"meta":{"isPositiveMatch":true,"resultId":"ccdb9fc6-969e-16a0-2a10-8a0e2b594ec1"},"data":{"line":"/dev/ttyu8"}}
...
Quine app web server available at http://localhost:8080
INGEST-1 status is completed and ingested 360
| => STANDING-1 count 360