Bedelibry: The intelligent research assistant

Bedelibry is a desktop, web, and mobile application that gives you the tools you need to organize and engage with your personal web of knoweldge. Bedelibry aims to empower every-day people with these tools for the furtherance of human knowldge, regardless of if you're a student, just a curious person, or working on ground-breaking research of your own.

Bedelibry is currently alpha quality software and under active development, so this page is just a glimpse of the features we have planned. For a current demo of the latest features, you can visit here

Organize and query your research

Bedelibry lets you define your own language of the entities and relationships you care about. Articles, papers, video lectures, personal notes -- one tool to organize and search your personal web of knowledge.

Always FOSS

Bedelibry is licensed under the AGPL v3 license -- ensuring that it will always remain free to use, view, and modify for your own purposes.

Keep your data private

Working on studying a topic you'd rather keep private? Bedelibry lets you keep your research notes secure by self-hosting your own server and using end-to-end encryption.

Powered by Haskell

Bedelibry is written in Haskell, allowing us to provide a reliable user experience with low maintenance cost, letting us focus on developing new features.

Mobile, Web, or Desktop

Wherever you are, there's a Bedelibry client to meet your needs. Reflex makes it easy for us to support you whatever your platform of choice.

Get Started

The easiest way to get started with Bedelibry it to just launch the web app. You can also download the latest version of Bedelibry for your platform on the download page.

Once you have a version of Bedelibry open and/or installed, you can find an introductory guide for how it's used in the tutorial.

How it works

Bedelibry works by allowing you to specify your own specailized languages for the fields that interest you. This is accomplished through a simple text specification language called Meriv. For instance, to specify a new type of object of interest to you, simply write type followed by the name of the object of interest, and ended with a period.

    type animal.

In Meriv, we call categories of such objects of interest types. If you want to specify other types of object relevant your studies that are a specail case of another type of objects of interest, that is declared as follows:

    type mammal :< animal.

:<  in the above can be read "is a type of". For instance "A mammal is a type of animal".

Once you've declared a type like "animal" or "mammal", you can declare "instances" (i.e. examples) of objects of those types. In Meriv, we call such objects "entities", and they are declared as follows:

    my_dog: mammal.

The colon in the above can be read as "is a" -- so the above reads "my_dog is a mammal".

Notice the underscore in the example above between "my" and "dog". For entities like this which are identified by more than a single word, we need to be sure to put underscores in-between each of those words so that it's perfectly clear that my_dog is a single entity, and not some kind of compound entity (that's a more advanced feature we'll get to later).

Before we go on, take a few entities of interest in your field of study/research, and try to model them as a simple Meriv schema. You can enter this into the bedelibry app under the "schema" page.

After doing that, go back to the home page, and type in one of your entities you have declared into the search bar. You should see something like this:

...

This is part of one of the key functionalities that Bedelibry provides -- the ability to search your personal knowledge base for something you only have partial information about. For instance, above we typed in my_dog, and Bedelibry was able to tell us (using Meriv symbology) that my_dog is a mammal.

Of course, this isn't incredibly useful by itself. Where Bedelibry shines is in it's ability to let us record the relationships between the kinds of entities we care about -- and to query that network of relationships to search for the information we are interested in recalling or analyzing.

We are able to accomplish this in Bedelibry because Meriv is actually what is known as a logic programming language -- if you're not the "programming type", or don't have much experience with other types of programming languages, don't be put off by this! Meriv is different from most conventional programming languages in that it is declarative. In other words, we're just defning (or declaring) the entities and relationships between them that we care about, and write down some examples of such entities and rules governing those relationships, then the computer does the rest of the work!

This takes a little bit of practice, but you definitely don't need to drop everything and go to some coding bootcamp. Bedelibry aims to bring the power of logic programming to everyone, no matter your background, areas of expertise, or even your language! (Meriv is designed to not be anglo-centric. No English required).

Contributions Welcome

Bedelibry was concieved of and originally developed by me -- Nathan Bedell. However, as big of a project as this is, there will always be things to do and things that could be improved, so as an open-source project, contributors are welcome!