{"id":13516525,"url":"https://github.com/RecallGraph/RecallGraph","last_synced_at":"2025-03-31T06:31:13.944Z","repository":{"id":39778515,"uuid":"165995818","full_name":"RecallGraph/RecallGraph","owner":"RecallGraph","description":"A versioning data store for time-variant graph data.","archived":false,"fork":false,"pushed_at":"2023-01-14T14:34:55.000Z","size":4522,"stargazers_count":331,"open_issues_count":10,"forks_count":25,"subscribers_count":11,"default_branch":"development","last_synced_at":"2024-04-14T03:15:13.539Z","etag":null,"topics":["arangodb","data-versioning","dynamic-networks","foxx-microservice","streaming-graph-data","temporal-graphs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RecallGraph.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":"recallgraph","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2019-01-16T07:36:38.000Z","updated_at":"2024-02-12T01:11:52.000Z","dependencies_parsed_at":"2023-02-09T19:45:49.856Z","dependency_job_id":null,"html_url":"https://github.com/RecallGraph/RecallGraph","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecallGraph%2FRecallGraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecallGraph%2FRecallGraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecallGraph%2FRecallGraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecallGraph%2FRecallGraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RecallGraph","download_url":"https://codeload.github.com/RecallGraph/RecallGraph/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245719623,"owners_count":20661290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arangodb","data-versioning","dynamic-networks","foxx-microservice","streaming-graph-data","temporal-graphs"],"created_at":"2024-08-01T05:01:23.128Z","updated_at":"2025-03-31T06:31:13.920Z","avatar_url":"https://github.com/RecallGraph.png","language":"JavaScript","funding_links":["https://opencollective.com/recallgraph"],"categories":["JavaScript","others","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"![Logo](assets/Rg-1-bg.jpg)\n\n# RecallGraph - A versioning data store for time-variant graph data.\nRecallGraph is a _versioned-graph_ data store - it retains all changes that its data (vertices and edges) have gone\nthrough to reach their current state. It supports _point-in-time_ graph traversals, letting the user query any past\nstate of the graph just as easily as the present.\n\nIt is a [Foxx Microservice](https://www.arangodb.com/why-arangodb/foxx/) for [ArangoDB](https://www.arangodb.com/) that\nfeatures _VCS-like_ semantics in many parts of its interface, and is backed by a transactional event tracker. It is\ncurrently being developed and tested on ArangoDB v3.6, with support for v3.7 in the pipeline.\n\n## Do I Need a 'Versioned Graph' Database?\nTo get an idea of where such a data store might be used, see:\n\n1. [The Case for Versioned Graph Databases](https://adityamukho.com/the-case-for-versioned-graph-databases/),\n1. [Illustrative Problems in Dynamic Network Analysis](https://en.wikipedia.org/wiki/Dynamic_network_analysis#Illustrative_problems_that_people_in_the_DNA_area_work_on)\n\nAlso, check out the recording below (RecallGraph presented @ ArangoDB Online Meetup)\n\n[![YouTube link for RecallGraph presentation](http://img.youtube.com/vi/UP2KDQ_kL4I/0.jpg)](http://www.youtube.com/watch?v=UP2KDQ_kL4I \"RecallGraph Presented @ ArangoDB Online Meetup\")\n\n**TL;DR:** RecallGraph is a potential fit for scenarios where data is best represented as a network of vertices and edges (i.e., a graph) having the following characteristics:\n1. Both vertices and edges can hold properties in the form of attribute/value pairs (equivalent to JSON objects).\n1. Documents (vertices/edges) mutate within their lifespan (both in their individual attributes/values and in their relations with each other).\n1. Past states of documents are as important as their present, necessitating retention and queryability of their change history.\n\nRefer to the [documentation](https://adityamukho.gitbook.io/recallgraph-docs) for an in-depth introduction.\n\n## API Features\nRecallGraph's API is split into 3 top-level categories:\n\n### Document\n- **Create** - Create single/multiple documents (vertices/edges).\n- **Replace** - Replace entire single/multiple documents with new content.\n- **Delete** - Delete single/multiple documents.\n- **Update** - Add/Update specific fields in single/multiple documents.\n- **Restore** - Restore deleted nodes back to their last known undeleted state.\n- **(Planned) Materialization** - Point-in-time checkouts.\n- **(Planned) CQRS/ES Operation Mode** - Async implicit commits.\n\n### Event\n- **Log** - Fetch a log of events (commits) for a given path pattern (path determines scope of documents to pick). The log can be optionally grouped/sorted/sliced within a specified time interval.\n- **Diff** - Fetch a list of forward or reverse commands (diffs) between commits for specified documents.\n- **Explicit Commits** - Commit a document's changes separately, after it has been written to DB via other means (AQL / Core REST API / Client).\n- **(Planned) Branch/Tag** - Create parallel versions of history, branching off from a specific event point of the main timeline. Also, tag specific points in branch+time for convenient future reference.\n\n### History\n- **Show** - Fetch a set of documents, optionally grouped/sorted/sliced, that match a given path pattern, at a given point in time.\n- **Filter** - In addition to a path pattern like in **'Show'**, apply an expression-based, simple/compound post-filter on the retrieved documents.\n- **Traverse** - A point-in-time traversal (walk) of a past version of the graph, with the option to apply additional post-filters to the result.\n- **k Shortest Paths** - Point-in-time, weighted, shortest paths between two endpoints.\n- **Purge** - Delete all history for specified nodes.\n\n## Installation\nRecallGraph installs like any other _Foxx Microservice_ inside a database, on an ArangoDB instance.\n\n1. Download the [latest release](https://github.com/RecallGraph/RecallGraph/releases).\n2. Follow the instructions in the [Foxx Deployment Manual](https://www.arangodb.com/docs/3.6/foxx-deployment.html). The web interface is the easiest, while the `foxx-cli` is more suitable for power users.\n\n### Install From Source\nRefer to the [installation docs](https://adityamukho.gitbook.io/recallgraph-docs/working-with-recallgraph/installation#from-source) if you want to install from source.\n\n## Documentation\n\n### API\n#### HTTP API\n- API documentation is hosted at [SwaggerHub](https://app.swaggerhub.com/apis-docs/RecallGraph/RecallGraph/1.0.0#/).\n- API documentation is also available directly in the Swagger console once the service is installed (accessed through ArangoDB's web UI).\n\n#### Provider API\n- API documentation is hosted at [Github Pages](https://recallgraph.github.io/RecallGraph/lib/handlers/providers.html).\n\n### Concepts and Guides\nUser guides, glossary and technical docs are available at the [main documentation website](https://adityamukho.gitbook.io/recallgraph-docs).\n\n## Limitations\n1. Although the test cases are quite extensive and have good coverage, this service has only been tested on single-instance DB deployments, and **not on clusters**.\n2. As of version 3.6, ArangoDB does not support ACID transactions for multi-document/collection writes in [cluster mode](https://www.arangodb.com/docs/3.6/transactions-limitations.html#in-clusters). Transactional ACIDity is not guaranteed for such deployments.\n\n## Development Roadmap\n1. Support for absolute/relative revision-based queries on individual documents (in addition to the timestamp-based queries supported currently),\n1. Branching/tag support,\n1. Support for the _valid time_ dimension in addition to the currently implemented _transaction time_ dimension (https://www.researchgate.net/publication/221212735_A_Taxonomy_of_Time_in_Databases),\n1. Support for ArangoDB v3.7,\n1. Multiple, simultaneous materialized checkouts (a la `git`) of selectable sections of the database (entire DB, named graph, named collection, document list, document pattern), with eventual branch-level specificity,\n1. CQRS/ES operation mode (async implicit commits),\n1. Support for ArangoDB clusters (limited at present by lack of support for multi-document ACID transactions in clusters).\n1. Multiple authentication and authorization mechanisms.\n\n## Get in Touch\n- Raise an issue or PR on this repo, or\n- Mail me (![Email Link](http://safemail.justlikeed.net/e/aa7232bbfc22c7580ae7a4b561562e0b.png)), or\n- Join the Gitter channel - [https://gitter.im/RecallGraph/community](https://gitter.im/RecallGraph/community).\n\n## Disclaimer\nThe authors and maintainers of RecallGraph are not liable for damages or indemnity (express or implied) for loss of any kind incurred directly or indirectly as a result of using this software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRecallGraph%2FRecallGraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRecallGraph%2FRecallGraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRecallGraph%2FRecallGraph/lists"}