#query-language #annis #linguistic #search-engine #back-end #node #text-search

graphannis

This is a new backend implementation of the ANNIS linguistic search and visualization system

80 releases (38 stable)

new 3.2.2 Apr 22, 2024
3.2.1 Mar 25, 2024
3.1.1 Feb 5, 2024
3.0.0 Nov 28, 2023
0.1.0 Apr 6, 2018

#222 in Database interfaces

Download history 9/week @ 2024-01-03 39/week @ 2024-01-10 4/week @ 2024-01-17 16/week @ 2024-01-31 11/week @ 2024-02-07 19/week @ 2024-02-14 74/week @ 2024-02-21 29/week @ 2024-02-28 3/week @ 2024-03-06 252/week @ 2024-03-13 144/week @ 2024-03-20 126/week @ 2024-03-27 136/week @ 2024-04-03 10/week @ 2024-04-10 88/week @ 2024-04-17

385 downloads per month
Used in 5 crates

Apache-2.0

1MB
25K SLoC

graphANNIS DOI Automated tests

This is a new backend implementation of the ANNIS linguistic search and visualization system (http://corpus-tools.org/annis/).

Only a sub-set of the ANNIS Query Language (AQL) from ANNIS version 3 (based on PostgreSQL) is supported yet. More operators can be added in the future, but the ones missing are the ones which have been used less frequent. There is a tutorial in the Developer Guide on how to embed graphANNIS in your own application.

The basic design ideas and data models are described in detail in the PhD-thesis "ANNIS: A graph-based query system for deeply annotated text corpora". The thesis describes a prototype implementation in C++ and not Rust, but the design ideas are the same. Notable differences/enhancements compared to the thesis are:

  • Graph storages implement querying inverse edges and finding reachable nodes based on them: this allows to implement inverse operators (e.g. for precedence) and switching operands in situations where it was not possible before.
  • The data model has been simplified: the inverse coverage component and inverse edges in the left-/right-most token component have been removed.
  • Additional query language features are now supported.

Documentation

Developing graphANNIS

You need to install Rust to compile the project. We recommend installing the following Cargo subcommands for developing annis-web:

Execute tests

You can run the tests with the default cargo test command. To calculate the code coverage, you can use cargo-llvm-cov:

cargo llvm-cov --open --all-features --ignore-filename-regex '(tests?\.rs)|(capi/.*)'

Performing a release

You need to have cargo-release installed to perform a release. Execute the follwing cargo command once to install it.

cargo install cargo-release

To perform a release, switch to the main branch and execute:

cargo release [LEVEL] --execute

The level should be patch, minor or major depending on the changes made in the release. Running the release command will also trigger a CI workflow to create release binaries on GitHub.

3rd party dependencies

This software depends on several 3rd party libraries. These are documented in the "third-party-licenses.html" file in this folder.

Language bindings

Author(s)

Dependencies

~16–28MB
~405K SLoC