Release Notes for Version 0.99 (Water Lily)
General
This version contains many bug fixes, performance enhancements,
and powerful extensions.
News
FLORA-2 is now distributed under the Apache License 2.0.
The following new features have been added to FLORA-2 in this release:
-
Defeasible rules.
-
Rule Ids and tags (for defeasible reasoning) can be specified.
-
Explicit negation neg.
-
User-defined functions.
-
Delay quantifiers, which allow goal reordering at runtime.
-
Hypothetical operators of Transaction Logic (possible <> and
not possible ~<>).
-
Incremental tabling is supported (subject to the limitations of XSB).
-
Sensor predicates.
-
Low-level predicates.
-
Table dump and non-termination analysis utilities.
Release Notes for Version 0.95 (Androcymbium)
General
FLORA-2 has undergone significant changes to make it more of a Web
language. The system has also become more robust and many interfaces and
enhancements were added. The syntax has been changed somewhat to make
FLORA-2 better aligned with other Semantic Web languages and, especially,
with other F-logic based languages. This resulted in incompatible
changes with respect to version 0.94 (see below; a special script is
provided to simplify conversion of old programs to the new syntax).
News
-
A new Java API
-
A new Eclipse-based editor/visualizer.
-
It is now possible to save the current state of a module in a file.
-
Directive for importing one module into another.
-
The meta-decomposition operator =.. now works not only for
Prolog terms but also for HiLog terms and for reified formulas.
-
It is now possible to specify the type (signature) of a Boolean method.
-
Cardinality constraints can now be specified in class signatures.
There are now standard methods for checking type and cardinality
constraints. They are defined for classes Type
and Cardinality, respectively, in the system
module _typecheck.
-
Structured primitive types, such
as dateTime, time, IRI, etc.
-
New syntax for compacr URIs to simplify specification of Web resources.
-
New system library for reading and parsing terms from standard input,
strings, and files.
Backward Incompatibility
Major incompatible changes of syntax: Some aspects of the syntax
has been aligned with other rule languages for the Web and with F-logic
based systems. There is a Perl script, convert.pl, in
the Misc subdirectory, which can greatly simplify conversion of
the old FLORA-2 programs. The file Misc/README explains how to use this
program.
-
Variables now start with ? and uppercase alphanumeric atoms do not need
to be quoted.
-
Transactional methods are now designated with the prefix % instead of
#.
-
The equality(flogic) option in the setsemantics
directive has been deprecated.
-
The meaning of path expressions in the head of a rule has changed:
they no longer create a new skolem term if the path expression does
not have a value. Instead, the body of the rule is considered false in
such a case.
-
The @prolog() and @prolog(module) module
specifications have been changed to @_prolog and
@_prolog(module). To sweeten the pill, _plg instead
of _prolog is also allowed. Likewise, @prologall()
and @prologall(module) have become @_prologall
and @_prologall(module), respectively, and the abbreviation
_plgall is also accepted.
-
The system module syntax @flora(module) has been changed to
@_module. For instance, @flora(sys) is
now @_sys.
-
debug[%check_undefined(on)]@flora(sys) is now
Method[%_mustDefine(on)]. The statement
debug[%check_undefined(on,foomodule)]@flora(sys)
is now Method[%_mustDefine(on(foomodule))], etc.
The statement debug[%ignore_undefcheck(...)] is now
Method[%_mustDefine(off,...).
-
The builtins that start with fl,
like flDemo, flEnd, etc., are now
called _demo, _end, and the like.
flImport is now '_flimport'.
-
Pretty printing is now provided by a package rather than
a system module. Invocation now differs slightly.
-
In-place module, which allows the user to type a program at command
line is now . (period) instead of the keyword user
(i.e., one types [.] instead of [user]).
Release Notes for Version 0.94 (Narumigata)
General
The development of FLORA-2 has continued unabated. Apart from making the
system more robust, we added a large number of enhancements. The syntax
has also been cleaned up, which resulted in incompatible changes with
respect to version 0.92 (see below).
News
-
Modules can now be encapsulated. A module can export methods and
predicates to all modules our to a particular list of predicates.
-
One can now reify rules in addition to facts and other formulas.
-
The new directives setsemantics{...}
and semantics{...} allow the programmer set and query the
semantics of any module.
-
It is now possible to use "and" and "or" instead of "," and ";" when
the latter mean conjunction and disjunction, respectively.
-
A new predicate, flora_query, can now be used to send
arbitrary queries to FLORA-2 from the Prolog side. This means that one
can use the XSB C or Java interfaces to send queries to FLORA-2 through
an intermediate Prolog module.
-
The clause{...} primitive lets one query the rule base.
-
The commands flAdd file and [+file] can now add
contents to modules instead of erasing it. The
command flCompileAdd is used to compile files for later
loading into a module. It does not by itself load any files.
-
Enhanced checking for undefined methods and predicates. The new
directive
#ignore_undefcheck allows to selectively relax checks for
undefinedness in cases where such checks are undesirable.
-
The following types are now predefined: integer, float, number, symbol,
(a,b), (a;b), (a-b).
-
There is now a rudimentary run-time optimizer, which the user can turn
of and off dynamically. See flOptimize.
-
Inheritance-less inheritance(none) semantics is now supported
in addition to the usual semantics where inheritance is the default.
-
Experimental support for persistent FLORA-2 modules, which are stored
in a database through the ODBC interface.
-
Experimental support for XML/HTML/SGML parsing and XPath queries.
Backward Incompatibility
-
Major incompatible change of syntax: HiLog predicates are now
tabled by default. Non-tabled predicates must now be prefixed with a #,
by analogy with non-tabled methods. The table directive has
been deprecated.
-
The symbol % is no longer starting a comment. Use /*...*/ and //
instead. The symbol % will be reused for other purposes.
-
The "equality" directive has been deprecated. Use the new
setsemantics directive.
-
Constructs like a[attr=> {b,c}] and a[attr=>> {b,c}]
are no longer legal (i.e., the curly braces in the context of
=> or =>>). Use a[attr=> (b,c)] and a[attr=>> (b,c)]
instead.
- Prolog predicates call/1 and findall/3 are no
longer special in FLORA-2 and should be avoided, since call/1
is redundant and findall/3 is superseded by the aggregate
operators such as collectset{...}.
Release Notes for Version 0.92 (Cattleya intermedia)
General
FLORA has undergone many changes and a great number of features were
added. Some changes make the syntax of the present version incompatible
with earlier versions. However, these changes simplify the language and
improve its usability.
It is the first version that is reasonably feature-complete and thus
can be called a "beta".
News
-
Major changes in the language: there are no firstorder predicates any
more -- all are HiLog. See backward incompatibility.
-
It is now possible to add new rules to the program at run time as well
as create new program modules at run time. This is useful for agent
programming. Typically one would use this feature by creating a new
module and then adding rules to it at run time. Then calling the
methods defined in that module.
-
Inheritance is now implemented in accordance with the semantics defined
in
Well-Founded
Optimism: Inheritance in Frame-Based Knowledge
Bases. Intl. Conference on Ontologies, DataBases, and
Applications of Semantics for Large Scale Information Systems
(ODBASE), October, 2002. In plain terms it means that
inheritance now "works right."
- It is now possible to call X@Module, where X and/or Module is a
variable. This allows one to construct a term and then call it in a
module or to query the modules in which a term is defined. For
instance, the following will work: ..., p(X), X(a,Y), X@foo.
-
Flora now honors XSB
directives --nobanner, --noprompt, --quietload. This makes it easier to
put graphical interfaces on top of Flora and simplifies interprogram
communication.
-
The update operators now also update the tabling information, which
makes them much better behaved with queries. The new operator
refresh{...} provides finer-grained control over cached queries.
-
It is now possible to table HiLog predicates, but expect more changes
to this syntax in future versions.
-
FLORA-2 now works under Cygwin. People might prefer this to the native
Windows port, because it runs significantly faster.
Bugfixes
- There was a subtle bug in the behavior of multiple inheritance. This
has now been fixed. Inheritance (and especially multiple inheritance)
has now a well-defined model theoretic semantics, as described in
Well-Founded
Optimism: Inheritance in Frame-Based Knowledge
Bases. Intl. Conference on Ontologies, DataBases, and
Applications of Semantics for Large Scale Information Systems
(ODBASE), October, 2002.
- Great many other small fixes.
Backward Incompatibility
- firstorder directive deprecated (all predicates are HiLog now)
- arguments directive deprecated (use the reification feature ${...}
instead
- expunge deprecated
- flImport: syntax change, as we no longer need to specify
firstorder/hilog
- index directive: change of syntax
-
The calls flP2H, catch/3, throw/1 have been eliminated. Use the
built-ins p2h{...,...}, catch{...,...,...}, and throw{...} instead.
Release Notes for Version 0.88 (Phalaenopsis intermedia)
General
This release introduces a number of new features, improves performance,
and stability. The main highlights are the significantly faster
compilation and improved support for reified statements. Some new
features, such as the interface to CLPR constraint solving requires the
latest version of XSB (from the CVS repository). It is also required, if
you want to run FLORA-2 under Windows.
News
- Many bug fixed and many new features.
- Significantly reduced compilation time for some programs.
- The new token _@, which denotes the current FLORA module.
- The new @prologall() module specification, which
automatically converts the arguments of Prolog calls between the FLORA
and Prolog representation as needed.
- The new reification operator ${...}. Say, x[m-> ${a[b->c]}]
will reify the formula a[b->c]. This is in addition to the
previously available meta-argument specification (called "bform" before
and now changed to "meta").
-
New syntax: ..., {constraint},... which allows Flora programs to use
the CLPR constraint solver of XSB.
Bugfixes
- Works again under Windows.
- Numerous other small bugs.
Backward Incompatibility
- The predicate flThisModule/1 has been deprecated. Use the
literal _@ to refer to the current module. This is more
convenient and faster.
- The bform argument specifier is now called meta.
Release Notes for Version 0.86
General
This release fixes many bugs, eliminates some restrictions, and adds
new features.
News
- The most important new feature is the ability to check for undefined
predicates and methods in debug mode (see the manual regarding checking
undefinedness checks). This feature simplifies debugging considerably.
- Flora compiler now checks if a tabled predicate depends on an update
operation and issues appropriate warnings. Such dependency is
considered to be a likely program bug.
- Numbered anonymous oids added (e.g., _#123). They behave like
regular anonymous oids (_#) in the sense that they are substituted by a
new oid. However, numbered oids can be referenced within the same
clause (e.g., _#12[self->_#12]).
- Optimized compilation of path expressions and nested terms.
Feedback: The
FLORA-2 Development Team
$Date:: 2013-05-13#$