Sure. Using the same example model, the following in spin:body would
get a count of grandchildren for the argument ?arg1
SELECT COUNT(?gchild)
WHERE {
?arg1 kennedys:child ?child .
?child kennedys:child ?gchild .
}
If named gchildCount, then LET (?x := gchildCount
(kennedys:RoseFitzgerald)) would get you a grandchild count for
kennedys:RoseFitzgerald. Binding to a variable name - (count(?gchild)
as ?n) - isn't necessary in this case as the count is passed via the
function return.
-- Scott
On Dec 14, 6:10 pm, Arthur Keen <[email protected]> wrote:
> Thanks very much. Could a spin function be used instead of the subselect in
> the first example?
>
> Arthur
>
> On Dec 14, 2009, at 5:21 PM, Scott Henninger wrote:
>
> > Arthur; There are a couple of ways to do this. The first is through
> > SELECT aggregates. Since aggregates are post-result set processing,
> > you have to use a sub-select. For example, the following will create
> > property that counts the number of children in the example
> > kennedysSPIN model.
>
> > CONSTRUCT { ?this :numberOfChildren ?n . }
> > WHERE {
> > { SELECT ?this (COUNT(?child) AS ?n)
> > WHERE {
> > ?this kennedys:child ?child .
> > } GROUP BY ?this
> > } .
> > }
>
> > Another approach is to use smf:countMatches, but is only applicable if
> > a single triple pattern is specified (the aggregate will work with
> > more complex queries):
>
> > CONSTRUCT
> > { ?this :numberOfChildren ?n .
> > }
> > WHERE
> > { ?this kennedys:child ?child .
> > LET (?n := smf:countMatches(?this, kennedys:child, ?x)) .
> > }
>
> > -- Scott
>
> > On Dec 14, 3:35 pm, Arthur Keen <[email protected]> wrote:
> >> I am looking for an example of how to do aggregation using SPIN. I need
> >> to aggregate metrics in a part-whole hierarchy and would like to use SPIN
> >> rules to do it. I have the aggregations working with SELECT, but have not
> >> found any examples that use CONSTRUCT, so that I can encode the
> >> aggregations as SPIN rules.
>
> >> Thanks
> >> Arthur
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "TopBraid Composer Users" group.
> > 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
> > athttp://groups.google.com/group/topbraid-composer-users?hl=en.
--
You received this message because you are subscribed to the Google Groups
"TopBraid Composer Users" group.
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-composer-users?hl=en.