Yes, and in case you only want to do a single iteration in which the order of
rules is predictable, have a look at
http://spinrdf.org/spin.html#spin-rules-order
Your rule makes use of smf:buildUniqueURI which rings some alarm bells to me as
this may potentially create infinite loops unless you set max iteration count
to 1 (in the inferencing configuration).
Holger
On Sep 8, 2011, at 2:59 AM, Scott Henninger wrote:
> Allison; The default for TopSPIN is to run all rules until no more new
> triples are created. This enables the kind of forward-chaining
> inference you are looking for. So, yes, by way of this mechanism,
> which is quite separate from subClassOf relationships between the
> classes, the inferences from one rule will be seen on the next pass by
> the rule engine. Specifically, the following:
>
>> can someone suggest an alternative approach that would allow me
>> to use triples created by one spin:rule in another spin:rule?
>
> Is the default behavior for the SPIN engine.
>
> -- Scott
>
> On Sep 7, 11:34 am, Alison Callahan <[email protected]> wrote:
>> Hello all,
>>
>> I am using TopBraid Composer Maestro version 3.5.1 in Ubuntu 11.04.
>>
>> I am trying to execute a spin:rule for a subclass B that depends on triples
>> constructed by a spin:rule of its superclass A. Consider an example case
>> where I have the following spin:rule for the superclass A:
>>
>> CONSTRUCT {
>> ?this example:has_score ?x_score .
>> ?x_score example:derives_from ?y_score .
>> ?x_score example:has_value 0 .}
>>
>> WHERE {
>> ?game example:has_part ?this .
>> ?this example:has_smaller_part ?y .
>> ?y example:has_score ?y_score .
>> BIND (smf:buildUniqueURI("example:{?this}_score") AS ?x_score) .
>>
>> }
>>
>> And this is the spin:rule for the subclass B:
>>
>> DELETE {
>> ?x_score example:has_value ?x_score_value .}
>>
>> INSERT {
>> ?x_score example:has_value ?new_x_score_value .}
>>
>> WHERE {
>> ?this example:has_score ?x_score .
>> ?x_score example:has_value ?x_score_value .
>> ?this example:has_smaller_part ?y .
>> ?y example:has_score ?y_score .
>> ?y_score example:has_value ?y_score_value .
>> ?x_score example:derives_from ?y_score .
>> BIND ((?x_score_value + ?y_score_value) AS ?new_x_score_value) .
>>
>> }
>>
>> As you can hopefully see from this example, the spin:rule of class B
>> specifies triples constructed by the spin:rule of class A in its WHERE
>> clause. My question is: is this possible? When using TopSPIN for
>> inferencing, will the spin:rule of class B be able to query for triples
>> created by the spin:rule of class A? If not, can someone suggest an
>> alternative approach that would allow me to use triples created by one
>> spin:rule in another spin:rule?
>>
>> Thanks,
>>
>> Alison
>
> --
> You received this message because you are subscribed to the Google
> Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
> TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN.
> To post to this group, send email to
> [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/topbraid-users?hl=en
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en