Fuzzy Markup Language, aka Fuzzy Markup Language, is a xml format created in 2004.
#2374on PLDB | 20Years Old |
Fuzzy Markup Language (FML) is a specific purpose markup language based on XML, used for describing the structure and behavior of a fuzzy system independently of the hardware architecture devoted to host and run it.. Read more on Wikipedia...
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
........
<xs:complexType name="KnowledgeBaseType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="FuzzyVariable" type="FuzzyVariableType"/>
<xs:element name="TSKVariable" type="TSKVariableType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FuzzyVariableType">
<xs:sequence>
<xs:element name="FuzzyTerm" type="FuzzyTermType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="defuzzifier" default="COG">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="MM|COG|COA|WA|Custom"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="accumulation" default="MAX">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="MAX|SUM"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="scale" type="xs:string" />
<xs:attribute name="domainleft" type="xs:float" use="required"/>
<xs:attribute name="domainright" type="xs:float" use="required"/>
<xs:attribute name="defaultValue" type="xs:float" default="0"/>
<xs:attribute name="type" default="input">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="input|output"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="FuzzyTermType">
<xs:choice>
<xs:element name="RightLinearShape" type="TwoParamType"/>
<xs:element name="LeftLinearShape" type="TwoParamType"/>
<xs:element name="PIShape" type="TwoParamType"/>
<xs:element name="TriangularShape" type="ThreeParamType"/>
<xs:element name="GaussianShape" type="TwoParamType"/>
<xs:element name="RightGaussianShape" type="TwoParamType"/>
<xs:element name="LeftGaussianShape" type="TwoParamType"/>
<xs:element name="TrapezoidShape" type="FourParamType"/>
<xs:element name="SingletonShape" type="OneParamType"/>
<xs:element name="RectangularShape" type="TwoParamType"/>
<xs:element name="ZShape" type="TwoParamType"/>
<xs:element name="SShape" type="TwoParamType"/>
<xs:element name="UserShape" type="UserShapeType"/>
</xs:choice>
<xs:complexType name="TwoParamType">
<xs:attribute name="Param1" type="xs:float" use="required"/>
<xs:attribute name="Param2" type="xs:float" use="required"/>
</xs:complexType>
<xs:complexType name="ThreeParamType">
<xs:attribute name="Param1" type="xs:float" use="required"/>
<xs:attribute name="Param2" type="xs:float" use="required"/>
<xs:attribute name="Param3" type="xs:float" use="required"/>
</xs:complexType>
<xs:complexType name="FourParamType">
<xs:attribute name="Param1" type="xs:float" use="required"/>
<xs:attribute name="Param2" type="xs:float" use="required"/>
<xs:attribute name="Param3" type="xs:float" use="required"/>
<xs:attribute name="Param4" type="xs:float" use="required"/>
</xs:complexType>
<xs:complexType name="UserShapeType">
<xs:sequence>
<xs:element name="Point" type="PointType" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PointType">
<xs:attribute name="x" type="xs:float" use="required"/>
<xs:attribute name="y" type="xs:float" use="required"/>
</xs:complexType>
<xs:complexType name="RuleBaseType">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="activationMethod" default="MIN">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="PROD|MIN"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="andMethod" default="MIN">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="PROD|MIN"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="orMethod" default="MAX">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="PROBOR|MAX"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="TSK|Tsk|tsk|Mamdani|mamdani"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="MamdaniRuleBaseType">
<xs:complexContent>
<xs:extension base="RuleBaseType">
<xs:sequence>
<xs:element name="Rule" type="MamdaniFuzzyRuleType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AntecedentType">
<xs:sequence>
<xs:element name="Clause" type="ClauseType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MamdaniConsequentType">
<xs:sequence>
<xs:element name="Clause" type="ClauseType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClauseType">
<xs:sequence>
<xs:element name="Variable">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:pattern value="(([A-Z])|([a-z]))+([A-Z]|[a-z]|[0-9])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Term" type="xs:string">
</xs:element>
</xs:sequence>
<xs:attribute name="modifier" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern
value="above|below|extremely|intensify|more_or_less|norm|not|plus|slightly|somewhat|very"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
..........
</xs:schema>