Hi Jeff,

this is another manifestation of the same problem with the default  
libraries. I debugged this and saw that - in stand-alone SPIN API use  
- the query is again expanded into sp:mul and does not recognize this  
as the built-in function *.

While I will look into changing this for the next release, a simple  
work-around is to have your function model import the http://spinrdf.org/spl 
  namespace and then run the registerAll:

        Model baseModel = ModelFactory.createDefaultModel();
        baseModel.read(...);
        OntModel ontModel =  
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, baseModel);
        SPINModuleRegistry.get().registerAll(ontModel);


Thanks for the report,
Holger


On Mar 30, 2009, at 2:32 PM, Schmitz, Jeffrey A wrote:

> Continuing with the SPIN API, I've created my own function  
> (twoDimArea, attached) in my own model (SpinLib.owl).  I have  
> successfully registered the function using:
>    SPINModuleRegistry.get().registerFunctions(spinLibModel);
>
> I know it was registered because I can call:
> Function twoDimFunc = 
> spinLibModel.getFunction("http://www.boeing.com/IVHM/SpinLib.owl#twoDimArea 
> ");
>
> and then I can retrieve and print out the function's comment.
> Then I went back into the spinsquare.n3 model and changed the  
> spin:rule on the Rectangle class to be reference my new function:
>
> # Computes area := width * height
> CONSTRUCT {?this :area ?area .}
> WHERE {
>    ?this :width ?width .
>    ?this :height ?height .
>    LET (?area := SpinLib:twoDimArea(?width, ?height)) .
> }
>
>  Since the twoDimArea function has been registered, I would expect  
> the call to run the inferences on the spinsquare model to still work:
> SPINInferences.run(spinsquareOntModel, infmodel, exp, null, true,  
> null);
>
> However, it's not returning any inferences.  Note that changing the  
> CONSTRUCT query back to use LET(?area := ?width * ?height) does  
> still work.
>
> Am I missing a step in registering my new function?  Or is there  
> some other reason the SPINInferences engine isn't able to execute  
> the new function?
>
> Thanks,
>
> Jeff
>
> <Outlook.jpg>
>
>
>
> From: Holger Knublauch [mailto:hol...@topquadrant.com]
> Sent: Thursday, March 26, 2009 7:37 PM
> To: topbraid-composer-users@googlegroups.com
> Subject: [tbc-users] Re: SPIN API is now open source
>
> The line below is shown in the examples that come with the SPIN API  
> download, but I admit this is not obviously pointed out. I will  
> either make this fact more prominent, or add such a call by default  
> to make life easier.
>
> Holger
>
>
> On Mar 26, 2009, at 2:03 PM, Schmitz, Jeffrey A wrote:
>
>> Nope, missed that part.  That did it though, thanks!  Looks like  
>> great stuff!
>>
>> Jeff
>>
>> From: Holger Knublauch [mailto:hol...@topquadrant.com]
>> Sent: Thursday, March 26, 2009 3:41 PM
>> To: topbraid-composer-users@googlegroups.com
>> Subject: [tbc-users] Re: SPIN API is now open source
>>
>> Hi Jeff,
>>
>> did you call this at init time:
>>
>> // Initialize system functions and templates
>> SPINModuleRegistry.get().init();
>>
>> This will load the spl namespace and the functions defined therein,  
>> including the system functions such as sp:mul so that the SPIN  
>> engine knows that they are abbreviated (e.g. using *).
>>
>> Holger
>>
>>
>> On Mar 26, 2009, at 1:28 PM, Schmitz, Jeffrey A wrote:
>>
>>>
>>> Hello,
>>>   I finally got a chance to look through the new SPIN API, and  
>>> started
>>> with trying to run the SPIN rules on the spinsquare ontology.  I  
>>> think
>>> I'm pretty close, except it's choking on the line in the spin:rule
>>> construct query that uses the multiplication symbol, i.e.
>>>
>>>    LET (?area := (?width * ?height)) .
>>>
>>> Stepping through the code, I can see that this gets turned into  
>>> what I
>>> would guess must be a property function named sp:mul:
>>>
>>>   LET (?area := sp:mul(?width, ?height))
>>>
>>> However, I don't think my execution environment has access to that
>>> function and thus the query doesn't return anything.  Is there any  
>>> way I
>>> could get this function and make it available to my execution
>>> environment, and is that documented anywhere?  Or is that not part  
>>> of
>>> the release?
>>>
>>> Thanks!
>>> Jeff
>>>
>>> -----Original Message-----
>>> From: Holger Knublauch [mailto:hol...@topquadrant.com]
>>> Sent: Saturday, March 07, 2009 12:38 PM
>>> To: topbraid-composer-users@googlegroups.com
>>> Subject: [tbc-users] SPIN API is now open source
>>>
>>>
>>> Dear users,
>>>
>>> we have had several requests from people who would like to integrate
>>> SPIN functionality (SPARQL-based constraint checking, inferencing,
>>> user-defined functions) into their own applications. In order to
>>> encourage the wider adoption of SPIN in the community, we have  
>>> therefore
>>> decided to make the key features of our SPIN implementation open  
>>> source:
>>>
>>> http://www.topquadrant.com/topbraid/spin/api/
>>> The SPIN API is built on Jena and provides the following features:
>>>
>>> * Converters between textual SPARQL syntax and the SPIN RDF
>>> Vocabulary
>>> * A SPIN-based constraint checking engine (via spin:constraint)
>>> * A SPIN-based inferencing engine (via spin:rule and
>>> spin:constructor)
>>> * Support to execute user-defined SPIN functions using Jena/ARQ
>>> * Support to execute user-defined SPIN templates
>>>
>>> The license has been selected to allow open source projects (from
>>> universities etc) to use SPIN without further complications. For  
>>> closed
>>> source users, we offer a commercial license that also provides  
>>> business
>>> users assurance and support. With this policy we hope to encourage
>>> researchers to provide their (open source) implementations back to  
>>> the
>>> community to help the SPIN community grow.
>>>
>>> The SPIN API is currently in beta, and the official 1.0 release is
>>> scheduled in conjunction with TopBraid 3.0 in the next few weeks. We
>>> appreciate your feedback in the meantime.
>>>
>>> Kinds regards,
>>> Holger
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TopBraid Composer Users" group.
To post to this group, send email to topbraid-composer-users@googlegroups.com
To unsubscribe from this group, send email to 
topbraid-composer-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/topbraid-composer-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to