diff --git a/References.md b/References.md index 928b75e..7e0dbe2 100644 --- a/References.md +++ b/References.md @@ -4,6 +4,8 @@ description: Learn more about the Technology behind FalkorDB nav_order: 998 --- +# References + * [FalkorDB Blog](https://www.falkordb.com/blog) * Video diff --git a/bolt_support.md b/bolt_support.md index 6aa5cdc..005a331 100644 --- a/bolt_support.md +++ b/bolt_support.md @@ -4,13 +4,13 @@ nav_order: 10 description: "Connecting to FalkorDB using BOLT protocol." --- -## [EXPERIMENTAL] BOLT protocol support for FalkorDB +# [EXPERIMENTAL] BOLT protocol support for FalkorDB FalkorDB provides an experimental support for querying using BOLT drivers. We intend to extend the support in the future versions, the current version is not meant to be used in production. This guide will walk you through the process of connecting to FalkorDB using the [BOLT protocol](https://en.wikipedia.org/wiki/Bolt_(network_protocol)) -### Prerequisites +## Prerequisites Before you begin, ensure that you have a FalkorDB instance up and running. You can use our Docker image for this purpose. @@ -19,7 +19,7 @@ You can use our Docker image for this purpose. docker run -p 6379:6379 -p 7678:7678 -p 3000:3000 -it -e REDIS_ARGS="--requirepass falkordb" -e FALKORDB_ARGS="BOLT_PORT 7678" --rm falkordb/falkordb:latest ``` -#### Ports +### Ports - 6379 - FalkorDB - 7678 - Bolt - 3000 - Falkor-Browser @@ -30,7 +30,7 @@ Additionally, install the necessary BOLT drivers: pip install neo4j ``` -### Step 1: Create a `main.py` File +## Step 1: Create a `main.py` File Create a main.py file with the following content and adjust the connection uri, authentication parameters and database name according to your FalkorDB setup. This script demonstrates a simple query that returns the numbers from 1 to 10. Customize the query as needed for your specific use case. @@ -48,7 +48,7 @@ for record in records: print(record["i"]) ``` -### Step 2: Run the script +## Step 2: Run the script Execute the script by running the following command in your terminal: diff --git a/clients.md b/clients.md index 5b720e5..71a1481 100644 --- a/clients.md +++ b/clients.md @@ -5,7 +5,7 @@ description: > FalkorDB Clients --- -## Official Clients +# Official Clients | Project | Language | License | Author | Package | | --------------------------------------------------------- | ---------- | ---------- | ------------------------------------------- | ---------------------------------------- | diff --git a/commands/graph.config-get.md b/commands/graph.config-get.md index 3360ccc..4e27cab 100644 --- a/commands/graph.config-get.md +++ b/commands/graph.config-get.md @@ -5,6 +5,8 @@ description: > parent: "Commands" --- +# GRAPH.CONFIG-GET + Retrieves the current value of a FalkorDB configuration parameter. FalkorDB configuration parameters are detailed [here](/configuration). diff --git a/commands/graph.config-set.md b/commands/graph.config-set.md index 3a19374..87555d6 100644 --- a/commands/graph.config-set.md +++ b/commands/graph.config-set.md @@ -5,6 +5,8 @@ description: > parent: "Commands" --- +# GRAPH.CONFIG-SET + Set the value of a FalkorDB configuration parameter. Values set using `GRAPH.CONFIG SET` are not persisted after server restart. diff --git a/commands/graph.constraint-create.md b/commands/graph.constraint-create.md index dd2d193..6e8253b 100644 --- a/commands/graph.constraint-create.md +++ b/commands/graph.constraint-create.md @@ -5,6 +5,7 @@ description: > parent: "Commands" --- +# GRAPH.CONSTRAINT CREATE --- syntax: | diff --git a/commands/graph.constraint-drop.md b/commands/graph.constraint-drop.md index 1d4b470..c57720f 100644 --- a/commands/graph.constraint-drop.md +++ b/commands/graph.constraint-drop.md @@ -5,6 +5,7 @@ description: > parent: "Commands" --- +# GRAPH.CONSTRAINT DROP --- syntax: | diff --git a/commands/graph.copy.md b/commands/graph.copy.md index 206718c..a99fde0 100644 --- a/commands/graph.copy.md +++ b/commands/graph.copy.md @@ -5,6 +5,8 @@ description: > parent: "Commands" --- +# GRAPH.COPY + Usage: `GRAPH.COPY ` The `GRAPH.COPY` command creates a copy of a graph, while the copy is performed diff --git a/commands/graph.delete.md b/commands/graph.delete.md index eb843a4..778e54e 100644 --- a/commands/graph.delete.md +++ b/commands/graph.delete.md @@ -6,6 +6,8 @@ description: > parent: "Commands" --- +# GRAPH.DELETE + Completely removes the graph and all of its entities. Arguments: `Graph name` diff --git a/commands/graph.explain.md b/commands/graph.explain.md index bbc73d5..657231b 100644 --- a/commands/graph.explain.md +++ b/commands/graph.explain.md @@ -6,6 +6,8 @@ description: > parent: "Commands" --- +# GRAPH.EXPLAIN + Constructs a query execution plan but does not run it. Inspect this execution plan to better understand how your query will get executed. diff --git a/commands/graph.list.md b/commands/graph.list.md index a4a9e3a..ffa20d3 100644 --- a/commands/graph.list.md +++ b/commands/graph.list.md @@ -6,6 +6,8 @@ description: > parent: "Commands" --- +# GRAPH.LIST + Lists all graph keys in the keyspace. ```sh diff --git a/commands/graph.profile.md b/commands/graph.profile.md index fecc0fd..5fa5eef 100644 --- a/commands/graph.profile.md +++ b/commands/graph.profile.md @@ -6,6 +6,8 @@ description: > parent: "Commands" --- +# GRAPH.PROFILE + Executes a query and produces an execution plan augmented with metrics for each operation's execution. Arguments: `Graph name, Query` diff --git a/commands/graph.query.md b/commands/graph.query.md index b4eb1f0..912c00b 100644 --- a/commands/graph.query.md +++ b/commands/graph.query.md @@ -6,6 +6,7 @@ description: > parent: "Commands" --- +# GRAPH.QUERY Executes the given query against a specified graph. diff --git a/commands/graph.ro_query.md b/commands/graph.ro_query.md index 91cfb39..d00ecab 100644 --- a/commands/graph.ro_query.md +++ b/commands/graph.ro_query.md @@ -6,6 +6,8 @@ description: > parent: "Commands" --- +# GRAPH.RO_QUERY + Executes a given read only query against a specified graph. Arguments: `Graph name, Query, Timeout [optional]` diff --git a/commands/graph.slowlog.md b/commands/graph.slowlog.md index 4b92da8..4e35c98 100644 --- a/commands/graph.slowlog.md +++ b/commands/graph.slowlog.md @@ -5,6 +5,8 @@ description: > parent: "Commands" --- +# GRAPH.SLOWLOG + Returns a list containing up to 10 of the slowest queries issued against the given graph ID. Each item in the list has the following structure: diff --git a/commands/index.md b/commands/index.md index b54cd90..e43a16c 100644 --- a/commands/index.md +++ b/commands/index.md @@ -5,13 +5,13 @@ nav_order: 3 has_children: true --- -## Overview +# Commands -### FalkorDB Features +## FalkorDB Features FalkorDB exposes graph database functionality within Redis using the [openCypher](https://opencypher.org/) query language. Its basic commands accept openCypher queries, while additional commands are exposed for configuration or metadata retrieval. -### FalkorDB API +## FalkorDB API Command details can be retrieved by filtering for the [module](/commands/?group=graph) or for a specific command, e.g., `GRAPH.QUERY`. The details include the syntax for the commands, where: diff --git a/configuration.md b/configuration.md index 8ea41d0..99148c6 100644 --- a/configuration.md +++ b/configuration.md @@ -5,6 +5,8 @@ description: > FalkorDB supports multiple module configuration parameters. --- +# Configuration + FalkorDB supports [Redis configuration](https://redis.io/docs/management/config/) and multiple module configuration parameters. Some of these parameters can only be set at load-time, while other parameters can be set either on load-time or on run-time. diff --git a/cypher/algorithms.md b/cypher/algorithms.md index a649202..9319429 100644 --- a/cypher/algorithms.md +++ b/cypher/algorithms.md @@ -2,7 +2,7 @@ title: "Algorithms" nav_order: 19 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + FalkorDB supported algorithms like BFS. parent: "Cypher Language" --- diff --git a/cypher/call.md b/cypher/call.md index c87a7e3..906e573 100644 --- a/cypher/call.md +++ b/cypher/call.md @@ -2,7 +2,7 @@ title: "CALL" nav_order: 16 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The CALL {} (subquery) clause allows local execution of subqueries, which opens the door for many comfortable and efficient actions on a graph. parent: "Cypher Language" --- diff --git a/cypher/create.md b/cypher/create.md index 1610649..87bb307 100644 --- a/cypher/create.md +++ b/cypher/create.md @@ -2,7 +2,7 @@ title: "CREATE" nav_order: 8 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + CREATE is used to introduce new nodes and relationships. parent: "Cypher Language" --- diff --git a/cypher/cypher.md b/cypher/cypher.md index 3489959..6370921 100644 --- a/cypher/cypher.md +++ b/cypher/cypher.md @@ -2,7 +2,7 @@ title: "Cypher Language" nav_order: 7 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Cypher Language documentation has_children: true --- diff --git a/cypher/delete.md b/cypher/delete.md index 3987597..85cd77b 100644 --- a/cypher/delete.md +++ b/cypher/delete.md @@ -2,7 +2,7 @@ title: "DELETE" nav_order: 9 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + DELETE is used to remove both nodes and relationships. parent: "Cypher Language" --- diff --git a/cypher/foreach.md b/cypher/foreach.md index 29de2c0..276b189 100644 --- a/cypher/foreach.md +++ b/cypher/foreach.md @@ -2,7 +2,7 @@ title: "FOREACH" nav_order: 15 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The FOREACH clause feeds the components of a list to a sub-query comprised of updating clauses only parent: "Cypher Language" --- diff --git a/cypher/functions.md b/cypher/functions.md index 1da9b0f..21bde7a 100644 --- a/cypher/functions.md +++ b/cypher/functions.md @@ -2,7 +2,7 @@ title: "Functions" nav_order: 17 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Information on all supported functions from the Cypher query language parent: "Cypher Language" --- diff --git a/cypher/index.md b/cypher/index.md index c08d510..29100a5 100644 --- a/cypher/index.md +++ b/cypher/index.md @@ -2,7 +2,7 @@ title: "Indexing" nav_order: 20 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + FalkorDB supports single-property indexes for node labels and for relationship type. String, numeric, and geospatial data types can be indexed. parent: "Cypher Language" --- diff --git a/cypher/known_limitations.md b/cypher/known_limitations.md index 57c6bba..3950720 100644 --- a/cypher/known_limitations.md +++ b/cypher/known_limitations.md @@ -1,10 +1,12 @@ --- title: "Known limitations" -description: "" +description: "FalkorDB Known limitations" nav_order: 1000 parent: "Cypher Language" --- +# Known limitations + ## Relationship uniqueness in patterns When a relation in a match pattern is not referenced elsewhere in the query, FalkorDB will only verify that at least one matching relation exists (rather than operating on every matching relation). diff --git a/cypher/limit.md b/cypher/limit.md index d7fe461..4e81311 100644 --- a/cypher/limit.md +++ b/cypher/limit.md @@ -2,7 +2,7 @@ title: "LIMIT" nav_order: 7 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Can use the limit clause to limit the number of records returned by a query parent: "Cypher Language" --- diff --git a/cypher/match.md b/cypher/match.md index 3c289d9..8f17c29 100644 --- a/cypher/match.md +++ b/cypher/match.md @@ -2,7 +2,7 @@ title: "MATCH" nav_order: 1 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Match describes the relationship between queried entities, using ascii art to represent pattern(s) to match against. parent: "Cypher Language" --- diff --git a/cypher/merge.md b/cypher/merge.md index ecd82b0..55446e3 100644 --- a/cypher/merge.md +++ b/cypher/merge.md @@ -2,7 +2,7 @@ title: "MERGE" nav_order: 11 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The MERGE clause ensures that a path exists in the graph (either the path already exists, or it needs to be created). parent: "Cypher Language" --- diff --git a/cypher/optional_match.md b/cypher/optional_match.md index 0c136f8..41566e4 100644 --- a/cypher/optional_match.md +++ b/cypher/optional_match.md @@ -2,7 +2,7 @@ title: "OPTIONAL MATCH" nav_order: 2 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The OPTIONAL MATCH clause is a MATCH variant that produces null values for elements that do not match successfully, rather than the all-or-nothing logic for patterns in MATCH clauses. parent: "Cypher Language" --- diff --git a/cypher/order_by.md b/cypher/order_by.md index 26d7f11..7767f3a 100644 --- a/cypher/order_by.md +++ b/cypher/order_by.md @@ -2,7 +2,7 @@ title: "ORDER BY" nav_order: 5 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Order by specifies that the output be sorted and how. parent: "Cypher Language" --- diff --git a/cypher/procedures.md b/cypher/procedures.md index 46f69ae..c3a012c 100644 --- a/cypher/procedures.md +++ b/cypher/procedures.md @@ -2,7 +2,7 @@ title: "Procedures" nav_order: 18 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Procedures calling using with CALL and YIELD. parent: "Cypher Language" --- diff --git a/cypher/return.md b/cypher/return.md index 2c6ac0c..30f9e1b 100644 --- a/cypher/return.md +++ b/cypher/return.md @@ -2,7 +2,7 @@ title: "RETURN" nav_order: 4 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Return defines which properties the returned result-set will contain. parent: "Cypher Language" --- diff --git a/cypher/set.md b/cypher/set.md index 157b3be..294d096 100644 --- a/cypher/set.md +++ b/cypher/set.md @@ -2,7 +2,7 @@ title: "SET" nav_order: 10 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + SET is used to create or update properties on nodes and relationships. parent: "Cypher Language" --- diff --git a/cypher/skip.md b/cypher/skip.md index 5ef6a43..aba51ea 100644 --- a/cypher/skip.md +++ b/cypher/skip.md @@ -2,7 +2,7 @@ title: "SKIP" nav_order: 6 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The optional skip clause allows a specified number of records to be omitted from the result set. parent: "Cypher Language" --- diff --git a/cypher/union.md b/cypher/union.md index a74cd1d..6f9118b 100644 --- a/cypher/union.md +++ b/cypher/union.md @@ -2,7 +2,7 @@ title: "UNION" nav_order: 13 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The UNION clause is used to combine the result of multiple queries. parent: "Cypher Language" --- diff --git a/cypher/unwind.md b/cypher/unwind.md index cd6476b..58557c5 100644 --- a/cypher/unwind.md +++ b/cypher/unwind.md @@ -2,7 +2,7 @@ title: "UNWIND" nav_order: 14 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The UNWIND clause breaks down a given list into a sequence of records; each contains a single element in the list. parent: "Cypher Language" --- diff --git a/cypher/where.md b/cypher/where.md index 9d67126..a2f8fc9 100644 --- a/cypher/where.md +++ b/cypher/where.md @@ -2,7 +2,7 @@ title: "WHERE" nav_order: 3 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + Optional clause used to filter results based on predicates. parent: "Cypher Language" --- diff --git a/cypher/with.md b/cypher/with.md index b72a1b5..9844046 100644 --- a/cypher/with.md +++ b/cypher/with.md @@ -2,7 +2,7 @@ title: "WITH" nav_order: 12 description: > - FalkorDB implements a subset of the Cypher language, which is growing as development continues. + The WITH clause allows parts of queries to be independently executed and have their results handled uniquely. parent: "Cypher Language" --- diff --git a/datatypes.md b/datatypes.md index 320371b..2a8d31e 100644 --- a/datatypes.md +++ b/datatypes.md @@ -4,11 +4,11 @@ description: "FalkorDB supports a number of distinct data types, some of which c nav_order: 5 --- -## Graph types +# Graph types All graph types are either structural elements of the graph or projections thereof. None can be stored as a property value. -### Nodes +## Nodes Nodes are persistent graph elements that can be connected to each other via relationships. @@ -22,7 +22,7 @@ When querying nodes, multiple labels can be specified. Only nodes that hold all $ redis-cli GRAPH.QUERY G "MATCH (n:Place:Continent) RETURN n" ``` -### Relationships +## Relationships Relationships are persistent graph elements that connect one node to another. @@ -38,7 +38,7 @@ When querying relationships, multiple types can be specified when separated by t $ redis-cli GRAPH.QUERY G "MATCH (:Person)-[r:RESIDENT_OF|:VISITOR_TO]->(:Place {name: 'London'}) RETURN r" ``` -### Paths +## Paths Paths are alternating sequences of nodes and edges, starting and ending with a node. diff --git a/design/bulk_spec.md b/design/bulk_spec.md index bc5a037..71d2b08 100644 --- a/design/bulk_spec.md +++ b/design/bulk_spec.md @@ -5,6 +5,8 @@ description: > parent: "The FalkorDB Design" --- +# GRAPH.BULK endpoint specification + The FalkorDB bulk loader uses the GRAPH.BULK endpoint to build a new graph from 1 or more Redis queries. The bulk of these queries is binary data that is unpacked to create nodes, edges, and their properties. This endpoint could be used to write bespoke import tools for other data formats using the implementation details provided here. diff --git a/design/client_spec.md b/design/client_spec.md index f80533a..838c8ef 100644 --- a/design/client_spec.md +++ b/design/client_spec.md @@ -5,6 +5,8 @@ description: > parent: "The FalkorDB Design" --- +# Client Specification + By design, there is not a full standard for FalkorDB clients to adhere to. Areas such as pretty-print formatting, query validation, and transactional and multithreaded capabilities have no canonically correct behavior, and the implementer is free to choose the approach and complexity that suits them best. FalkorDB does, however, provide a compact result set format for clients that minimizes the amount of redundant data transmitted from the server. Implementers are encouraged to take advantage of this format, as it provides better performance and removes ambiguity from decoding certain data. This approach requires clients to be capable of issuing procedure calls to the server and performing a small amount of client-side caching. diff --git a/design/index.md b/design/index.md index 5301f32..538c5fb 100644 --- a/design/index.md +++ b/design/index.md @@ -5,6 +5,8 @@ has_children: true nav_order: 999 --- +# The FalkorDB Design + ## Abstract Graph-based data is everywhere nowadays. Facebook, Google, Twitter and Pinterest are just a few who've realize the power diff --git a/design/result_structure.md b/design/result_structure.md index 6d16666..09a9584 100644 --- a/design/result_structure.md +++ b/design/result_structure.md @@ -1,10 +1,12 @@ --- -title: "FalkorDB Result Set Structure" +title: "Result Set Structure" description: The Result Set's format parent: "The FalkorDB Design" --- -This document describes the format FalkorDB uses to print data when accessed through the `redis-cli` utility. The [language-specific clients](/graph/clients) retrieve data in a more succinct format, and provide their own functionality for printing result sets. +# Result Set Structure + +This document describes the format FalkorDB uses to print data when accessed through the `redis-cli` utility. The [language-specific clients](/clients) retrieve data in a more succinct format, and provide their own functionality for printing result sets. ## Top-level members diff --git a/index.md b/index.md index ed04ab7..9ce3b24 100644 --- a/index.md +++ b/index.md @@ -24,7 +24,7 @@ FalkorDB is a blazing fast graph database used for low latency & high throughput ## Give it a try -Launch an instance using docker, or use our [sandbox](https://cloud.falkordb.com/sandbox) +Launch an instance using docker, or use [FalkorDB Clouds](https://app.falkordb.cloud) ```sh docker run -p 6379:6379 -p 3000:3000 -it --rm falkordb/falkordb:latest diff --git a/k8s_support.md b/k8s_support.md index 6d28174..10ee2f8 100644 --- a/k8s_support.md +++ b/k8s_support.md @@ -4,11 +4,11 @@ nav_order: 9 description: "Deploy FalkorDB to Kubernetes." --- -## Kubernetes support for FalkorDB +# Kubernetes support for FalkorDB FalkorDB can be deployed on Kubernetes using Helm charts and Docker images. This guide will walk you through the process. -### Prerequisites +## Prerequisites Before you begin, make sure you have Helm installed on your Kubernetes cluster. @@ -19,7 +19,7 @@ To deploy FalkorDB to Kubernetes we need to use: And follow these steps: -### Step 1: Create a `values.yaml` File +## Step 1: Create a `values.yaml` File Create a values.yaml file with the following content: @@ -41,7 +41,7 @@ This file specify the FalkorDB image(you can choose different tags) and configure the master and slave to load the FalkorDB module. For additional configurations [see the official Helm chart documentation](https://github.com/bitnami/charts/blob/main/bitnami/redis/values.yaml) -### Step 2: Install FalkorDB Helm Charts +## Step 2: Install FalkorDB Helm Charts Install the helm charts using the following command: ```bash @@ -51,7 +51,7 @@ helm install -f values.yaml my-falkordb oci://registry-1.docker.io/bitnamicharts This command deploys FalkorDB with the configuration from values.yaml. After running this command, instructions on how to connect to the FalkorDB server will be displayed. -### Step 3: Retrieve the FalkorDB Password +## Step 3: Retrieve the FalkorDB Password To connect to FalkorDB, you need the Redis password. Retrieve it using the following command: @@ -59,7 +59,7 @@ To connect to FalkorDB, you need the Redis password. Retrieve it using the follo export REDIS_PASSWORD=$(kubectl get secret --namespace default my-release-redis -o jsonpath="{.data.redis-password}" | base64 -d) ``` -### Step 4: Enable External Connections +## Step 4: Enable External Connections In a new terminal, run the following command to port-forward to the FalkorDB server, allowing external connections: @@ -67,7 +67,7 @@ In a new terminal, run the following command to port-forward to the FalkorDB ser kubectl port-forward --namespace default svc/my-falkordb-redis-master 6379:6379 ``` -### Step 5: Connect to FalkorDB Using `redis-cli` +## Step 5: Connect to FalkorDB Using `redis-cli` You can now connect to FalkorDB using redis-cli with the following command: @@ -75,7 +75,7 @@ You can now connect to FalkorDB using redis-cli with the following command: REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379 ``` -### Step 6: Run a Simple Cypher Query +## Step 6: Run a Simple Cypher Query To test your FalkorDB installation, run a simple Cypher query: diff --git a/llm_support.md b/llm_support.md index 3dd938b..ff85905 100644 --- a/llm_support.md +++ b/llm_support.md @@ -1,10 +1,10 @@ --- -title: "LLM support" +title: "LLM frameworks support" nav_order: 8 description: "FalkorDB supports a number of LLM frameworks." --- -## LLM frameworks +# LLM frameworks support We are working on adding support for FalkorDB in most of the LLM frameworks including: diff --git a/path_algorithm.md b/path_algorithm.md index c7b1f77..21f46e0 100644 --- a/path_algorithm.md +++ b/path_algorithm.md @@ -4,6 +4,8 @@ nav_order: 5 description: "Learn how to use algo.SPpaths and algo.SSpaths to find single-pair and single-source paths" --- +# Path algorithms + RedisGraph 2.10 introduced two new path-finding algorithms, or more accurately, minimum-weight, optionally bounded-cost, and optionally bounded-length path-finding algorithms, `algo.SPpaths` and `algo.SSpaths`. `algo.SPpaths` and `algo.SSpaths` can solve a wide range of real-world problems, where minimum-weight paths need to be found. `algo.SPpaths` finds paths between a given pair of nodes, while `algo.SSpaths` finds paths from a given source node. Weight can represent time, distance, price, or any other measurement. A bound can be set on another property (e.g., finding a minimum-time bounded-price way to reach from point A to point B). Both algorithms are performant and have low memory requirements.