Package: contextualise
Contextualise: Structured KnowledgeContextualise 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 isTopicDB, an open sourcetopic maps-based graph store. Topic maps provide a way to describe complex relationships between abstract concepts and real-world (information) resources.Check out theAwesome Knowledge Managementresource, 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 myblog.Contextualise's "My maps" viewContextualise's topic viewContextualise's navigable network graph viewContextualise's interactive 3D viewerWhy?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 isPythontogether with theFlaskweb 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 sourceMIT license.Feature SupportThe following provides an overview of Contextualise's existing (and planned) feature set:Existing FeaturesSupport for multiple (self-contained) topic mapsSupport for both private and public topic maps (the latter of which is not available to non-admin users until support to deal withinappropriate contentis in place)Extensive support for notes including the ability to attach a note to an existing topic and convert a note into a topicMarkdown-based text editor for topic text and notesThe ability to attach files (including images, PDFs, and so forth) to topicsThe ability to attach (glTF-based) 3D scenes to topics with an accompanying interactive 3D scene viewerPowerful (semantic) associations with the ability to create typed associations with role-based membersFlexible filtering of base names, topic occurrences and associations by scope (that is, context)Navigable network graph visualisation of related topicsAuto-complete on all form fields that expect a topic referenceGoogle Docs-likecollaboration; 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 editSupport for user-definedknowledge pathsIn place topic creationQuick association creation for frictionless topic-linking and knowledge discoveryAssociative taggingAugmented Reality(AR) support for 3D occurrencesSyntax highlighing for numerous programming languages based onPygmentsPost Version 1.0 FeaturesNetwork graph visualisation filtering by association typesFull-text searchGoogle 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 handTimelinesupport allowing for the navigation between topics using a visual timeline componentWikiMedia API integration to automatically enhance existing topics with relevant information fromWikipediaFor a more exhaustive list of planned features take a look at Contextualise's list ofissues.InstallationContextualise can be installed usingpip:$ pip install --upgrade contextualiseContextualise requires Python 3.7 or higher.Basic UsageCreate a file with the following content:DATABASE_FILE = "contextualise.db"Save the file in, for example, yourhomedirectory with the file namesettings.cfg. Once you have saved the file, open a terminal and export the following environment variable:$ export CONTEXTUALISE_SETTINGS=$HOME/settings.cfgTheCONTEXTUALISE_SETTINGSenvironment variable is the path to thesettings.cfgfile you just created.Flask's built-in server is not suitable for production purposes. However, it is straightforward to run Contextualise usingGunicorn, a PythonWSGIHTTP server. To run Contextualise do:$ gunicorn -w 2 -b 0.0.0.0:5000 contextualise.wsgi:appThis will start the application — visithttp://127.0.0.1:5000/to access Contextualise.Several users (with the roles ofadminanduser, respectively) are created by the application. To log in as the admin user, provide the following credentials:admin@contextualise.dev(user name) andPassw0rd1(password). To log in as a non-admin user, provide the following credentials:user@contextualise.devandPassw0rd1.For further information for properly running a flask application in production, take a look at Flask's own documentation regardingdeploying.Install the Development VersionIf you haveGitinstalled 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 .Thepip 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 pullTopicDB, the topic maps engine on top of which Contextualise is built is regularly updated. However, the version of TopicDB published onPyPIcould 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 pullFinally, to run the application indevelopmentmode you need to change to the project's top-level directory and set two environment variables followed by running theflaskcommand with therunparameter:$ export FLASK_APP=contextualise
$ export FLASK_ENV=development
$ flask runThis will start the Flask development server on port 5000 — you should see something similar to the following in the terminal:* Serving Flask app 'contextualise' (lazy loading)
* Environment: development
* Debug mode: on
[2022-02-15 18:45:29,133] INFO in __init__: Contextualise startup
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 122-493-008
[2022-02-15 18:45:29,866] INFO in __init__: Contextualise startupOpening the browser and navigating tohttp://127.0.0.1:5000/should result in showing the application'sWelcomepage.The Contextualise Welcome pageDocumentationWork in progress (February 2022).ToolsJetBrainshas kindly provided a license for their full suite of developer tools for Contextualise's
development as part of theirLicenses for Open Source Developmentprogram.MiscellaneousCurrently, I am using Contextualise for, among others, worldbuilding purposes of the Brave Robot fictional universe including itsCodex Roboticus.The Codex Roboticus projectHow to ContributeCheck for open issues or open a fresh issue to start a discussion around a feature idea or a bug.Forkthe repositoryon GitHub to start making your changes to themasterbranch (or branch off of it).Write a test which shows that the bug was fixed or that the feature works as expected.Send a pull request and bug the maintainer until it gets merged and published :)Final WordsI 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