- From: Adrian Giurca <giurca@tu-cottbus.de>
- Date: Tue, 22 May 2007 10:21:57 +0200
- To: "Boley, Harold" <Harold.Boley@nrc-cnrc.gc.ca>
- CC: RIF WG <public-rif-wg@w3.org>
I don't understand the reasons why the final translation is a RDF
document. I guess some explanations are desirable. Indeed JenaRules use
RDF(S) as a vocabulary language. Is this the intention of RIF?
1. First I guess that properties like "hasNIC" or "hasIP" must be "NIC"
or "IP". If they are named "hasNIC" then this denotes a boolean
property which is not the case here.
I propose the following markup for rule 1 in source rules
<http://www.w3.org/2005/rules/wg/wiki/UC8_Worked_Example#head-31e6e6f127874865b611fa0516c76e96fb9abcc1>
<rif:Rule rif:id="r1-computeNodeToServer">
<rif:If>
<rif:And>
<!-- (?x rdf:type it:ComputeNode) -->
<rif:Uniterm>
<rif:Predicate rif:id="it:ComputeNode"/>
<rif:Var rif:name="?x"/>
</rif:Uniterm>
<!-- (?x it:hasNIC ?i) -->
<rif:Uniterm>
<rif:Predicate rif:id="it:NIC"/>
<rif:Var rif:name="?x"/>
<rif:Var rif:name="?i"/>
</rif:Uniterm>
<!-- (?i it:hasIP ?p) -->
<rif:Uniterm>
<rif:Predicate rif:id="it:IP"/>
<rif:Var rif:name="?i"/>
<rif:Var rif:name="?p"/>
</rif:Uniterm>
</rif:And>
</rif:If>
<rif:Then>
<rif:And>
<!-- (?x rdf:type t:Server) -->
<rif:Uniterm>
<rif:Predicate rif:id="t:Server"/>
<rif:Var rif:name="?x"/>
</rif:Uniterm>
<!--(?x t:address ?p) -->
<rif:Uniterm>
<rif:Predicate rif:id="t:address"/>
<rif:Var rif:name="?x"/>
<rif:Var rif:name="?p"/>
</rif:Uniterm>
</rif:And>
</rif:Then>
</rif:Rule>
3. In rule R3 discussing blanc nodes I don't see why the rule is not
written as:
[r3-applicationHost:
(?a rdf:type bp:Application)
(?a bp:discoveredAtIP ?p)
(?n rdf:type t:Server)
->
(?n t:address ?p) (?n t:hosts ?a)]
Why we need the blank node here?
4. About built-ins:
In rule r4-discount I guess that, according with Jena Rules syntax , we
have product(?c, '0.75', ?cd) or product(?c, '0.75'^^xs:float, ?cd). In
the second case the markup may be:
<rif:Uniterm>
<!-- if we allow RIF built-ins -->
<rif:Predicate rif:id="rif:product"/>
<rif:Var rif:name="?c"/>
<rif:Const rif:type="xs:float">0.75</rif:Const>
<rif:Var rif:name="?cd"/>
</rif:Uniterm>
5. the triple (?a ?P ?subApp) may be represented as:
<rif:Uniterm>
<rif:Var rif:name="?P"/>
<rif:Var rif:name="?a"/>
<rif:Var rif:name="?subApp"/>
</rif:Uniterm>
while (?P rdfs:subPropertyOf bp:comprises) may be:
<rif:Uniterm>
<rif:Predicate rif:id="rdfs:subPropertyOf"/>
<rif:Var rif:name="?P"/>
<rif:Predicate rif:id="bp:comprises"/>
</rif:Uniterm>
For example you can move the rule 1 from Jena to JBossRules (using RIF ) as:
package jenaRules
// carefully to transforming URI in Java path expressions. Not all
the time possible
import com.hp.hp1.jena.rifUC08.ITDatabase.ComputeNode;
import com.hp.hp1.jena.rifUC08.target.Server;
rule "r1-computeNodeToServer"
when
//(?x rdf:type it:ComputeNode) (?x it:NIC ?i) (?i it:IP ?p)
translates to the following column
$x: ComputeNode( $i: nic -> ($p: $i.ip() ) )
then
// (?x rdf:type t:Server)
$x = (Server)$x;
// (?x t:address ?p)
$x.setAddress($p);
// update the working memory
modify( $x);
end
We have a running use case (UServ Product Derby 2005 Use Case
<http://www.businessrulesforum.com/2005_Product_Derby.pdf>) with
JenaRules and JBoss Rules (using R2ML) at:
http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/33
The Jena Rules application is:
http://oxygen.informatik.tu-cottbus.de/userv/jsp/jena/index.jsp
At the end of insurance calculation you can see rules that were applies,
RDF data and so on.
Regards,
Adrian
Boley, Harold wrote:
> I've updated the Worked Examples of the Use Cases available at
> <http://www.w3.org/2005/rules/wg/wiki/D._Evaluation%3A_Use_Cases>
> according to RIF Core WD1 (UC6 Worked Example not yet available).
>
> -- Harold
>
>
--
Dr. Adrian Giurca
http://www.informatik.tu-cottbus.de/~agiurca/
Received on Tuesday, 22 May 2007 08:22:12 UTC