Skip to content

ingef/conquery

Repository files navigation

Conquery

fast & efficient analysis

Last Release Code Size License

conquery Screenshot

Conquery is a powerful web-based tool to compose and execute queries against large event-like data sets.

Event data sets typically associate events with a certain subject (i.e. a person or a physical object). One common use case for the data is to identify groups of similar subjects based on the assumption that they share similar events in a given time frame.

Conquery supplies a powerful interface to group event types in a hierarchical concept tree structure. Elements of this tree represent a group of similar subjects. Those subjects can be composed into a powerful query that runs against the data set.

Requirements

  • Maven 3 (optional for building)
  • Java JDK 11
  • Node.js 18
  • curl (to import the test data)

Starting the demo

Frontend only

This repository includes the Conquery frontend along with a non-functional backend. It provides a set of example concept trees to demonstrate the capabilities of the UI: The example's use case is to search for groups of actors who appeared in movies of the same genre or received the same award.

Check the README in /frontend for details.

Frontend + Backend

Steps

To test frontend and backend together you can start the setup that is used for end-to-end tests.

First build the backend using conquery/scripts/build_backend_version.sh or download a JAR from the release page and place it in conquery/executable/target/.

Build the frontend by running:

cd frontend
cp .env.example .env
npm install
npm run build

You can then run conquery/scripts/run_e2e_all.sh to start frontend and backend, and also load the test data required by cypress end-to-end test or you can run conquery/scripts/run_e2e_backend.sh and conquery/scripts/run_e2e_frontend.sh separately without loading any data.

After that, you can visit http://localhost:8081/admin-ui and explore the Admin Panel.

The frontend is accessible at http://localhost:8000 as the default "superuser" implicitly. Since the backend uses a development authentication, you can switch users by passing another users "UserId" as the access token in the query string when accessing the frontend, e.g.: http://localhost:8000/?access_token=user.user2.

Configuration

The configuration options for the backend are based on Java classes which reside under this package . Usually you provide configuration with in a JSON file that is referenced by the start command:

java -jar conquery.jar standalone config.json

This config.json represents configuration root class .

We continuously improve and extend the documentation on these classes and will provide dedicated articles on specific configurations, such as:

Development

Testing

Apart from separate frontend and backend tests, the project also contains end-to-end tests powered by cypress.

To run the end-to-end test locally:

  1. Make sure you installed all requirements
  2. From the repo root folder run conquery/scripts/run_e2e_all.sh
  3. Wait until the output: Node server listening on port: 8000 appears
  4. To install cypress and it's dependencies, run npm install from an other terminal in the conquery/ folder
  5. Then run npx cypress open to start cypress
  6. Then chose a test suite and start it.

For further informations on this and other tests, please refer to the corresponding CI configuration.

Data Integration

To make you own data (in form of CSVs) availiable to conquery some steps are necessary:

  1. Describe your data table structure with meta data, by generating Import- and Table-JSONs.
  2. Describe your data content as Concept-JSON to provide query functionallity.
  3. Preprocess your data from CSV to CQPP.
  4. Upload everything.

To get a better impression of the single steps, take a look at the Tutorials

Custom Forms

It is possible to extend the analytic capabilities by adding custom forms. Custom forms provide an easy way for a user to perform standardized analyses. For more informations, take a look at the guide

Acknowledgements

This platform was created by InGef – Institut für angewandte Gesundheitsforschung Berlin GmbH in cooperation with bakdata GmbH and Kai Rollmann.

InGef – Institut für angewandte Gesundheitsforschung Berlin GmbHbakdata GmbHRollmann Software