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 [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
-~----------~----~----~----~------~----~------~--~---