- From: Adrian Giurca <giurca@TU-Cottbus.De>
- Date: Tue, 15 May 2007 15:08:32 +0200
- To: public-rif-wg@w3.org
- Cc: giurca@tu-cottbus.de
Looking to the RIF Core Working Draft it is easy to discover that one of the goals is to be as general as possible. But is this an advantage of the language? For example, Const is designed to capture all symbols which logically are constants, predicate names and function names Here is a fragment from the RIF Core document: "The application of a symbol from Const to a sequence of terms is called Uniterm ("Universal term") since it can be used to play the role of a function term or an atomic formula *depending on the syntactic context* in which the application occurs." (Section Concrete Syntax) But XML itself is designed to capture meaning. Then why not enrich the syntax to capture explicitely the meaning of different content? The following example is from the RIF Core document (Example 2): <Uniterm> <Const>purchase</Const> <Var>Buyer</Var> <Var>Seller</Var> <Uniterm> <Const>book</Const> <Var>Author</Var> <Const>LeRif</Const> </Uniterm> <Const>$49</Const> </Uniterm> Here Const capture all symbols predicate name, function name, constant name From the document we read that Const has an optional attribute type which is supposed to encode the type of the content of Const. The types are explained in Section Multisorted Syntax and more or less is about some XML dataypes and the type URI. What is the type of the content $49 ? XML Schema datatpes does not define the type Currency since this is not a datatype therefore we can encode this may be as a number <Const type="xs:int">$49</Const> Clearly this is a unusual encoding in business rules since does not capture the the meaning of Currency. The solution is to specialize the Const construct in PredicateName, FunctionName, IndividualName and Literal even the content of these elements may overlap. I guess (since syntax does not help me) the following construct is incorrect: Example 1 <Uniterm> <Const type="xs:int">20</Const> <Var>Buyer</Var> <Var>Seller</Var> <Uniterm> If we specialize Const then such examples will be not possible. I guess (again! ) that the following constructs are different: Example 2 <Uniterm> <Const>purchase</Const> <Var>Buyer</Var> <Var>Seller</Var> <Uniterm> <Uniterm> <Const>purchase</Const> <Var>Seller</Var> <Var>Buyer</Var> <Uniterm> I guess is better to use role names to capture arguments i.e. <Uniterm> <Const>purchase</Const> <arguments> <Var>Buyer</Var> <Var>Seller</Var> </arguments> <Uniterm> I don't know what is the next construct (accepted by the actual syntax): Example 3 <Uniterm> <Var>Seller</Var> <Const>purchase</Const> <Var>Buyer</Var> <Uniterm> May be if we use an attribute to capture the name of the Uniterm is better: <Uniterm name="purchase" > <arguments> <Var>Buyer</Var> <Var>Seller</Var> </arguments> <Uniterm> What is the type in Const in the example below? The type attribute is optional but not restricted by the syntax to be used. Example 4 <Uniterm> <Const type="??????">purchase</Const> <Var>Buyer</Var> <Var>Seller</Var> <Uniterm> Recall that XML syntax is designed to capture meaning. But in the lack of syntax from the RIF Core make this hard. A rich syntax together with a not so much overloading of elements as they are now in the current Core document may reduce tools efforts to avoid inconsistencies. -Adrian
Received on Tuesday, 15 May 2007 13:08:49 UTC