List of changes:
09 January 2019
Update to run with Gurobi 8.1.0 MILP solver
23 December 2015
Update to run with Gurobi 6.5 MILP solver
16 October 2015
Bug fixes
fuzzyDL API and syntax documents updated
Addition
of Individual Value Restriction construct: the set of individuals
connected via role R to individual "a" is expressed as
(b-some R a)
12 February 2014
Bug fixes
Addition of boolean datatype property restrictions
Improved optimisations via GCI absorptions
FuzzyDL API allows now to save a FuzzyDL ontology into Fuzzy OWL 2 format
Fuzzy OWL 2 to FuzzyDL parser has been updated
19 June 2013
Bug fixes, update of (fuzzy) OWL 2 to fuzzyDL parser
12 June 2013
Performance improvements.
Addition of inverse functionality axiom construct for roles:
(inverse-functional R)
Bug fixes, update of (fuzzy) OWL 2 to fuzzyDL parser
16 April 2013
Significant improvements in TBox partitioning algorithm.
28 January 2013
Few more improvements in TBox partitioning algorithm.
23 January 2013
This is a major update.
fuzzyDL includes now several optimisations, such as concept absoptions,
TBox parititioning and specialised blocking strategies, including anywhere blocking.
27 December 2012
(sat?) query construct added, which tests if a KB is satisfiable
17 December 2012
optimisations
22 November 2012
bug fixes
optimisations
New construct:
(w-sum-zero (v1 C1) . . . (vk Ck))
06 November 2012
Now, concept names may begin with a number
01 August 2012
A minor bug fix
New constructs:
(w-max (v1 C1) . . . (vk Ck)) (weighted maximum)
(w-min (v1 C1) . . . (vk Ck)) (weighted minimum)
06 February 2012
Some minor performance upgrates to the reasoner
18 January 2012
FuzzyDL reasoner has been improved
Fuzzy OWL 2 Protege plugin has been updated as well
New construct: (all-instances? C) which is the same as (min-instance? a C) for every individual in the KB
27 October 2011
FuzzyDL reasoner has been completely revisited
New constructs have been added to support Rough Concepts, concept aggregation operators such as OWA and fuzzy integrals.
Fuzzy OWL 2 Protege plugin has been revisisted as well
23 December 2010
Bug fix in pairwise blocking.
New construct has been added
(equivalent-concepts C D)
Concept C is defined as equivalent to concept D
13 December 2010
Bug fix in inference rule for Weighted Sum of Concepts. For the update, just replace the old FuzzyDL.jar with the new one.
24 November 2010
Bug fix in parser for statement (range RN C)
17 November 2010
Fuzzy OWL 2 Protege plug-in can be downloaded
10 November 2010
Bug correction in parser than didn't ricognise correctly the "implies" concept constructor
21 October 2010
bug fix in FuzzyDL Mac OS X version
15 October 2010
bug fix in Fuzzy OWL 2 parser
17 September 2010
Fuzzy OWL 2 (proposal) has been released, i.e, how to represent fuzzy ontologies in OWL 2
A parser that converts Fuzzy OWL 2 ontologies, written in OWL 2, into fuzzyDL format has been released as well
17 September 2010
New fuzzyDL version has been released
Some performance improvments
Definition of the fuzzy logic is not done in the Config file, but in the KB:
(fuzzy-logic [lukasiewicz | zadeh | classical])
Concrete features are defined using two instructions, functionality and range:
(functional F)
(range F *integer* k1 k2) | (range F *real* k1 k2) | (range F *string*)
07 April 2010
FuzzyDL has been released for Windows operating system
06 April 2010
some bug fixes
07 January 2010
New API to read KB and Query components. Now, it is possible to:
Parser parser = new Parser("filename.txt");
parser.Start();
KnowledgeBase kb = Parser.getKB();
Array <Query> q = Parser.getQueries();
For backwards compatibility, the three first lines can be replaced by:
KnowledgeBase kb = Parser.getKB("filename.txt");
02 December 2009
New API to read KB from files
21 October 2009
Some fixes on the handling of role inclusion axioms, transitive and reflexive roles
29 June 2009
Some fixes on the parser
Multicriteria Decision Making Example added (see here)
15 June 2009
Datatype restrictions support arithmetic expressions, e.g.,
(instance a (= totalPrice (netPrice + (0.2*netPrice) + -20) ) )
the total price is given by the net price, plus 20% of the net price, minus 20
03 June 2009
A Javadoc is now available (see here)
Some bug fixes
14 May 2009
A new statement has been added
(show-concrete-instance-for a F C1 ... CN)
show the degrees of being the F filler of a an instance of Ci
08 May 2009
Some bug fixes on datatype restrictions involving fuzzy numbers
07 May 2009
Fuzzy numbers may occur in data type restrictions. For instance, "tom's age is at least about 30"
(define-concrete-feature hasAge *real* 0 150)
(define-fuzzy-number-range -1000000 1000000)
(define-fuzzy-number about30 (25, 30, 35))
(instance tom (>= hasAge about30))
27 April 2009
Fuzzy numbers expressions allowed in fuzzy number definition.
03 April 2009
Fuzzy numbers and arithemic are supported, i.e., fuzzy numbers may occurs as fuzzy concrete concepts
Some bug fixes
18 March 2009
Our OWL ontology for Fuzzy OWL has been updated
A
parser is provided that translates crisp OWL 2 statements (without
datatypes) into FuzzyOntology, and translates fuzzy statements based on
FuzzyOntology into fuzzyDL statements
07 January 2009
Reflexive role statement has been added: (reflexive RN)
Symmetric role statement has been added: (symmetric RN)
Concept construct "SELF" of Description Logic SROIQ has been added: (self RN)
Fuzzy
Rough Set reasoning is supported: concepts may have a lower and upper
approximation, according to indiscernibility relations (reflexive,
symmetric, and transitive roles)
(ua RN C) (upper approximation of concept C according to indiscernibility relation RN)
(la RN C) (lower approximation of concept C according to indiscernibility relation RN)
06 January 2009
The on-line version of fuzzyDL has been discontinued
24 December 2008
Our OWL ontology for Fuzzy OWL has been updated with annotated comments.
The parser, which converts fuzzy OWL statements into fuzzyDL statements has been updated.
17 December 2008
An OWL ontology for Fuzzy OWL has been uploaded. It may be used to share fuzzy OWL ontologies among fuzzy OWL reasoners.
A parser has been uploaded, which converts fuzzy OWL statements into fuzzyDL statements.
21 October 2008
Performance improvements and some bug fixes.
20 October 2008
Some bug fixes.
07 October 2008
API (small change): A KB can be loaded from file, as specified in new API documentation.
5 May 2008
Minimal API published. Documentation on how to use fuzzyDL within Java programs available from the download section.
28 January 2008
New construct have been added
(define-truth-constant constant n) - > Defines a name for a truth constant n, where n is a rational in [0,1].
21 January 2008
fuzzyDL downloadable for Linux
16 January 2008
fuzzyDL downloadable for MacOS X
15 January 2008
New constructs have been added
(implies-role RN1 RN2 [d]) --> role RN2 subsumes role RN1 to degree d
Syntax change of "show statements"
26 November 2007
New constructs have been added for defuzzyfying concepts. This allows to encode a Fuzzy Controler System into fuzzyDL
(defuzzify-lom? C a F) -> Defuzzify the value of feature F using largest of the maxima method. a is an individual (see example)
(defuzzify-som? C a F) -> Defuzzify the value of feature F using smallest of the maxima method. a is an individual (see example)
(defuzzify-mom? C a F) -> Defuzzify the value of feature F using middle of the maxima method. a is an individual (see example)
29 October 2007
There
is now an OWL to fuzzyDL converter. You may now convert OWL ontologies
into fuzzyDL ontologies. Non-convertable OWL statements will be
omitted. The procedure is accessible from the "Try it" page.
24 October 2007
Some bugs fixed.
Syntax of "and" and "or" changed, e.g. (L-and C1 C2) is now (l-and C1 C2) (see syntax)
In Linear in-equations:
(binary var) -> The variable "var" is declared to be binary, i.e. takes value 0 or 1. The former statement was (BND var BV)
(free var) -> The variable "var" is declared to be free, i.e. takes any value
As the (concept-subsumes C2 C1) construct is the same as the (implies C1 C2) construct, we decided to keep the latter only
Concerning concept forming operators, the following constructs has been added
(implies C1 C2) -> this is the concept "if C1 then C2"
(l-implies C1 C2) -> this is the concept "if C1 then C2" using Lukasiewicz implication
(g-implies C1 C2) -> this is the concept "if C1 then C2" using Gödel implication
(kd-implies C1 C2) -> this is the concept "if C1 then C2" using Kleene-Dienes implication
(n
C) -> this represents a concept such that for any individual d, the
degree of being individual d an instance of (n C), i.e., (n C)(d), is
given by n times the degree of being d an instance of C, i.e., n * C(d)
(C [>= n]), (C [<= n])
-> Represents a thresholded concept, where n in [0,1] and C is a
concept. E.g., the degree of being individual d an instance of (C
[>= n]), i.e., (C [>= n])(d), is 0 if d is an instance of C to
degree less than n, otherwise the degree is C(d). Similarly, the degree
of being individual d an instance of (C [<= n]), i.e., (C [<=
n])(d), is 0 if d is an instance of C to degree greather than n,
otherwise the degree is C(d).
Concerning General Concept Inclusions, the following constructs has been added
(l-implies C1 C2 d) -> concept C1 is a sub-class of concept C2 with degree d using Lukasiewicz implication
(g-implies C1 C2 d) -> concept C1 is a sub-class of concept C2 with degree d using Gödel implication
(kd-implies C1 C2 d) -> concept C1 is a sub-class of concept C2 with degree d using Kleene-Dienes implication
Concerning query expressions:
(individual-instance? a C) -> has been replaced with (min-instance? a C)
(concept-subsumes? C1 C2) -> has been replaced with (min-subs? C1 C2)
(concept-satisfiable? C) -> has been replaced with (min-sat? C [a])
(solve-max-expr? var) -> has been replaced with (max-var? var)
(solve-min-expr? var) -> has been replaced with (min-var? var)
The full list is now:
(min-instance? a C) |
--> |
determines the minimal degree to which individual a is an instance of concept C |
(max-instance? a C) |
--> |
determines the maximal degree to which individual a is an instance of concept C |
(min-subs? C1 C2) |
--> |
determines the minimal degree to which concept C1 subsumes concept C2 |
(max-subs? C1 C2) |
--> |
determines the maximal degree to which concept C1 subsumes concept C2 |
(min-l-subs? C1 C2) |
--> |
determines the minimal degree to which concept C1 subsumes concept C2, using Lukasiewicz implication |
(max-l-subs? C1 C2) |
--> |
determines the maximal degree to which concept C1 subsumes concept C2, using Lukasiewicz implication |
(min-g-subs? C1 C2) |
--> |
determines the minimal degree to which concept C1 subsumes concept C2, using Gödel implication |
(max-g-subs? C1 C2) |
--> |
determines the maximal degree to which concept C1 subsumes concept C2, using Gödel implication |
(min-kd-subs? C1 C2) |
-> |
determines the minimal degree to which concept C1 subsumes concept C2, using Kleene-Dienes implication |
(max-kd-subs? C1 C2) |
-> |
determines the maximal degree to which concept C1 subsumes concept C2, using Kleene-Dienes implication |
(min-sat? C [a]) |
-> |
determines
the minimal degree to which concept C is satisfiable. Optionally we may
specify an individual a. In that case the minimal degree to which the
individual a is an instance of C is computed |
(max-sat? C [a]) |
-> |
determines
the maximal degree to which concept C is satisfiable. Optionally we may
specify an individual a. In that case the maximal degree to which the
individual a is an instance of C is computed |
(min-var? var) |
-> |
determines the minimal value for variable var in [0,1], taking into account the constraints in the KB |
(max-var? var) |
-> |
determines the maximal value for variable var in [0,1], taking into account the constraints in the KB |
(min-related? a b RN) |
-> |
determines the minimal degree to which individual pair (a,b) is an instance of role name RN |
(max-related? a b RN) |
-> |
determines the maximal degree to which individual pair (a,b) is an instance of role name RN |
Show statements: statements have been added to show values in an optimal solution
(show-fillers f1 ... fn) |
--> |
show all fillers of concrete feature f1 ... fn in an optimal solution to a query |
(show-fillers a f1 ... fn) |
--> |
for individual a, show all fillers of concrete feature f1 ... fn in an optimal solution to a query |
(show-variables x1 ... xn) |
--> |
show the value of the variables x1 ... xn in an optimal solution to a query |
(show-instances A1 ... An) |
--> |
show all instances of atomic concepts A1 ... An and their degree in an optimal solution to a query |
(show-concepts a1 ... an) |
--> |
show all Atoms to which ai is instance and their degree in an optimal solution to a query |
(show-lnaguage) |
--> |
show the description logic language of the KB, from ALC to SHIF(D) |
05 September 2007
Some bugs fixed.
Syntax of Datatype restrictions changed (see grammar of DR)
Syntax of equations slightly changed ( "=>" changed to ">=")
17 July 2007
Datatype restrictions added (string-, integer-, real-valued attributes)
Weighted Sum Concept Operator added
Lukasiewicz conjunction/disjunction added
Gödel conjunction/disjunction added
23 Oct. 2006
Binary code of fuzzyDL can be downloaded.
25 Sept. 2006
Multiple queries can be added at the end of the file
Weighted subsumption relations (concept-subsumes C1 C2 [d]) and (implies C1 C2 [d]), where d is an optional degree in [0,1]. d can also be avariable.
05 Sept. 2006
Triangular modifier has been added: (define-modifier CM triangular-modifier(a,b,c))
Maximal degree of satisfiability of a concept C can be asked: (concept-satisfiable? C)
Maximization or Minimization problem for variable x can be asked: (solve-max-x?) or (solve-min-x?)