Computer Standards & Interfaces 28 (2005) 218 – 230 www.elsevier.com/locate/csi
Universal fuzzy system representation with XML Chris TsengT, Wafa Khamisy, Toan Vu Computer Science Department, San Jose State University, San Jose, CA 95192, USA Received 11 August 2004; accepted 29 November 2004 Available online 2 February 2005
Abstract An XML schema and an XML DTD (Document Type Definition) are designed as syntax to represent general fuzzy systems in XML. We demonstrate how fuzzy systems described in XML with our proposed schema can be universally compatible with different software by using appropriate XSLT (eXtensible Style Language Transformation) stylesheets. The proposed schema offers a standard platform for fuzzy system developers and users to collaborate without compatibility issues. We demonstrate how a fuzzy logic design coded in accordance with our XML schema can subsequently be understood and integrated with two different software like MATLAB and FuzzyJess. D 2005 Elsevier B.V. All rights reserved. Keywords: XML; Schema; DTD; Fuzzy logic
1. Introduction Lotfi Zadeh introduced fuzzy logic as a way to generate decisions using imprecise information and approximate reasoning [1]. In a complex system where there are ambiguity and vagueness, fuzzy logic can be an ideal methodology. Success of fuzzy logic has been witnessed in control, pattern recognition, and intelligent internet query [2]. In many fuzzy designs, developers typically use software of their choice. Collaboration and subsequent integration with other designs becomes a difficult T Corresponding author. Tel.: +1 408 924 7255; fax: +1 413 618 4663. E-mail address:
[email protected] (C. Tseng). 0920-5489/$ - see front matter D 2005 Elsevier B.V. All rights reserved. doi:10.1016/j.csi.2004.11.005
issue. This is especially true in the current internet age. Many data and designs are shared and collaborated over the internet to maximize resource and speed up the design cycle. For complex fuzzy system design as well as software reuse purposes, it is essential that a standard platform for fuzzy logic data and structure sharing be available. Systems on different applications and platforms, developed by different groups, can exchange information easily and precisely with this kind of standard. One way to represent fuzzy system and its components is through the Extensible Markup Language (XML). XML is becoming a standard to exchange data and structure, especially over the internet. An XML schema in the form of DTD has been proposed Neural Network Markup Language [3]. By defining tags for
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
the structure of the fuzzy system, information exchange between systems through XML is possible. Some specific XML schema for fuzzy object-oriented modeling has been proposed for database applications [4]. Weng and Turowski [5] introduced a formal syntax to exchange fuzzy information between business applications through defining relevant fuzzy data types in document type definition (DTD). The number of complex system using fuzzy logic has been growing. Therefore, there is a need to exchange information and perform system integration among subsystems or modules. A formal syntax for all of these applications to conform to can be useful for integration and software re-use. A fuzzy schema for describing the fuzzy system in general is in obvious need. We begin by presenting an overview on XML, DTD, and XML Schema in Section 2. In Section 3, we provide a brief description of fuzzy logic. Our proposed XML schema for fuzzy systems in general is presented in Section 4. In Section 5, we illustrate how a fuzzy design can be described in XML with respect to our proposed XML schema. Appropriate XSLT stylesheet design can be used to render the fuzzy XML description compatible with MATLAB and FuzzyJess. Future research direction is included in the conclusion in Section 6.
2. Extensible Markup Language—XML XML is a grammatical system for constructing custom markup languages [6]. It set rules for how data and its structure can be represented. Using tags to delimit pieces of data, XML leaves the interpretation of the data to the application that reads it. XML can be used to describe, exchange, and store data. XML is platform independent and is becoming a standard over the last couple of years. A well-formed XML document must have a root element, every element must have a matching closing tag, elements must be properly nested, values must be enclosed in quotation marks, and entity references must be declared. A valid XML document must conform to a schema requirement. A schema is the grammar that defines the syntax of an XML language, such as Data Type Definition (DTD) and XML Schema [7,8]. Schemas are important syntax for XML documents to be consistent.
219
An XML document does not contain any presentation information. How the data should be presented is controlled by the Extensible Style Sheet (XSL), which is based on the XSLT language that transforms XML document into varying formats [9]. By separating the content and the view of the document one can display the same document with different formats depending on the application need. This also facilitates task separation and highly efficient to get a complex job done. Some can create and maintain the data content whereas others can focus on how the data should be presented in various situations. 2.1. Document Type Definition—DTD A DTD is a popular schema with relatively simple syntax for XML. A DTD specifies which elements and attributes are allowed or required in a complying XML document [7]. It also defines the ordering of elements in an XML document. A DTD can be declared internally in an XML document, or externally by linking to the XML document as a reference. Some of the key DTD tags will be outlined here. The b!ELEMENTN tag is used to define all the legal elements allowed in the XML document. Each element can have children elements that must be declared within its b!ELEMENTN tag. An element can have a list of attributes with the tag b!ATTLISTN. Attributes are supplementary data of the elements. Information contained in attributes is typically about the content of the element as opposed to be a part of that content. Entities are declared within the DTD by the b!ENTITYN tag. With an entity, we can define an abbreviation that references to some data to be included when the abbreviation is called upon in the XML document. Entities are used to load data into the XML document or reference data that becomes part of a DTD. 2.2. XML schema An XML Schema Language, like DTD, is used to describe the structure of an XML document [8]. It is a newer schema for XML as compared with DTD. XML Schema has several advantages over DTD and will be described briefly below [10]. XML Schema, written in XML, lets users define both global and
220
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
1
1
1
0
0
0
bell
triangular
trapezoidal
Fig. 1. Membership functions.
local elements. It contains a collection of data types that allow users to specify an element. XML Schema supports the notion of namespaces to distinguish between duplicate element types and attributes that may exist in different schemas. A namespace is identified by a unique URI that consists of two parts: the name of its XML namespace and its local name [11]. XML Schema can specify the order and the number of children elements in a mixed content model. It can set the default values and range limits for data types as well. An element in XML Schema can be either a simple or complex type. A simple type element can only contain text including type string, Booleans, URLs, various date formats, and many kinds of numbers. The complex type element can contain other elements and attributes.
3. Fuzzy logic Fuzzy logic extends the Boolean logic, and introduces a set of membership functions that maps between linguistic elements to numerical values in the context of fuzzy set. The fuzzy membership function value indicates the degree to which an element belongs to a fuzzy set. A value of 1 indicates a full membership in the set, whereas a value of 0 indicates that the element does not belong to the set. In addition
to these scenarios supported by the Boolean logic, fuzzy logic also allows partial membership that takes on a value anywhere between 0 and 1. The choice of membership functions, just like the rule base, affects the performance of the fuzzy system. Therefore determining the appropriate membership function is a critical step in building a fuzzy system. There are numerous experimental and analytical approaches to obtain the membership function. Membership functions can take on a variety of shapes. Some common ones are as shown in Fig. 1. 3.1. Fuzzy system Fuzzy systems are usually input/output systems with appropriate membership functions for some applications. It closely resembles human decision making and is ideal for problems where the system modeling is not precise or the sensor data reading may not be accurate. Some successful fuzzy system applications include communication interference rejection, anti-lock brake system, and satellite tracking [12–14]. A fuzzy system usually consists of four components as shown in Fig. 2. ! Fuzzification Interface: it maps crisp input values into linguistic values in relevant fuzzy sets. ! Fuzzy Inference Engine: it receives fuzzified inputs and interacts with fuzzy rule base to determine the outcome. ! Fuzzy Rule Base: it is a collection of fuzzy If–Then rules. ! Defuzzification Interface: it aggregates fuzzy inference results and produce a crisp output value. There are different defuzzification methods, e.g., Centroid, Bisector, Middle of Max, and others.
Inference Engine
Input
Fuzzification
Defuzzification
Fuzzy Rule Base
Fig. 2. Fuzzy Inference System.
Output
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
221
Operators include: bAndQ, bOrQ, and bAggregationQ operator. An operator can be a pre-defined-operator data type or user-defined-operator data type. ! Rule Base: It is a collection of fuzzy If–Then rules. A rule consists of antecedents and consequents. ! Defuzzification: It is a Fuzzy system component that translates fuzzy set output values into crisp values. It consists of the defuzzification function that is used in the Fuzzy System. ! Output Base: It is a component that consists of a collection of outputs. Each is a linguistic variable data type.
4. Fuzzy system in XML In this work, we encapsulate fuzzy system description in common elements that can be used to represent any fuzzy system. These elements are described in Fig. 3, and they form the basic components of fuzzy systems in general [2]. 4.1. Fuzzy system components The high level hierarchy of our fuzzy system has the following main components:
4.2. Fuzzy system data types
! Input Base: It is a component that consists of a collection of inputs. Each is a linguistic variable containing terms and membership functions. ! Membership Function Repository: This component contains all the membership functions used to describe the fuzzy system. ! Inference Engine: It is a component that defines all the operators used to perform inferencing. ! Operator Repository: This component contains all the operators used to describe the fuzzy system.
At the lower level, we have the following main data types: ! Linguistic Variable: A linguistic variable has a range of values and at least one linguistic term. It also has a name attribute. ! Linguistic Term: A linguistic term has a membership function. It also has a name, and an
Fuzzy System
Input Base
Inference Engine
Input +
Operator
Linguistic variable
User-defined function
Linguistic term +
Operation
Membership function
Operator Repository
Membership function +
Operator +
Pre-defined function
Rule +
Consequent +
Defuzzification
Predefined method
Antecedent +
Range
Output Base
Userdefined method Linguistic variable
Output +
Singleton value
Linguistic term + Linguistic term
Membership function predefined operator
Rule Base
userdefined operator
Logical operator
Linguistic variable
Linguistic term
Fig. 3. Fuzzy System Model.
Membership function Linguistic variable
222
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
Fig. 4. InputBase.dtd.
identification number attribute. The identification number is used to identify the linguistic terms of a linguistic variable.
! Membership Function: A membership function can be either a pre-defined function or a userdefined function. A pre-defined function is some popular membership function that is already defined, such as: Gaussian, Triangular, or Trapezoidal function, whereas user-defined function is a collection of operations that a user can put together to produce a new membership function. An operation can be arithmetic, logarithmic, trigonometric, condition, or logical operation, ! Operator: An operator can be either a pre-defined operator or a user-defined operator (function). A pre-defined operator is some popular operator that is already defined, such as: minimum, maximum,
%Linguistic_variable; %Linguistic_term; %MF; %user_defined_function; %pre_defined_function; %pre_defined_operator; %Range; %Operation; %InputBase;%InferenceEngine;%RuleBase;%DefuzMethod;%OutputBase;% Operator_Repository;%MF_Repository; Fig. 5. FuzzySystem.dtd.
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
Yager average, algebraic sum, algebraic product, and more. A user-defined operator is a user-defined function. ! Rule: A rule consists of at least one antecedent and one consequent. It also has a weight attribute associated with the rule. Each antecedent has one linguistic variable, one linguistic term, and one logical operator. It also has a weight attribute. Each consequent has a linguistic variable and linguistic term. It also has a weight attribute. 4.3. Fuzzy system DTD In this section, we propose a DTD as one kind of schema to describe fuzzy systems in XML. The fuzzy system is as depicted in Fig. 3. One DTD is defined for each main component and main data type. For example, we define the InputBase component as InputBase.dtd. Fig. 4 shows the InputBase element that contains one or more inputs and the total number of inputs. We also describe the usual pre-defined functions and pre-defined operators in DTD files. Each of the main fuzzy component modules in the
223
hierarchy diagram of Fig. 3 is being described as one cluster of DTD files. By using the bENTITYN tag in DTD, we can link all the individual DTD files together to provide a DTD XML schema for the overall fuzzy system. Fig. 5 shows how this integration of modules is done in DTD format. 4.4. Fuzzy system schema We present in this section an XML schema that can also be used to define fuzzy systems in XML. Similar to what we have for DTD design in Section 4.3, we define individual XSD files for each major components and data types. XML schema files are usually name with an xsd extension. Following the hierarchy of fuzzy system syntax in Fig. 3, we have schema xsd files included in the schema xsd file of their parent node. Fig. 6 shows how we define the InputBase component in XML Schema. With XML Schema, we are able to define our fuzzy system more precisely. Take for example, one can indicate specifically that the number of inputs is an integer type and it has one or more inputs. We can define the elements as precise
Fuzzy system component,that captures all of the input variables Fig. 6. InputBase.xsd.
224
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
Fuzzy system and it's components Fig. 7. FuzzySystem.xsd.
Fuzzy System in XML xslt #1 textfile#1 Matlab Fuzzy logic toolbox
Fuzzy System description in Matlab
xslt #2 textfile#2
Fuzzy Jess
Fuzzy System description in FuzzyJess
Fig. 8. Compatible fuzzy system in Matlab and FuzzyJess.
as possible with the XSD files. XSD files for the predefined functions and pre-defined operators are also available in our schema. An XSD file can reference others by using the bxs:include schemaLocationN tag to combine the individual XSD files to fully describe a fuzzy system. Fig. 7 shows how this is being done in XML schema syntax. The complete DTD and XML schema of our proposed design for fuzzy system can
Food, Service
Fuzzy Reasoning
Tip
Rule Base: If-then rules
Input
Output
Fig. 9. Example overview.
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
Fig. 10. Rule 2 of TipperSystem.xml.
Fig. 11. Part of XSLT for converting to Matlab FIS format.
225
226
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
be viewed under the website http://mh211b.cs.sjsu. edu/webintelligence/fuzzyschema/index.html [15]. In comparison with our proposed DTD for fuzzy system in Section 4.3, the fuzzy XML schema can be used to model more precisely how the fuzzy design should be. This is at the expense of a longer schema description with more schema tags of varying features. One may start with a DTD design and later convert it to an equivalent XML schema. However, the reverse may not be always possible as there some schema features not supported in XML DTD.
5. Examples and application In this section, we demonstrate how fuzzy systems in XML can be universally compatible with different software applications with appropriate XSLT stylesheet designs. The general procedure is illustrated in Fig. 8. Starting with a fuzzy system description in XML, we design two stylesheets to transform the XML document into two text files for two different fuzzy system software purposes. These text files with varying formats are compatible with two fuzzy logic software. Both are derived from the same XML file that describes the fuzzy system in use. In this example, we illustrate how a tipper fuzzy inference system in XML is transformed and made compatible with Matlab and FuzzyJess. Matlab is a technical computing environment for high-performance numeric computation and visualization, produced by MathWorks [16]. A number of subject specific toolboxes including Fuzzy Toolbox are provided by Matlab. FuzzyJess is software that incorporates FuzzyJ Toolkit into Jess, a rule engine and scripting environment written entirely in java [17]. FuzzyJ Toolkit provides a portable set of classes in Java and that we can link these with Jess. Matlab is more ready to use while FuzzyJess offers more ways to customize. The Tipper fuzzy system is designed to give advice on the amount of tip a person should give based on the quality of food and service. The Tipper system (see Fig. 9) takes food and service as input, performs fuzzy reasoning, and outputs the amount of tip per fuzzy rules. The set of rules states if food and service (input) are at a certain level, then tip (output) should be at a certain level.
Consider the tipper System with the following 3 rules: TS— Rule 1: If service is poor and food is rancid then tip is cheap. Rule 2: If service is good then tip is average. Rule 3: If service is excellent and food is delicious then tip is generous. We describe these rules in XML format in accordance to the syntax defined in the DTD in Section 4.3 and the XML Schema Section 4.4. Fig. 10 shows how rule 2 of our tipper system is represented in XML. With these 3 rules and the membership function components described in Fig. 8, an XML file can be used to represent the tipper system according to our proposed XML schema syntax. In order for the Tipper system to be understood by Matlab, we need to design an XSLT stylesheet to transform it to a format compatible with Matlab. Matlab fuzzy logic toolbox uses FIS (Fuzzy Inference System) file to describe a fuzzy system. FIS file is an ASCII text file that the user can run and modify a given fuzzy system. Part of the XSLT design to produce the FIS file of the Tipper System
Fig. 12. Part of the Matlab XSL output.
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
Fig. 13. Tipper system in Matlab FIS editor.
Fig. 14. Part of the XSLT design for converting to FuzzyJess format.
227
228
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
(TS) is shown in Fig. 11. The output of the XSLT stylesheet as applied to the XML document describing TS is a transformed document as shown in Fig. 12. Once Matlab opens this transformed document known as a FIS file in Matlab, users can proceed with their integration, design modification, or debugging for the TS system. Fig. 13 shows how the TS system design is re-produced under Matlab Fuzzy Logic Toolbox. Similarly, we design another XSLT and transform the XML document that represents TS to a file that can be understood by FuzzyJess. Part of the XSLT design for doing such transformation is as shown in Fig. 14. The output of the transformed document looks like that in Fig. 15. A simple script can take on the transformed output from XSLT and produce the description of fuzzy system TS for FuzzyJess.
We define membership rules and functions according to FuzzyJess syntax. As shown in Fig. 14, we reproduce the fuzzy rules of the TS design from the same XML document as illustrated in Fig. 10. The transformed document is in a format compatible with FuzzyJess. As shown in Fig. 16, the rules in Java are clearly that of Rules 1–3 with matching antecedents and conclusions. Similarly, the membership functions are produced in FuzzyJess format from the given XML document. Membership functions such as Gaussian, Triangular, and Trapezoidal are translated into corresponding fuzzy sets in FuzzyJess. Fig. 17 shows a portion of the membership profile. The developers and users can go on for their own integration and design purposes in FuzzyJess and Jess based these transformed documents from the XML document that describes TS. Both transformed system from the TS XML document are tested with same inputs to validate that they are equivalent under Matlab or FuzzyJess. Indeed, the outputs are the same when we compare the fuzzy output results from the both systems, i.e., Matlab and FuzzyJess. This example clearly demonstrates how a fuzzy design represented in XML with our proposed schema can be compatible with varying platforms through the concept of XSLT stylesheets. Fuzzy design represented with our proposed XML schema is expected to be universally compatible with other software and applications. This should ease and enhance collaboration among designers and applications of fuzzy logic systems.
6. Conclusion
Fig. 15. Part of the FuzzyJess XSL output.
We present an XML methodology to represent fuzzy systems for facilitating collaborations in fuzzy applications and design. The concept of XML is shown to be the right choice. DTD and XML Schema are proposed to define fuzzy systems in general. One fuzzy system can be represented in different formats understood by different applications using the concept of XSLT stylesheets. With an example, we show how we can represent that given fuzzy system in XML and transform it to comprehensible formats for Matlab and FuzzyJess applications. One important subject that calls for future research is the design of reverse
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
public void Define_Rules() { try{ poor_rancid = new FuzzyRule(); poor_rancid.addAntecedent(new FuzzyValue(service,"poor")); poor_rancid.addAntecedent(new FuzzyValue(food,"rancid")); poor_rancid.addConclusion(new FuzzyValue(tip,"cheap")); good_none = new FuzzyRule(); good_none.addAntecedent(new FuzzyValue(service,"good")); good_none.addConclusion(new FuzzyValue(tip,"average")); excellent_delicious = new FuzzyRule(); excellent_delicious.addAntecedent(new FuzzyValue(service,"excellent")); excellent_delicious.addAntecedent(new FuzzyValue(food,"delicious")); excellent_delicious.addConclusion(new FuzzyValue(tip,"generous")); } catch (FuzzyException fe) { System.err.println(fe); return; } } Fig. 16. Fuzzy rules in FuzzyJess Java format.
public void Define_Variables() { try{ // Define name, range, unit service = new FuzzyVariable("service", 0, 10, "Rating"); // Add fuzzyterm service.addTerm("poor", new ZFuzzySet(0, 1.5)); service.addTerm("good", new PIFuzzySet(5, 1.5)); service.addTerm("excellent", new SFuzzySet(8.5, 10)); food = new FuzzyVariable("food", 0, 10, "Rating"); food.addTerm("rancid", new RFuzzySet(0, 3, new RightLinearFunction())); food.addTerm("delicious", new LFuzzySet(7, 10, new LeftLinearFunction())); tip = new FuzzyVariable("tip", 0, 30, "Percentage"); tip.addTerm("cheap", new TriangleFuzzySet(0, 5, 10)); tip.addTerm("average", new TriangleFuzzySet(10, 15, 20)); tip.addTerm("generous", new TriangleFuzzySet(20, 25, 30)); } catch (FuzzyException fe) { System.err.println(fe); return; } } Fig. 17. Membership functions in FuzzyJess Java format.
229
230
C. Tseng et al. / Computer Standards & Interfaces 28 (2005) 218–230
stylesheet to transform fuzzy system description in given software to an XML document conforming with our proposed XML schema.
[15] XML Schema for Fuzzy Systems, http://mh211b.cs.sjsu.edu/ webintelligence/fuzzyschema/index.html. [16] B. Hahn, Essential MATLAB for Scientists and Engineers, 2nd edition. Butterworth-Heinemann, 2003. [17] E. Friedman-Hill, Jess in Action: Rule-based Systems in Java, Manning Publications Company, 2003.
References [1] L. Zadeh, Knowledge representation in fuzzy logic, IEEE Transactions on Knowledge and Data Engineering 1 (1) (1989 (March)) 89 – 100. [2] George J. Klir, Bo Yuan, Fuzzy Sets and Fuzzy Logic: Theory and Applications, Pearson Publications, 1995. [3] Denis V. Rubtsova, Sergei V. Butakov, Application of XML for neural network exchange, Computer Standards & Interfaces 24 (4) (2002 September) 311 – 322. [4] Jonathan Lee, Yong-Yi Fanjiang, Modeling imprecise requirements with XML, Information and Software Technology 45 (7) (2003 (May)) 445 – 460. [5] K. Turowski, U. Weng, Representing and processing fuzzy information—an XML-based approach, Knowledge-Based Systems (2002) 67 – 7515. [6] Extensible Markup Language (XML) 1.1, http://www.w3.org/ TR/xml11/. [7] Guide to the W3C XML Specification ("XMLspec") DTD, Version 2.1, http://www.w3.org/XML/1998/06/xmlspecreport#AEN49. [8] David C. Fallside, XML Schema Part 0: Primer, W3C Recommendation, May 2001, http://www.w3.org/TR/ xmlschema-0/. [9] M. Kay, XSL Transformations (XSLT) version 2.0, W3C Working Draft, November 2003, http://www.w3.org/TR/ xslt20/. [10] Eric van der Vlist, Comparing XML Schema Languages, December 12, 2001, http://xml.com/pub/a/2001/12/12/ schemacompare.html. [11] Namespaces in XML, W3C Recommendation January, 1999, http://www.w3.org/TR/REC-xml-names. [12] H. Chris Tseng, Chuen-Ming Kung, Fuzzy logic filter for communication interference rejection, International Journal of Soft Computing (1995) 12 – 18. [13] H. Chris Tseng, Charlie Chi, Aircraft Anti-lock Brake System (ABS) with and neural networks and fuzzy logic, Journal of Guidance, Control, and Dynamics, AIAA, (1995 (October)) 1113 – 1118. [14] H. Chris Tseng, Dennis Teo, Ship-mounted satellite tracking antenna control, IEEE Transactions on Aerospace and Electronics (1998) 639 – 645.
H. Chris Tseng received the B.S. degree in Electrical Engineering from National Taiwan University in 1982, the PhD degree in Electrical Engineering from University of Illinois at Urbana-Champaign, in 1988. He has held regular and visiting positions at Duke University, Santa Clara University, and Chang Gung University in Taiwan. He was a David Packard Fellow in Santa Clara University during 1988– 1990. His industrial experience includes Senior Consultant in Hong Kong Productivity Council and Vice President in Voxa, Inc., CA. He was the Santa Clara Chapter chairman of IEEE Control System Society in 1994 and a faculty fellow in JPL in 2004. He is the cochair of Web Intelligence and Security Symposium in Utah, 2005. He is currently a Professor of Computer Science and chair of University Information Technology Board at San Jose State University, CA. His current interests include fuzzy logic, web intelligence, soft computing, and semantic web.
Toan Vu received the B.S. degree in Computer Science from San Jose State University in 2002. He is currently a MS student in Computer Science Department, San Jose State University. His current interests include web intelligence, XML, and semantic web.
Wafa Khamisy received the M.S. degree in Computer Science from San Jose State University in 2004. Her current interests include RDF, XML, and semantic web.