The Absolute Basics
Blawx uses puzzle-like drag and drop pieces to allow you to specify facts, rules, and questions. Only the right kinds of pieces will fit into each other. If two pieces refuse to connect, it means you are trying to connect the wrong kind of piece. Hold your mouse over the piece you are trying to connect to, and some help text may appear to guide you.
A category is a type of object that might exist in the problem you’re trying to solve. It has a list of attributes, that can be a number, a piece of text, or a yes/no value.
Once you state that a category exists, it will appear in the “Known Categories” part of the interface.
Once you state a category has an attribute, that attribute will appear in the “Known Attributes” part of the interface.
An object is an actual thing that exists in your problem. So if “Person” is a category, “Bob” would be an object. An object can be made part of one or more categories. You can also give one or more values to the attributes of that object.
Note that as of right now, the tool doesn’t prevent you from setting attributes on an object for categories that the object doesn’t belong to.
When you state that an object exists, it will appear in the “Known Objects” part of the interface.
Facts, Rules, and Questions
All statements must be connected to a Fact block, a Rule block, or a Query block, or it won’t work.
The “we know that” block is used to set out facts. You can add as many as you want.
The Rule block allows you to say “we know ____ is true IF _____ is true”. Note that the order is reversed from what you might be used to in other programming languages. The conclusion of the statement comes first, the condition comes last.
If you add more than one condition, they must all be true, unless you use “or” operators from the logic section of the interface.
A question is set out using the “Is it true that” block. Note that if you use a variable in an “is it true that” block, the reasoner will treat it as a request to find all facts in the database that can be used to show that the statement is true. It will count them, and provide them.
An attribute can be given a value. For example, an object in the person category can be given a name, and an age. Grab pieces from the Values section of the interface to do this.
Anywhere that you can specify an object or a value, you can instead put in a variable. A variable “A” means “any object or value in the database, which I will refer to as A”. If you use a name for a variable more than once in the same question, or condition of a rule, you are saying that in order to satisfy those conditions the variable named “A” has to have the same value in each place it is used.