Thanks Dave, actually i have a graph that i want to keep it *intact* while extending my solution with it. for example consider this solution : sol1: user=u1, location=Boston, LocationType=city
i want to extend it to sol2: user=u1, location=USA, LocationType=country sol3: user=u1, location=America, LocationType=continent This requires access to two graphs; graph1 contains these triples: Boston dbo:isPartOf USA USA rdf:type Country USA dbo:isPartOf America America rdf:type continent and graph2 which contains: Sol1 user u1 Sol1 location Boston Sol1 LocationType city i want to keep graph1 *inact* so that i can use it for future solution extensions. This requires writing this reasoning rule on abovegraphs : [resultExpansion: (?sol me:user ?u) ======> from graph2 (?sol me:location ?loc) ======> from graph2 (?loc dbo:isPartOf ?loc2) ======> from graph1 -> (?u dbo:location ?loc2) ======> add to graph1 (?sol me:location ?loc2) ======> add to graph2 ] any idea how to write this role which works of 2 different graphs? Thanks. On Tuesday, March 11, 2014 7:43 AM, Soheila Dehghanzadeh <[email protected]> wrote: Thanks Dave, actually i have a graph that i want to keep it *intact* while extending my solution with it. for example consider this solution: sol1: user=u1, location=Boston, LocationType=city i want to extend it to sol2: user=u1, location=USA, LocationType=country sol3: user=u1, location=America, LocationType=continent This requires access to two graphs; graph1 contains these triples: Boston dbo:isPartOf USA USA rdf:type Country USA dbo:isPartOf America America rdf:type continent and graph2 which contains: Sol1 user u1 Sol1 location Boston Sol1 LocationType city i want to keep graph1 *inact* so that i can use it for future solution extensions. This requires writing this reasoning rule on above graphs : [resultExpansion: (?sol me:user?u) ======> from graph2 (?sol me:location ?loc) ======> from graph2 (?loc dbo:isPartOf?loc2) ======> from graph1 -> (?u dbo:location?loc2) ======> add to graph1 (?sol me:location?loc2) ======> add to graph2 ] any idea how to write this role which works of 2 different graphs? Thanks. On Monday, March 10, 2014 5:18 PM, Dave Reynolds <[email protected]> wrote: On 10/03/14 09:08, Soheila Dehghanzadeh wrote: > Hi All, > > I ran a query on a dataset and i have the result binding of my query > solutions. > sol1: user=u1, location=loc1, LocationType=type1sol2: user=u1, location=loc2, > LocationType=type2 > now i want to extend my existing query result set with an inference rule. > This inference rule requires combining the existing dataset with above result > set to extend the result set by adding new solutions. > > @prefix pre: <http://jena.hpl.hp.com/prefix#>. > > [rule1: > > (?sol pre:user?a) (?sol pre:location?b) (?sol pre:lcationType > ?c) > > (?b location:ispartof?d) (?d rdf:type?type) > > -> (sol2 pre:user > ?a) (sol2 pre:location?d) (sol2 pre:locationType?type)] > As we can see in the rule above all rules will endup adding properties to sol2 while in fact i want sol2 get a dynamic name for each new inference and add a new solution not adding properties to the same solution. any comment is greatly appreciated. Not sure I follow the requirement exactly but if you want a rule to create a new resource you have two choices - create a blank node or create a URI node with some synthesized URI. See makeTemp & makeSkolem for the first case, see uriConcat for the second. Be careful that don't end up with a rule which will keep matching on its own results and creating an unbounded number of new resources. Dave
