Recipes

What is a Recipe

A Recipe is a document that contains all the information necessary for Quine to execute any batch or streaming data processing task. Recipes are built from components including:

  • Ingest Streams to read streaming data from sources and update graph data
  • Standing Queries to transform graph data, and to produce aggregates and other outputs
  • Cypher expressions to implement graph operations such as querying and updating data
  • UI configuration to specialize the web user interface for the use-case that is the subject of the Recipe

Running a Recipe

To run a Recipe, use the Quine command line argument -r, followed by the name of the Recipe (from https://quine.io/recipes), or a local file (ending in .json or .yaml), or a URL.

For example use the following command to run the Ethereum Recipe:

❯ java -jar quine.jar -r ethereum

Or to run a Recipe contained in a local file:

❯ java -jar quine.jar -r your-file.yaml

While Quine is running, a web user interface is available at localhost:8080.

Creating a Recipe

A Recipe is a JSON or YAML file. The following is a template Recipe YAML file that can be used to start building a new Recipe:

# Recipe schema version (currently only supported value is 1; 🎉)
version: 1

# Identifies the Recipe but is not necessarily unique or immutable
title: Template Recipe

# URL to social profile of the person or organization responsible for this Recipe
contributor: https://github.com/example-user

# Brief copy about this Recipe
summary: This is a valid Recipe that ingests and writes back a file

# Longer form copy about this Recipe
description: |-
  This Recipe description
  has multiple lines.

# Ingest Streams define how data is processed and transformed
ingestStreams:
  - type: FileIngest
    path: $in_file
    format:
      type: CypherLine
      query: |-
        MATCH (n)
        WHERE id(n) = idFrom($that)
        SET n.line = $that

# Standing Queries define how data is transformed and output.
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
        andThen:
          type: WriteToFile
          path: $out_file

# Customize node appearance in web UI.
nodeAppearances: [ ]

# Add queries to node context menus in web UI
quickQueries: [ ]

# Customize sample queries listed in web UI
sampleQueries:
  - name: Nodes
    query: MATCH(n) RETURN n LIMIT 10
  - name: Count Nodes
    query: MATCH (n) RETURN count(n)

# Optional Cypher query to be executed and reported to the Recipe user
statusQuery:
  cypherQuery: MATCH (n) RETURN n LIMIT 10

Please see Recipe Reference for information about Recipe document content.

How to Contribute a Recipe

Recipes are contributed by creating a pull request (PR) to the Quine git repository. Recipes are stored in the directory quine/recipes.