Hi Dave, Thank you for your response, I'm glad to have my thoughts confirmed. Is it possible to write my own generators and register them like I have with builtins?
The problem I want to solve isn't the regex example above, its more about generating bindings so I can feed them into a forward rule and then instantiate triples as a general pattern. Cheers, Richard On Mon, Mar 17, 2014 at 9:06 AM, Dave Reynolds <[email protected]>wrote: > On 14/03/14 13:53, Richard Morgan wrote: > >> Hi, >> >> I would like to extend the base regex function in Jena to provide more >> than >> one match result. >> > > I don't think that's possible. > > > For instance I would like the following rule >> >> [ myregex("the cat sat on the mat", \"(.at)\", ?token) >> >> " -> (<http://a> <http://b> ?token)]"; >> >> to return >> >> - [http://a, http://b, "cat"] >> >> - [http://a, http://b, "sat"] >> >> - [http://a, http://b, "mat"] >> >> From looking at how BindingEnvironment works I can only return with a >> single binding per variable. >> > > Correct. > > In Jena rules then builtins are only used as essentially filters on rule > firings, they aren't generators. > > In the forward rule case (which is suggested by your notation above) that > wouldn't make sense anyway - forward rules either fire or they don't, > there's no backtracking. > > In the backward rule case then there is backtracking but the interface for > builtins doesn't support their use as generators. > > Dave > >
