Skip to main content

Contextualise is an effective tool particularly suited for organising information-heavy projects and activities consisting of unstructured and widely diverse data and information resources

Project description

Contextualise: Structured Knowledge

Contextualise logo

Contextualise is an effective tool particularly suited for organising information-heavy projects and activities consisting of unstructured and widely diverse data and information resources — think of investigative journalism, personal and professional research projects, world building (for books, movies or computer games) and many kinds of hobbies.

Contextualise's main dependency is TopicDB, an open source topic maps-based graph store. Topic maps provide a way to describe complex relationships between abstract concepts and real-world (information) resources.

Check out the Awesome Knowledge Management resource, a curated list of amazingly awesome articles, people, projects, applications, software libraries and projects related to the knowledge management space. Alternatively, if you are interested in reading more in-depth articles in relation to knowledge management in general and Contextualise in particular, then check out my blog.

Contextualise's "My maps" view

Contextualise's "My maps" view

Contextualise's topic view

Contextualise's topic view

Contextualise's navigable network graph view

Contextualise's navigable network graph view

Contextualise's interactive 3D viewer

Contextualise's interactive 3D viewer

Why?

I built and published my first (topic maps-based) knowledge documentation tool in 2006 which I was still using until quite recently, almost unmodified, fourteen years later. If I remember correctly, it was built with PHP version 5.2.5! Fourteen years is an eternity in software terms. Nowadays, my preferred choice for web development is Python together with the Flask web development framework.

After fourteen years of using my own and other knowledge management tools, I have several improvements in mind for the next version (many of which are simplifications, for that matter). And perhaps one of the most important reasons for building a new tool like this is that I want it to be open source: both Contextualise (the web application) and TopicDB (the actual topic maps engine on top of which Contextualise is built — also developed by me) are licensed with the permissive open source MIT license.

Feature Support

The following provides an overview of Contextualise's existing (and planned) feature set:

Existing Features

  • Support for multiple (self-contained) topic maps
  • Support for both private and public topic maps (the latter of which is not available to non-admin users until support to deal with inappropriate content is in place)
  • Extensive support for notes including the ability to attach a note to an existing topic and convert a note into a topic
  • Markdown-based text editor for topic text and notes
  • The ability to attach files (including images, PDFs, and so forth) to topics
  • The ability to attach (glTF-based) 3D scenes to topics with an accompanying interactive 3D scene viewer
  • Powerful (semantic) associations with the ability to create typed associations with role-based members
  • Flexible filtering of base names, topic occurrences and associations by scope (that is, context)
  • Navigable network graph visualisation of related topics
  • Auto-complete on all form fields that expect a topic reference
  • Google Docs-like collaboration; that is, being able to share topic maps with other Contextualise users for the purpose of collaboration in one of three ways: 1) can view, 2) can comment or 3) can edit
  • Support for user-defined knowledge paths
  • In place topic creation
  • Quick association creation for frictionless topic-linking and knowledge discovery
  • Associative tagging
  • Augmented Reality (AR) support for 3D occurrences
  • Syntax highlighing for numerous programming languages based on Pygments

Post Version 1.0 Features

  • Network graph visualisation filtering by association types
  • Full-text search
  • Google Maps support to see a topic within its geographical context on one hand and to be able to navigate between topics by means of a (geographic) map, on the other hand
  • Timeline support allowing for the navigation between topics using a visual timeline component
  • WikiMedia API integration to automatically enhance existing topics with relevant information from Wikipedia

For a more exhaustive list of planned features take a look at Contextualise's list of issues.

Installation

Contextualise can be installed using pip:

$ pip install --upgrade contextualise

Contextualise requires Python 3.7 or higher.

Basic Usage

Create a file with the following content:

DATABASE_FILE = "contextualise.db"

Save the file in, for example, your home directory with the file name settings.cfg. Once you have saved the file, open a terminal and export the following two environment variables:

$ export FLASK_APP=contextualise
$ export CONTEXTUALISE_SETTINGS=/home/brettk/settings.cfg

The CONTEXTUALISE_SETTINGS environment variable ìs the path to the settings.cfg file you created (and saved) previously. In the example above, /home/brettk is my home directory and that is where I have saved the settings file. Now, you can actually run Contextualise:

$ flask run

This will start the Flask development server on port 5000 — visit http://localhost:5000/ to access Contextualise.

Several users (with the roles of admin and user, respectively) are created by the application. To log in as the admin user, provide the following credentials: admin@contextualise.dev (user name) and Passw0rd1 (password). To log in as a non-admin user, provide the following credentials: user@contextualise.dev and Passw0rd1.

Flask's built-in server is not suitable for production purposes. However, it is quite straightforward to run Contextualise using Gunicorn, a Python WSGI HTTP server:

$ gunicorn -w 2 -b 0.0.0.0:5000 contextualise.wsgi:app

For further information for properly running a flask application in production, take a look at Flask's own documentation regarding deploying.

Install the Development Version

If you have Git installed on your system, it is possible to install the development version of Contextualise.

Do:

$ git clone https://github.com/brettkromkamp/contextualise
$ cd contextualise
$ git checkout develop
$ pip install -e .

The pip install -e . command allows you to follow the development branch as it changes by creating links in the right places and installing the command line scripts to the appropriate locations.

Then, if you want to update Contextualise at any time, in the same directory do:

$ git pull

TopicDB, the topic maps engine on top of which Contextualise is built is regularly updated. However, the version of TopicDB published on PyPI could lag behind. For that reason, it is recommended that you also install TopicDB directly from GitHub:

$ pip uninstall topic-db
$ git clone https://github.com/brettkromkamp/topic-db.git
$ cd topic-db
$ git checkout develop
$ pip install -e .

Then, if you want to update TopicDB at any time, in the same directory do:

$ git pull

Finally, to run the application in development mode you need to change to the project's top-level directory and set two environment variables followed by running the flask command with the run parameter:

$ export FLASK_APP=contextualise
$ export FLASK_ENV=development
$ flask run

You should see something similar to the following in the terminal:

* Serving Flask app "contextualise" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 521-258-444

Opening the browser and navigating to http://127.0.0.1:5000/ should result in showing something similar to the application's Welcome page.

The Contextualise Welcome page

The Contextualise Welcome page

Documentation

Work in progress (February 2022).

Miscellaneous

Currently, I am using Contextualise for, among others, worldbuilding purposes of the Brave Robot fictional universe including its Codex Roboticus.

The Codex Roboticus project

The Codex Roboticus project

How to Contribute

  1. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
  2. Fork the repository on GitHub to start making your changes to the master branch (or branch off of it).
  3. Write a test which shows that the bug was fixed or that the feature works as expected.
  4. Send a pull request and bug the maintainer until it gets merged and published :)

Final Words

I hope you enjoy using Contextualise as much as I enjoy developing it. What's more, I also genuinely hope that Contextualise can help you to improve how you organize your knowledge. If you have any suggestions, questions or critique with regards to Contextualise, I would love to hear from you.

I will see you again, in the place where no shadows fall. — Ambassador Delenn, Babylon 5

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

contextualise-1.0.1.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

contextualise-1.0.1-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file contextualise-1.0.1.tar.gz.

File metadata

  • Download URL: contextualise-1.0.1.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for contextualise-1.0.1.tar.gz
Algorithm Hash digest
SHA256 b506902280c11f75633b8fa22f66fa3da7bea0b88f47fc559113c98dedd70bb7
MD5 5854d4fd1c977c2f500251d0df55d041
BLAKE2b-256 d8fc9d92c4a5191278c7783b64e1daa4809be31fafa6113795d233b289985f32

See more details on using hashes here.

File details

Details for the file contextualise-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: contextualise-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for contextualise-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8f7d9cb349d1e8b7425eead0f6bba70195696eb73f2d24fbdbe9f06daafa959
MD5 fc4ed74e000e4ff07a07b4f2f6d28aca
BLAKE2b-256 7880a49154ea4f4e489cde2309641ccaf3983756360256c64f475ee584b39bad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page