On Mar 31, 2009, at 10:39 AM, Schmitz, Jeffrey A wrote:

> A little more info on this, I've added code to directly execute a  
> query that references the registered function instead of relying on  
> executing the SPIN rule via SPINInferences.run , and I'm seeing the  
> same behavior.  When I don't use the function, the query executes  
> correctly.  However when I reference the function I get no result.   
> And again, after registering the function, I am able to retrieve it:
>
> SPINModuleRegistry.get().registerAll(spinLibModel.memModel);
> Function twoDimFunc =
>    
> SPINModuleRegistry.get().getFunction("http://www.boeing.com/IVHM/SpinLib.owl#twoDimArea
>  
> ", spinLibModel.memModel);
> org.topbraid.spin.model.Query twoDimQuery = twoDimFunc.getBody();
> String comment = twoDimFunc.getComment();
> System.out.println("Comment for TwoDimArea: " + comment);
>
> but when I build and execute the query that uses the function as  
> follows, I get no result, while not using the function in the query  
> yields the correct results:
> String selQueryString = "SELECT ?area\n" +
>    "WHERE {\n" +
>       "?this :width ?width .\n" +
>       "?this :height ?height .\n" +
>       "LET (?area := SpinLib:twoDimArea(?width, ?height)) .\n" +
>    "}";
> ARQ2SPIN arq2SPIN = new ARQ2SPIN(spinsquareModel.baseModel);
> ARQFactory arqFactory = org.topbraid.spin.system.ARQFactory.get();
>
>
> //This automagically pre-pends prefix declarations from the model  
> being queried.
> Query arqSelQuery = arqFactory.createQuery(spinsquareModel.memModel,  
> selQueryString);
> org.topbraid.spin.model.Select spinQuery = (Select)  
> arq2SPIN.createQuery(arqSelQuery, null);
> QueryWrapper universalQuery = new QueryWrapper(arqSelQuery,  
> selQueryString, spinQuery, "Area Function");
> QueryExecution qe =  
> arqFactory.createQueryExecution(universalQuery.getQuery(),  
> spinsquareModel.memModel);
> ResultSet results = qe.execSelect();
>
> It's just strange that I can retrieve the function from the  
> SPINModuleRegistry but it doesn't seem to be able to execute it.   
> One thing is that I'm using the SpinLib model in the call to  
> registerAll since that's where the function resides, but I'm  
> querying against the spinsquare model, which imports SpinLib.  Is  
> that ok?

(Jeff and I have meanwhile solved the underlying problem - for the  
archive: the problem was that the user-defined function needs to be  
registered together with a union Model (OntModel) that also contains  
the spin.owl and sp.owl namespaces. I have clarified this in the  
JavaDocs for the next build).

>
> btw, is there a way to use the ARQFactory to create a QueryExecution  
> with a QuerySolutionMap?

Not that I know of, I have never used QuerySolutionMap.

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