An app for researchers of history and normal people to determine historicity.
Research into history(and many soft sciences) depend on structured study of events and underlying relationships. Every year or few years, a research student new to a field reads texts and sources, both primary and secondary. He/she spends time reading raw text, drawing a graph of relationships between people, events, chains of narration, artifacts. The he/she writes a monograph, which is again raw text. Instead if we record history as graphs, significant effort is saved both in storage and research querying. To some extent, research studies already try to build such graphs using bibliography. But if we represent every event using graphs, it makes apparent the different relationships between subjects.
What it does
Our app allows recording statements. Every statement is a record made by a person about themselves or about what another person said or did. Statements are either made in meetings or in books authored by the person. We can then query statements based on filters.
How we built it
We built the app using Grandstack starter running against a free tier Aura database.
Challenges we ran into
The integration was smooth due to grandstack-starter-app cli.
What we learned
We learned some interesting things about tradeoffs while using graphdb. One loss is that of ordering statements made in a book by a person. For instance, we have no obvious way to order sections of a legislative Act and query them. This is especially a problem when ordering sections like Section 6A after Section 6 which happens often after an amendment to a law inserts a new Section.
What's next for NeoHistoricity
As further steps we need to refine the schema choice and support the following:
- Migrations - When the schema of our db is not satisfactory, we should have transitions(set of mutations) which allow for our graph to add details, change schema and do similar transitions which are akin to migrations of traditional relational databases.
- Attribution - A wikipedia like attribution/history trace is helpful to unwind and rewind changes.
- Ordinality - There are some cases where we will need order of events which cannot be captured by graph databases.
- Semantic search - Traditional text based search and other techniques are still valuable when applied on top of graphs.