Holger, I think I have finally found the source of the problem:
http://topbraid.org/functions-smf was being imported with owl:imports instead of spin:imports. I have changed this in my ontology and everything seems to work fine now. The documentation at http://spinrdf.org/spin.html#spin-imports might be a bit misleading, as it states that "For a SPIN constraint checker (or rule engine), the spin:imports keyword has the same meaning as owl:imports..." Now I do have a case of not all constraint violations showing up. I have defined a property chain as an irreflexive property, and when this is violated it shows up correctly in TBC. I don't see this violation when using SPIN API. Regards, Gerrit On Jun 15, 2:21 am, Holger Knublauch <[email protected]> wrote: > Hi Gerrit, > > it fails to compile the body of the smf:deriveURI function, which is a SPIN > function with a spin:body. So this is fine even with the open source part of > SPIN. The body is > > SELECT ?uri > WHERE { > BIND (smf:resource(fn:concat(xsd:string(?arg1), ?arg2)) AS ?uri) . > > } > > and my code at the point in question handles arguments such as ?arg1 and > ?arg2. The error message indicates that it tries to cast the empty string > into a number. Judging from my code this can only happen if the variable is > called ?arg. So I am wondering what version of the functions-smf function you > are importing. When I ran this last week on the online version it was fine. I > guess I need more input, and maybe you can see some additional problems with > what I wrote above. > > Note that most other functions from the SMF namespace won't work in the open > source edition. I have moved many (useful) SMF functions into the SPIF > namespace for 3.5, and those SPIF functions with a Java body are available as > part of the extended SPIN API and stand-alone server (code named TopBraid > Live Express Edition). > > Holger > > On Jun 15, 2011, at 12:41 AM, Gerrit wrote: > > > > > > > > > Indeed - my own ontology importshttp://topbraid.org/functions-smf. I > > have added SPINModuleRegistry.get().registerAll(model,null); just > > after registering the OWL RL model, but I get a similar error (output > > shown below). Could it have anything to do with SPIN functions being > > only available under a commercial license? > > > Regards, > > Gerrit > > > ----------------- > > Output: > > > Functionhttp://topbraid.org/sparqlmotionfunctions#deriveURIdoes not > > define a valid body > > java.lang.NumberFormatException: For input string: "" > > at > > java.lang.NumberFormatException.forInputString(NumberFormatException.java: > > 48) > > at java.lang.Integer.parseInt(Integer.java:470) > > at java.lang.Integer.valueOf(Integer.java:554) > > at > > org.topbraid.spin.model.impl.FunctionCallImpl.getArgumentProperties(Functio > > nCallImpl.java: > > 64) > > at > > org.topbraid.spin.model.impl.FunctionCallImpl.getArguments(FunctionCallImpl > > .java: > > 49) > > at > > org.topbraid.spin.model.impl.FunctionCallImpl.print(FunctionCallImpl.java: > > 172) > > at > > org.topbraid.spin.util.SPINExpressions.printExpressionString(SPINExpression > > s.java: > > 189) > > at > > org.topbraid.spin.model.impl.AbstractSPINResourceImpl.printNestedExpression > > String(AbstractSPINResourceImpl.java: > > 146) > > at > > org.topbraid.spin.model.impl.AbstractSPINResourceImpl.printNestedExpression > > String(AbstractSPINResourceImpl.java: > > 141) > > at org.topbraid.spin.model.impl.BindImpl.print(BindImpl.java:54) > > at > > org.topbraid.spin.model.impl.ElementListImpl.print(ElementListImpl.java: > > 139) > > at > > org.topbraid.spin.model.impl.AbstractSPINResourceImpl.printNestedElementLis > > t(AbstractSPINResourceImpl.java: > > 132) > > at org.topbraid.spin.model.impl.QueryImpl.printWhere(QueryImpl.java: > > 177) > > at org.topbraid.spin.model.impl.SelectImpl.print(SelectImpl.java:99) > > at > > org.topbraid.spin.model.impl.AbstractSPINResourceImpl.toString(AbstractSPIN > > ResourceImpl.java: > > 183) > > at org.topbraid.spin.arq.SPINARQFunction.<init>(SPINARQFunction.java: > > 58) > > at > > org.topbraid.spin.arq.SPINBodyFunctionDriver.doCreate(SPINBodyFunctionDrive > > r.java: > > 21) > > at > > org.topbraid.spin.arq.SPINFunctionDrivers.create(SPINFunctionDrivers.java: > > 31) > > at > > org.topbraid.spin.system.SPINModuleRegistry.registerARQFunction(SPINModuleR > > egistry.java: > > 222) > > at > > org.topbraid.spin.system.SPINModuleRegistry.register(SPINModuleRegistry.jav > > a: > > 176) > > at > > org.topbraid.spin.system.SPINModuleRegistry.registerFunctions(SPINModuleReg > > istry.java: > > 258) > > at > > org.topbraid.spin.system.SPINModuleRegistry.registerAll(SPINModuleRegistry. > > java: > > 207) > > at > > org.topbraid.spin.system.SPINImports.getImportsModel(SPINImports.java: > > 120) > > at > > org.topbraid.spin.constraints.SPINConstraints.run(SPINConstraints.java: > > 441) > > at > > org.topbraid.spin.constraints.SPINConstraints.check(SPINConstraints.java: > > 313) > > at > > org.topbraid.spin.constraints.SPINConstraints.check(SPINConstraints.java: > > 297) > > .... > > > On Jun 11, 1:24 am, Holger Knublauch <[email protected]> wrote: > >> Hi Gerrit, > > >> I don't see where you load and register the smf namespace. If your own > >> ontology imports this namespace, then you should also register the SPIN > >> functions contained therein. In your example below it seems you only > >> register the OWL RL model - try to do the same registerAll on model. This > >> assumes thathttp://topbraid.org/functions-smfissomewhere in your model's > >> imports closure. > > >> Holger > > >> model = > >> loadModelWithImports("/home/gerrit/code/TBCFreeWorkspace/TopBraid/BondingDe > >> vice5.owl","http://sofia.gotdns.com/ontologies/BondingDevice.owl"); > > >> // Load OWL RL library from the web > >> logger.debug("Loading OWL RL ontology..."); > >> OntModel owlrlModel = > >> loadModelWithImports("http://topbraid.org/spin/owlrl-all"); > > >> // Initialize system functions and templates > >> SPINModuleRegistry.get().init(); > >> // Create and add Model for inferred triples > >> newTriples = ModelFactory.createDefaultModel(ReificationStyle.Minimal); > >> model.addSubModel(newTriples); > >> SPINModuleRegistry.get().registerAll(owlrlModel, null); > > >> On Jun 10, 2011, at 9:59 PM, Gerrit wrote: > > >>> Holger, > > >>> I have created a gist of the Java code setup to make it more readable > >>> at: > >>>https://gist.github.com/9e89d33b88518327c19b > > >>> The setup is based on OWLRLExample.java that you provided in another > >>> thread: > >>>http://groups.google.com/group/topbraid-users/browse_thread/thread/87... > > >>> Regards, > >>> Gerrit > > >>> On Jun 10, 3:45 am, Holger Knublauch <[email protected]> wrote: > >>>> Hi Gerrit, > > >>>> I may need more information to understand this issue. I tried the > >>>> following and got no error. I changed the > >>>> KennedysInferencingAndConstraintsExample so that it also loads the SMF > >>>> function file > > >>>> // Create OntModel with imports > >>>> OntModel ontModel = > >>>> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, baseModel); > >>>> Model smfModel = ModelFactory.createDefaultModel(); > >>>> smfModel.read("http://topbraid.org/functions-smf"); > >>>> ontModel.addSubModel(smfModel); > > >>>> And it then ran fine. In your exception trace it seems that the system > >>>> fails to parse the body of that smf:deriveURI function. Could you > >>>> provide more details on how you set up your Java code before you run the > >>>> constraints? > > >>>> Thanks > >>>> Holger > > >>>> On Jun 9, 2011, at 7:10 PM, Gerrit wrote: > > >>>>> When performing constraint checking using > > >>>>> // Run all constraints > >>>>> List<ConstraintViolation> cvs = SPINConstraints.check(model, > >>>>> null); > >>>>> System.out.println("Constraint violations:"); > >>>>> for(ConstraintViolation cv : cvs) { > >>>>> System.out.println(" - at " + > >>>>> SPINLabels.get().getLabel(cv.getRoot()) + ": " + cv.getMessage()); > >>>>> } > > >>>>> I get the following error: > > >>>>> java.lang.IllegalArgumentException: > >>>>> Functionhttp://topbraid.org/sparqlmotionfunctions#deriveURI > >>>>> does not define a valid body > >>>>> at org.topbraid.spin.arq.SPINARQFunction.<init>(SPINARQFunction.java: > >>>>> 71) > >>>>> at > >>>>> org.topbraid.spin.arq.SPINBodyFunctionDriver.doCreate(SPINBodyFunctionDrive > >>>>> r.java: > >>>>> 21) > >>>>> at > >>>>> org.topbraid.spin.arq.SPINFunctionDrivers.create(SPINFunctionDrivers.java: > >>>>> 31) > >>>>> at > >>>>> org.topbraid.spin.system.SPINModuleRegistry.registerARQFunction(SPINModuleR > >>>>> egistry.java: > >>>>> 222) > >>>>> at > >>>>> org.topbraid.spin.system.SPINModuleRegistry.register(SPINModuleRegistry.jav > >>>>> a: > >>>>> 176) > >>>>> at > >>>>> org.topbraid.spin.system.SPINModuleRegistry.registerFunctions(SPINModuleReg > >>>>> istry.java: > >>>>> 258) > >>>>> at > >>>>> org.topbraid.spin.system.SPINModuleRegistry.registerAll(SPINModuleRegistry. > >>>>> java: > >>>>> 207) > >>>>> at > >>>>> org.topbraid.spin.system.SPINImports.getImportsModel(SPINImports.java: > >>>>> 120) > >>>>> at > >>>>> org.topbraid.spin.constraints.SPINConstraints.run(SPINConstraints.java: > >>>>> 441) > >>>>> at > >>>>> org.topbraid.spin.constraints.SPINConstraints.check(SPINConstraints.java: > >>>>> 313) > >>>>> at > >>>>> org.topbraid.spin.constraints.SPINConstraints.check(SPINConstraints.java: > >>>>> 297) > >>>>> at > >>>>> eu.sofia.adk.sib.model.semantic.SemanticModel.query(SemanticModel.java: > >>>>> 484) > >>>>> at > >>>>> eu.sofia.adk.sib.model.request.QueryRequest.processRequest(QueryRequest.jav > >>>>> a: > >>>>> 135) > >>>>> at eu.sofia.adk.sib.model.request.Request.run(Request.java:94) > >>>>> at > >>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java: > >>>>> 441) > >>>>> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > >>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:138) > >>>>> at java.util.concurrent.ThreadPoolExecutor > >>>>> $Worker.runTask(ThreadPoolExecutor.java:886) > >>>>> at java.util.concurrent.ThreadPoolExecutor > >>>>> $Worker.run(ThreadPoolExecutor.java:908) > >>>>> at java.lang.Thread.run(Thread.java:662) > >>>>> Caused by: java.lang.NumberFormatException: For input string: "" > >>>>> at > >>>>> java.lang.NumberFormatException.forInputString(NumberFormatException.java: > >>>>> 48) > >>>>> at java.lang.Integer.parseInt(Integer.java:470) > >>>>> at java.lang.Integer.valueOf(Integer.java:554) > >>>>> at > >>>>> org.topbraid.spin.model.impl.FunctionCallImpl.getArgumentProperties(Functio > >>>>> nCallImpl.java: > >>>>> 64) > >>>>> at > >>>>> org.topbraid.spin.model.impl.FunctionCallImpl.getArguments(FunctionCallImpl > >>>>> .java: > >>>>> 49) > >>>>> at > >>>>> org.topbraid.spin.model.impl.FunctionCallImpl.print(FunctionCallImpl.java: > >>>>> 172) > >>>>> at > >>>>> org.topbraid.spin.util.SPINExpressions.printExpressionString(SPINExpression > >>>>> s.java: > >>>>> 189) > >>>>> at > >>>>> org.topbraid.spin.model.impl.AbstractSPINResourceImpl.printNestedExpression > > ... > > read more » -- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN. 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-users?hl=en
