XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] A more fundamental concept than functions: units of code that self-select

without going into the RDF vs XML debate, i must admit the capability
of a rule engine
to enhance its original data set with business rules has definitely
made me a description-logic and inference engine fanatic.

On Tue, May 18, 2010 at 1:26 PM, Costello, Roger L. <costello@mitre.org> wrote:
> Hi Olivier,
>
> I was hoping someone would bring up rule engines. That is very exciting about a rule adding more data to the input, thus triggering other rules to fire. Wow!
>
> /Roger
>
> -----Original Message-----
> From: Olivier Rossel [mailto:olivier.rossel@gmail.com]
> Sent: Tuesday, May 18, 2010 4:28 AM
> To: Hermann Stamm-Wilbrandt
> Cc: xml-dev@lists.xml.org
> Subject: Re: [xml-dev] A more fundamental concept than functions: units of code that self-select
>
> self-selecting units of code are the fundament of all (forward) rules engines.
> such as drools, euler, cwm, fuxi, etc.
>
> the differences between these rules engines and xslt is the concept of
> working memory.
> the working memory is the set of data that are processed by the rule
> engine to decide which
> rules to trigger.
>
> in xslt, the working memory could be seen as the input document(s).
> with the limitation
> that the running stylesheet cannot alter its working memory (i.e the
> input document(s)).
>
> on the contrary, in rules engines, the working memory is accessible to
> the rules also in write mode.
> so rules can add data to the working memory, and these data will
> trigger other rules that add
> other data to the working memory, and so on.
>
>
> On Tue, May 18, 2010 at 10:05 AM, Hermann Stamm-Wilbrandt
> <STAMMW@de.ibm.com> wrote:
>>> Are there other programming languages that support self-selecting units
>> of code?
>> David already pointed to C++ and Java.
>>
>> Add perl, awk and even sed to that list (/regexp/ selectors).
>>
>>
>> Mit besten Gruessen / Best wishes,
>>
>> Hermann Stamm-Wilbrandt
>> Developer, XML Compiler, L3
>> WebSphere DataPower SOA Appliances
>> ----------------------------------------------------------------------
>> IBM Deutschland Research & Development GmbH
>> Vorsitzender des Aufsichtsrats: Martin Jetter
>> Geschaeftsfuehrung: Dirk Wittkopp
>> Sitz der Gesellschaft: Boeblingen
>> Registergericht: Amtsgericht Stuttgart, HRB 243294
>>
>>
>>
>>             "Costello, Roger
>>             L."
>>             <costello@mitre.o                                          To
>>             rg>                       "xml-dev@lists.xml.org"
>>                                       <xml-dev@lists.xml.org>
>>             05/18/2010 12:27                                           cc
>>             AM
>>                                                                   Subject
>>                                       [xml-dev] A more fundamental
>>                                       concept than functions: units of
>>                                       code that self-select
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Hi Folks,
>>
>> XSLT has xsl:template and xsl:function. On the surface they appear to be
>> the same: you invoke a template rule using xsl:apply-templates and you
>> invoke a function by dereferencing its name; you can pass parameters to
>> both; both return values.
>>
>> Clearly the idea of "function" is a fundamental concept in Computer
>> Science.
>>
>> It occurs to me that the functionality provided by template rules represent
>> an even more fundamental concept. In fact, functions are merely a subset of
>> the functionality provided by template rules.
>>
>> Allow me to explain.
>>
>> Consider these three template rules:
>>
>>    <xsl:template match="Book[Publisher lt 1970]">
>>
>>    <xsl:template match="Book[Publisher eq 1970]">
>>
>>    <xsl:template match="Book[Publisher gt 1970]">
>>
>> Suppose that Book is the context node and it has a Publisher child element
>> with value 1970. With this apply-templates:
>>
>>    <xsl:apply-templates select="." />
>>
>> the second xsl:template rule will fire. Of the three template rules, the
>> second one self-selected ("I meet the requisite conditions; I will now
>> activate myself").
>>
>> Template rules have the ability to self-select. Functions never
>> self-select. They must always be explicitly called out.
>>
>> Template rules can also be explicitly called out. Consider these revised
>> templates:
>>
>>    <xsl:template match="*" mode="pre-1970">
>>        <param name="Book" />
>>
>>    <xsl:template match="*" mode="eq-1970>
>>        <param name="Book" />
>>
>>    <xsl:template match="*" mode="post-1970">
>>        <param name="Book" />
>>
>> The second template can be explicitly called out:
>>
>>    <xsl:template select="." mode="eq="1970">
>>        <xsl:with-param name="Book" select="." />
>>
>> Each template rule is "named" using mode. Effectively the mode is used as
>> the name of the template rule.
>>
>> So template rules are units of code that can be either explicitly called
>> out, or can self-select.
>>
>> Functions are units of code that can only be explicitly called out.
>>
>> The ability to create self-selecting units of code is very powerful. It
>> resounds of decentralization, local-control, Complex Systems. Wow!
>>
>> Are there other programming languages that support self-selecting units of
>> code?
>>
>> Do you agree that self-selecting units of code represents a more
>> fundamental concept than functions?
>>
>> /Roger
>>
>>
>>
>> _______________________________________________________________________
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>> to support XML implementation and development. To minimize
>> spam in the archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
>> subscribe: xml-dev-subscribe@lists.xml.org
>> List archive: http://lists.xml.org/archives/xml-dev/
>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>>
>>
>>
>>
>> _______________________________________________________________________
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>> to support XML implementation and development. To minimize
>> spam in the archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
>> subscribe: xml-dev-subscribe@lists.xml.org
>> List archive: http://lists.xml.org/archives/xml-dev/
>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>>
>>
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS