Dear Scot, All red boxes resolved.
But when executing: no error, but when I try to look at an individual for its derived value (totalCost of say House1): Operation Failed, Reason: Could not execute query; attempt to get a CONSTRUCT model from a slect query. Ps Small other issue: when you 'add existing' (and owl:Thing is higlighted) ther is only a partial set of choices on the right side; only after you select manually owl:Thing you can scroll (ie initially the scroll bar is missing..). -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Scott Henninger Sent: 17 March 2009 14:48 To: TopBraid Composer Users Subject: [tbc-users] Re: own functions in spin:rules Michel; The red box indicates syntax errors, which are shown in the status bar at the bottom of Composer. The first syntax error is to encapsulate the AS statement with parentheses: SELECT (SUM(?cost) AS ?totalCost) The second is to use the variable name ?arg1 - i.e. the "?" is missing. When a function is created, it exists in your ontology as a URI. Therefore you need to use a qname or full URI to name the function, i.e.: :sumFunction() or <http://myStuff.org/funct#sumFunction>() Give that a try. -- Scott On Mar 17, 8:11 am, Michel Bohms <[email protected]> wrote: > Replying myself after reading the manual :) > > I now first defined a subclass of sp:Functions called sumFunction. > Then I defined a spin:constraint for it: Argument sp:arg1 : House > > Finally I defined a body for it (delete at House...): > > SELECT SUM(?cost) AS ?totalCost > WHERE { > arg1 :hasPart_transitive ?Part . > ?Part :cost ?cost . > OPTIONAL { > ?Part :hasPart_directly ?anotherPart . > } . > FILTER (!bound(?anotherPart)) . > > } > > still 2 problems: > > 1. the box for the body stays red > 2. at House: the box for the spin:rule: > > CONSTRUCT {?this :totalCost ?totalCost } WHERE { LET (?totalCost := > sumFunction (?this)).} > > is still red (despite the function is now known...). > > Feel I am getting closer....thx for getting it to work! > > Michel > > On 17 mrt, 13:28, Michel Bohms <[email protected]> wrote: > > > Hi Holger, > > > In earlier mails we discussed the determination of totalCost (of > > some > > 'whole') via a helper function. > > > When I do as spin:rule: > > > CONSTRUCT {?this :totalCost ?totalCost } WHERE { LET (?totalCost := > > sumFunction (?this)). > > > } > > > it seems the box stays red although I defined: > > > a spin:body > > > SELECT SUM(?cost) AS ?totalCost > > WHERE { > > ?this :hasPart_transitive ?Part . > > ?Part :cost ?cost . > > OPTIONAL { > > ?part :hasPart_directly ?anotherPart . > > } . > > FILTER (!bound(?anotherPart)) . > > > } > > > clearly I am missing the "sumFuction" definition itself but how do I > > do that ? (assuming SUM is now implemented in the latest beta). > > > (to refresh your memory: the idea was to calculate the cost of the > > whole by counting all the leaf part's cost via querying over the all > > transitive parts and then filter out the atomic leafs) > > > thx a lot, Michel This e-mail and its contents are subject to the DISCLAIMER at http://www.tno.nl/disclaimer/email.html --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
