Differences

This shows you the differences between two versions of the page.

Link to this comparison view

hekate:ardplus [2009/03/19 13:31]
kinio
hekate:ardplus [2019/06/27 15:49]
Line 1: Line 1:
-====== The ARD+ Knowledge Representation ====== 
  
-**Author**: Grzegorz J. Nalepa and Igor Wojnicki 
- 
-**Version**: ​ Draft 2008Q3 
- 
-//ARD+// stands for //Attribute Relationship Diagrams//. 
-It is aimed to be as the final ARD version for the official HeKatE project (grant). 
- 
-FIXME 
- 
-===== Introduction ===== 
- 
-The basic goal of rule design is to build a rule-based knowledge base from system specification. 
-This process is a case of knowledge engineering (KE). 
-In general, the KE process is different in many aspects to the classic software engineering (SE) process. 
-The most important difference between SE and KE is that the former tries to model how the system works, ​ while the latter tries to capture and represent what is known about the system. 
-The KE approach assumes that information about how the system works can be inferred automatically from what is known about the system. 
- 
-In real life the //design// process support (as a process of building the design) is much more important than just providing means to visualize and construct the //design// (which is a kind of knowledge snapshot about the system). 
-Another observation can be also made: //​designing//​ is in fact  
-a knowledge-based process, where the //design// is often  
-considered a structure with procedures needed to build it (it is at least  
-often the case in the SE). 
- 
-In case of rules, the design stage usually consists in writing actual rules, based on knowledge provided by an expert. 
-The rules can be expressed in a natural language, this is often the case with informal approaches such as business rules. 
-However, it is worth pointing out that using some kind of formalization as early as possible in the design process improves design quality significantly. 
- 
-The next stage is the rule implementation. ​ 
-It is usually targeted at specific rule engine. 
-Some examples of such engines are: //CLIPS//, //Jess//, and //JBoss Rules// (formerly //​Drools//​). 
-The rule engine enforces a strict syntax on the rule language. 
- 
-Another aspect of the design - in a very broad sense - is a rule encoding, in a machine readable format. 
-In most cases it uses an XML-based representation. 
-There are some well-established standards for rule markup languages:, e.g. //RuleML// and notably //RIF// (see [[http://​www.w3.org/​2005/​rules]]). 
- 
-==== History and Related Documents ==== 
- 
-The original ARD method was first proposed by A. Ligęza in [[hekate:​bib:​hekate_bibliography#​ali-book|(ali-book)]] and later on developed and described by G. J. Nalepa and A. Ligęza in [[hekate:​bib:​hekate_bibliography#​gjn2005:​kkio|(gjn2005:​kkio)]],​ (ali-book-springer). 
-It was a supportive, and potentially optional, design method for XTT [[hekate:​bib:​hekate_bibliography#​gjn2005:​syssci:​xtt|(gjn2005:​syssci:​xtt)]]. 
-It provided simple means of attribute identification for the XTT method. 
- 
-The first version of ARD was applied to simple cases only, and had no practical prototype implementation. 
-The evolution of XTT, as well as larger complexity of systems designed with it, gave motivation for the major rework, and reformulation of ARD, which resulted in the version called ARD+. 
-ARD+ was defined by G. J. Nalepa and I. Wojnicki in [[hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardformal|(gjn2008flairs-ardformal)]] and [[hekate:​bib:​hekate_bibliography#​gjn2008aaia|(gjn2008aaia)]]. 
- 
-===== Motivation ===== 
- 
-The primary motivation for this research is an apparent lack of standard prototyping method for rules, 
-that would support the hierarchical and gradual design aspect covering the entire process. 
-Such a method should be formalized with use of some logic-based calculus in order to allow a formal analysis. 
-The research presented in this paper is a part of the //HeKatE// project, ​ 
-that aims at providing an integrated ​ and hierarchical ​ 
-rule design and implementation method for rule-based systems. 
-The actual rule design is carried out with a flexible rule design method called XTT (eXtended Tabular Trees) [[hekate:​bib:​hekate_bibliography#​gjn2005sysscixtt|(gjn2005sysscixtt)]]. 
-The method introduces a structured rulebase. 
-So one of the main requirements for the new prototyping method should be the support for XTT. 
- 
-===== ARD+ Method ===== 
- 
-==== Preliminary Concepts ==== 
- 
-The ARD+ method aims at supporting the rule designer at a very general design level, where the conceptualization of the design takes place [[hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardformal|(gjn2008flairs-ardformal)]],​ [[hekate:​bib:​hekate_bibliography#​gjn2008aaia|(gjn2008aaia)]]. 
-It is a knowledge-based approach, based on some classic AI methods (norvig). 
-ARD+ covers //​requirements specification//​ stage. 
-Its //input// is a general systems description in the natural language. 
-Its //output// is a model capturing knowledge about relationships among attributes describing system properties. 
-The model is subsequently used in the next design stage, where the actual logical design with //rules// is carried out. 
- 
-The main concepts behind ARD+ are: 
-  * **attributive logic** based on the use of //​attributes//​ for denoting certain properties in a system (ali-book-springer),​[[hekate:​bib:​hekate_bibliography#​ali2007flairs-granular|ali2007flairs-granular)]]. 
-  * **functional dependency** is a general relation between two or more attributes (or attribute sets), called "​dependent"​ and "​independent";​ the relation is such as  in order to determine the values of the dependent attributes, the values of the independent ones are needed. 
-  * **graph notation** provides simple, standard, yet expressive means for knowledge specification,​ and transformation. 
-  * **visualization** is the key concept in the practical design support, provided by this method. 
-  * **gradual refinement** is the main design approach, where the design is being specified in number of steps, each step being more detailed than the previous one. 
-  * **structural transformations** are  //​formalized//,​ with well defined syntax and semantics. 
-  * **hierarchical model** captures all of the subsequent design steps, with no semantic gaps; it holds knowledge about the system on the different abstraction levels [[hekate:​bib:​hekate_bibliography#​gjn2007iwk|(gjn2007iwk)]]. 
-  * **knowledge-based approach** provides means of the //​declarative//​ model specification. 
-Based on these concepts, a formalization of the method is put forward in the following section. 
- 
-==== Syntax ==== 
- 
-The ARD+ method aims at capturing relations between //​attributes//​ in terms of //​Attributive Logic// (AL)~\cite{ali-book-springer,​ali2007flairs-granular,​gjn2008ruleapps}. ​ 
-It is based on the use of //​attributes//​ for expressing knowledge about facts regarding world under consideration. 
-A typical atomic formula (fact) takes the form ''​A(o) = d'',​ where ''​A''​ is an attribute, ''​o''​ is an object ​ 
-and ''​d''​ is the current value of ''​A''​ for ''​o''​. 
-More complex descriptions take usually the form of conjunctions of such atoms and are omnipresent in the AI literature. 
-Please read the separate [[.:​ardplus:​ardplussyntax|ARD+ SYNTAX]] page for details. 
- 
-==== Transformations ==== 
- 
-Diagram transformations are one of the core concepts in the ARD+. 
-They serve as a tool for diagram specification and development. 
-For the transformation ''​T''​ such as ''​T:​ G<​sub>​1</​sub>​ → G<​sub>​2</​sub>'',​ where ''​G<​sub>​1</​sub>''​ and ''​G<​sub>​2</​sub>''​ are both diagrams, the diagram ''​G<​sub>​2</​sub>''​ carries more system related knowledge, is more specific and less abstract than the ''​G<​sub>​1</​sub>''​. 
-All of the transformations regard //​properties//​. 
-Some transformations are required to specify additional //​dependencies//​ or introduce new //​attributes//​ though. 
-A transformed diagram ''​G<​sub>​2</​sub>''​ constitutes a more detailed //diagram level//. 
- 
-Please read the [[.:​ardplus:​ardplustransformation|ARD+ TRANSFORMATION]] page for details. 
- 
-==== Refactoring ==== 
- 
-During the design process some properties or attributes can be missed or treated as not important, hence not included in the diagram. 
-Refactoring allows to incorporate such artifacts or remove unnecessary ones. 
-Refactoring consists in modifying any of the existing transformations:​ //​finalization//​ or //split// in a particular ARD+ diagram. 
- 
-=== Finalization === 
-A //​Finalization Refactoring//​ consist in adding or removing an attribute, modifying a past finalization transformation. 
- 
-Removing an attribute ''​A<​sub>​r</​sub>''​ results in removing it from all already defined complex properties. 
-If there is a simple property which regards such an attribute, it should be removed then. 
- 
-The //​Finalization Refactoring//​ with adding an attribute implies that at some point a split has to be performed on a property involving the new attribute. 
-Furthermore,​ appropriate dependencies between the property which consists of the introduced attribute and other properties have to be stated as well. 
-This constitutes a //Split Refactoring//​ 
- 
-=== Split === 
-In general a //Split Refactoring//​ regards: 
-  * adding or removing properties upon already defined splits, 
-  * rearranging already defined dependencies. 
- 
-Removing a property implies that all other properties that were split from it, even transitionally,​ have to be removed. 
-Adding a property leads to defining its dependencies,​ between the property and other already defined ones. 
- 
-In general adjusting dependencies can be based on: 
-  * defining dependencies between the property and other existing properties at the //most detailed// diagram level, or 
-  * adjusting appropriate ​ past split transformations gradually (at previous diagram levels) to take this new property into consideration. 
- 
-In the first case the dependencies are defined for the most detailed diagram level only. 
-Since there is a hierarchical design process (see Sec. [[ardplus#​Hierarchical_Model|Hierarchical Model]]), these changes are taken into consideration at previous levels ​ automatically. 
- 
-The second case implies that the designer updates appropriate past splits in a gradual refinement process. 
-Stopping this process at more general level than the most detailed one, generates appropriate splits in all more detailed levels automatically. 
- 
-==== Semantics ==== 
-The semantics of ARD+ will be explained and visualized using a reworked //​Thermostat example//, discussed in (ali-book-springer),​ (hekate:​bib:​hekate_bibliography#​gjn2005:​kkio|(gjn2005:​kkio)). 
-The goal of the system is to set the temperature in the office to the given set-point, based on the current time. 
- 
-A property always consists of a set of attributes, these attributes identify such a property uniquely. 
-The single most important concept in ARD+ is the concept of the //property functional dependency//​. 
-It indicates that in order to evaluate a dependent property, all independent properties have to be evaluated first. 
-It means, that in order to calculate dependent property attribute values, independent properties attribute values have to be calculated first. 
-It indicates that a property described by ''​Temperature''​ depends on a property described by ''​Time''​. 
- 
-Identifying all possible properties and attributes in a system could be a very complex task. 
-Transformations (see page [[.:​ardplus:​ardplustransformation|transformation]]) allow to gradually refine properties, attributes and functional dependencies in the system being designed. 
-This process ends when all properties are described by //physical attributes//​ and all functional dependencies among properties are defined. 
- 
-An example of the //​finalization//​ is given in Figures: 
- 
-{{ .:​ard-finalization-ex1.png?​273x140 }} 
- 
-The top diagram represents the system before the finalization. 
-The property described by attribute ''​Time''​ is finalized. 
-As a result new attributes are introduced: ''​Date'',​ ''​Hour'',​ ''​season'',​ ''​operation''​. 
-The outcome is the bottom diagram. 
-Semantics of this transformation is that the system property described by a //​conceptual attribute// ''​Time'',​ can be more adequately described by a set of more detailed attributes: ​ ''​Date'',​ ''​Hour'',​ ''​season'',​ ''​operation'',​ which more precisely define the meaning ''​Time''​ in the design. 
-The two latter attributes are //​physical//​ ones, used in the final rule implementation. 
-Finalization of properties based on such attributes is not allowed. 
- 
-An example of  //simple finalization//​ is given in Figure: 
- 
-{{ .:​ard-finalization-ex2.png?​292x100 }} 
- 
-A property described by a //​conceptual attribute// //​Temperature//​ is finalized into a property described by a single //physical attribute// ''​thermostat_settings''​. 
-In other words, a general concept of temperature,​ represented by ''​Temperature'',​ is  to be represented by an attribute ''​thermostat_settings''​. 
- 
-Another ARD+ transformation is the //split//. 
-An example is given in Figure: 
- 
-{{ .:​ard-split-dep1.png?​353x136 }} 
- 
-The top diagram shows a situation before, and the bottom one after, the //split transformation//​. 
-This //split// allows to refine new properties and define functional dependencies among them. 
-A property described by attributes: ''​Date'',​ ''​Hour'',​ ''​season'',​ ''​operation'',​ is split into two properties described by ''​Date'',​ ''​Hour'',​ and ''​season'',​ ''​operation''​ appropriately. 
-Furthermore there is a functional dependency defined such as ''​season''​ and ''​operation''​ depend on ''​Date''​ and ''​Hour''​. 
- 
-During the split, some of the properties can be defined as functionally independent. 
-An example of such a split is given in Figure: 
- 
-{{ .:​ard-split-indep1.png?​306x154 }} 
- 
-Properties described by ''​season''​ and ''​operation''​ are functionally independent. 
- 
-The ARD+ design process based on transformations leads to a diagram representing properties described only by ''​physical attributes''​. 
-An example of such a diagram is given in Figure: 
- 
-{{ .:​ard-therm-01.png?​420x151 }} 
- 
-All properties of the designed system are identified. 
-Each of them is described by single //physical attribute//​. 
-All functional dependencies are defined as well. 
- 
-Each transformation creates a more detailed diagram, introducing new attributes (//​finalization//​) or defining functional dependencies (//​split//​). 
-These  more detailed diagrams are called //levels of detail// or just //diagram levels//. 
-In the above examples, ​ transitions between two subsequent levels are presented. 
-A complete model consists of all the levels capturing knowledge about all //splits// and //​finalizations//​. 
- 
-==== Hierarchical Model ==== 
- 
-During the design process, upon splitting and finalization,​ the ARD+ model grows, becoming more and more specific. 
-This process constitutes the //​hierarchical model//. 
-Consecutive levels make a hierarchy of more and more detailed diagrams describing the designed system. 
- 
-The purposes of having the hierarchical model are: 
-  * gradual refinement of a designed system, and particularly,​ 
-  * identification where given properties come from, 
-  * ability to get back to previous diagram levels for refactoring purposes, 
-  * big picture of the designed system. 
- 
-The implementation of such hierarchical model is provided through ​ storing the lowest available, most detailed diagram level, and, additionally,​ information needed to recreate all of the higher levels, so called //​Transformation Process History//, TPH for short (see Def. [[.ardplus:​ardplussyntax#​TPH|TPH]]). 
- 
-The TPH captures information about changes made to properties at consecutive diagram levels. 
-These changes are carried out through the transformations:​ split or finalization. 
-The TPH forms a tree structure then, denoting what particular properties is split into or what attributes a particular property attribute is finalized into, according to Def. [[.ardplus:​ardplussyntax#​TPH|TPH]]. 
- 
-An example TPH for the transformation is given in Figure: 
-{{ :​hekate:​final-tph.png }} 
-It indicates that a property described by an attribute ''​Time''​ is refined into a property described by attributes: ''​Date'',​ ''​Hour'',​ ''​season'',​ ''​operation''​. 
- 
-Another TPH example for the split transformation is given in Figure: 
-{{ :​hekate:​split-tph.png }} 
-It indicates that a property described by attributes: ''​Date'',​ ''​Hour'',​ ''​season'',​ ''​operation''​ is refined into two properties described by: ''​Date'',​ ''​Hour''​ and ''​season'',​ ''​operation''​ attributes respectively. 
- 
- 
-Having a complete TPH and the most detailed level (namely ARD+), which constitute the //DPD// (according to Def. [[.:​ardplus:​ardplussyntax#​DPD|DPD]]) it is possible to automatically recreate any, more general, level. 
- 
-===== Rule Prototyping Algorithm ===== 
- 
-===== Design Tool Prototype ===== 
- 
-===== SPOOL ===== 
hekate/ardplus.txt · Last modified: 2019/06/27 15:49 (external edit)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0