Java Fuzzy Markup Language



A Java Library for the IEEE Standard for Fuzzy Markup Language (IEEE Std 1855-2016)

JFML is an open source Java library which is aimed at facilitating interoperability and usability of fuzzy systems. Its novelty and relevance arise from the fact that JFML is the first library in the world which implements the new IEEE Std 1855-2016 published and sponsored by the Standards Committee of the IEEE Computational Intelligence Society. JFML is now also accessible in Python 3.x through Py4JFML

J.M. Soto-Hidalgo, Jose M. Alonso, G. Acampora, and J. Alcala-Fdez. "JFML: A Java Library to Design Fuzzy Logic Systems According to the IEEE Std 1855-2016" in IEEE Access, vol. 6, pp. 54952-54964, 2018. DOI:10.1109/ACCESS.2018.2872777

J.M. Soto-Hidalgo, A. Vitiello, Jose M. Alonso, G. Acampora, and J. Alcala-Fdez. "Design of Fuzzy Controllers for Embedded Systems with JFML" in International Journal of Computational Intelligence Systems, vol. 12(1), pp. 204-214, 2019. DOI:10.2991/ijcis.2019.125905646

Standard IEEE 1855TM-2016

This standard defines the Fuzzy Markup Language (FML). It makes use of the benefits of XML specifications to represent Fuzzy Logic Systems (FLS) in a human-readable and hardware independent way. Accordingly, designers can code and apply FLS without requiring a deep knowledge about the underlying platforms. IEEE Std 1855TM-2016

Binding XSD

JFML uses the Java API called JAXB. It provides a fast and convenient way to bind W3C XML documents and Java representations. Namely, JFML binds the Java code to the XML Schema Document (XSD) of the new IEEE standard for FML. In addition, it provides methods for: (1) unmarshalling (reading) FML documents into Java content objects; and (2) marshalling (writing) Java content into XML documents while verifying all the constraints established in the schema of the Standard.


The IEEE standard for FML is aimed to facilitate extensibility (i.e., definition of new functionality regarding fuzzy operators, defuzzification methods, etc.) through the so-called custom methods without requiring to modify the FML grammar. Accordingly, JFML provides custom methods for all the elements deemed as extensible in the XSD of the standard. This will speed up the future extension of the library conforming to this standard. In addition, a new JFML module for embedded systems is available. It assists developers in the implementation and deployment of fuzzy controllers for Arduino and RaspberryPi.


The language FML defined in the new IEEE standard is characterized by its modular object-oriented conception and XML nature. It is aimed at facilitating the interoperability of the library with other available software. JFML includes a module with classes to read FLSs from FCL documents (in accordance with the standard IEC 61131-7) and to write a FLS designed with JFML down to a FCL document. Moreover, JFML includes a module to import/export FLSs in accordance with both the Predictive Model Markup Language (PMML) and the proprietary format understood by the Matlab Fuzzy Logic Toolbox. Py4JFML is a Python wrapper for JFML which enables the use of all functionalities of JFML through a Python 3.x module.