Skip to content

Coleridge-Initiative/RCServer

Repository files navigation

Rich Context Server

This provides browser-based search and discovery for the Rich Context knowledge graph, including:

  • web app based on Flask
  • API based on OpenAPI/Swagger
  • UI based on PureCSS

Install

pip install -r requirements.txt

This web app requires a flask.cfg config file, which is not committed for security reason. You must create your own before running the web app. Parameters required in the configuration file include:

DEBUG = False
MAX_CONTENT_LENGTH = 52428800
PATH_DC_CACHE = "/tmp/richcontext"
SECRET_KEY = "place some secret here"
SEND_FILE_MAX_AGE_DEFAULT = 3000

To install for Ubuntu running on a GCP instance, see INSTALL.md

Command Line Interface

See python app.py --help for a list of command line options

Launch

python app.py

...then load http://localhost:5000/ in your browser.

Alternatively, you can run gunicorn to get a WSGI-compliant server:

gunicorn -w 4 -b 127.0.0.1:5000 wsgi:APP

Full Graph

To launch with the full knowledge graph, first download the latest JSON-LD file for the graph from:

Next, pre-compute the links for the KG:

python app.py --pre true --corpus full.jsonld

That rewrites the precomp.json file, which the web app loads to populate its data structures for the KG whenever it gets launched.

Then re-launch the web app.

Web Tokens

To generate web tokens for identifying HITL feedback from known users, first prepare a TSV file such as:

email	expiry	roles
foo@agency.gov	731	agency
kim@ci.org	5000	ci,ops

The input file is tab delimited and expected to have a header row, where the columns are:

  • email: email address for the user
  • expiry: how long the web token will be valid (in days)
  • roles: role descriptions (comma delimited)

The allowed roles must be from:

  • agency - agency staff
  • ci - Coleridge Initiative staff
  • expert - external expert (outside of an agency)
  • ops - operations for running the Rich Context web app

For example, if we've saved that file to usda.tsv then run the CLI to generate web tokens:

python app.py --token usda.tsv 

That will save the generated web tokens to a file token.txt along with their decrypted payloads, for example:

{'id': 'foo@agency.gov', 'roles': ['agency']}

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1cm46Y29sZXJpZGdlaW5pdGlhdGl2ZS5vcmc6cmljaGNvbnRleHQiLCJleHAiOjE2NDQ0Mjk1MDYsInNjbyI6eyJpZCI6ImZvb0BhZ2VuY3kuZ292Iiwicm9sZXMiOlsiYWdlbmN5Il19fQ.zAPYZJpuAkgPN5P7EqEbAVzBn2sV7THzQEvGJGAWbHg

Then provide the generated web token (long hex string) to each of the Rich Context users. These are very long strings, so be careful about handling line breaks -- that you don't introduce bad characters.

The users will each need to enter their web token into the Configure page from their browser.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •