RABJ

From Freebase

Jump to: navigation, search

This article describes Alpha level software, which means that it is a highly experimental project that may change or disappear without notice. You are welcome to experiment with this software, but please do not rely on it.

If you want to dive into code, then do the RABJ Tutorial.

What is RABJ?

RABJ is a web service that manages contributions to Freebase in the form of answers to questions.

It was created with the intent of simplifying the creation of data games and other Freebase apps that make it easier for users to contribute to Freebase by presenting them with questions and processing their answers.

How does RABJ work?

RABJ stores 'questions' in 'queues'. Your app asks RABJ for a number of 'questions' from a particular 'queue', present these questions to a user and sends the answers back to to RABJ that saves them and infers judgments from them.

RABJ is designed to support multiple votes and the collection of votes on data that may never be written to the graph. Metaweb uses RABJ to set thresholds on machine learning tasks and to evaluate the results of purely experimental processes. If you want to write to OTG, consider callbacks or a periodic poll. Metaweb prefers & uses periodic polling internally.

Where do the questions come from?

RABJ supports two types of queues: regular queues and mql queues.

Regular queues are empty when created and need to be populated directly with questions. This is the case, for example, for Typewriter where information coming from Wikipedia categories is used to generate questions about possible types for topics. These machine-generated questions are then fed into a RABJ queue and the Typewriter data game is used to empty the queue.

MQL queues are queues that are created with a MQL query that RABJ uses to obtain questions directly from Freebase. This is equivalent to using mql 'cursors' but RABJ keeps the state of that cursor across different users so that users never have to see the same question twice.

Which kind of queue is right for me?

If the data your app needs to present a user with a question is already present in Freebase (say "all people without gender definition" or "all locations without coordinates"), than a 'mql queue' is probably what you want: you only need to come up with the MQL query that gathers the data that your app needs to formulate a question and tell RABJ to generate a queue for you with that MQL query.

On the other hand, if the data to create a question is not entirely contained in Freebase, you need to generate the questions yourself and push them into a queue. In practice this means that you tell RABJ to create a regular queue (that would start out as empty) and then populate the queue with questions that you come up with yourself. This type of queues have the maximum flexibility since it allows them to contain whatever questions you want, but they are a little more advanced as they require more work to setup.

How do I see what queues are already available in RABJ?

Use the RABJ Explorer to find out.

How do I create a new queue?

Use the RABJ Queue Maker.

How do I use RABJ?

The RABJ Acre Library abstracts away all the protocol interactions between your app and RABJ's web services and greatly simplifies using it. Read the RABJ Tutorial to find out how to use it in your own app.

Are there apps that already use RABJ that I can learn from or clone?

RABJ is still an experimental service but there are a few apps that already make use of it (all these use the RABJ Acre Library mentioned above):

What is an access_key and why do I need one?

An Acre app can talk to a RABJ queue only if it has the right access_key stored in its keystore. Read the section on keys in the RABJ Tutorial to learn more about how to obtain a queue access key and how to store it in your Acre app keystore so that the RABJ library can use it.

Can I use RABJ to frobulate my prelestone? (or Is RABJ right for me?)

If you are attempting to collect human judgment about facts in Freebase either to improve quality of existing data or to add new one then RABJ is right for you. Other scenarios are more poorly suited, for examples:

  • RABJ is not a general purpose system to save state from your app.
  • RABJ is not a partial evidence store.
  • RABJ is not a way to collect subjective data, such as user feedback about features.

What does RABJ stand for anyway?

There are several interpretation of the RABJ acronym depending on who you talk to, the original interpretation is "Redundant Array of Brains in a Jar", but others include:

  • Responses Awaiting Better Judgment
  • Random Answers, By Jove!
  • (add yours here!)
Personal tools