This page about the logic language from ShapeLogic 0.9 and forward.
For a broader introduction to the logic system see Declarative logic .
IoC hold potential but has not been used yet.
Make menu items in ImageJ's menu for opening and running a user defined rule database, without user defined Java code. Since it was so easy to define rules in Java this have been given lower priority than originally planned.
One possible problem with moving rules to Java 6 Scripting, is that this requires that the user downloads engine interface files from Sun. This would make the installation of ShapeLogic more complicated now it is just unpacking a zip and moving it into ImageJ's plugin dir.
The only scripting language that works out of the box is JavaScript. While that is a reasonable language the integration with Java is not so great especially not Java 5.
It is also possible to connect Groovy and Java outside Java 6 Scripting, but then it would not be uniform.
DigitStreamVectorizer is an example showing what is needed to define a match of the numbers working as a plugin from ImageJ.
rule("A", POINT_COUNT, "==", 5.); rule("A", HOLE_COUNT, "==", 1.); rule("A", T_JUNCTION_LEFT_POINT_COUNT,"==", 1.); rule("A", T_JUNCTION_RIGHT_POINT_COUNT,"==", 1.); rule("A", END_POINT_BOTTOM_POINT_COUNT, "==", 2.); rule("A", HORIZONTAL_LINE_COUNT, "==", 1.); rule("A", VERTICAL_LINE_COUNT, "==", 0.); rule("A", END_POINT_COUNT, "==", 2.); rule("A", SOFT_POINT_COUNT, "==", 0.);
The "A" is saying apply this rule to the OH, object hypothesis, the letter A.
The next is just names of streams that generate the point count and hole count for the polygons. Then there is the predicate and the comparison value.
Lazy streams have the following features