public override object Visit(SomeRestriction e) { Tuple <bool, string> r; using (isKindOf.set("R")) r = e.R.accept(this) as Tuple <bool, string>; if (e.C is InstanceSet) { var instSet = e.C as InstanceSet; if (instSet.Instances.Count == 1) { return(new SparqlRelatedToInstance(owlNC, activeFreeVarId.get(), (instSet.Instances.First() as NamedInstance).name, r.Item2, r.Item1)); } else { List <SparqlNode> nodes = new List <SparqlNode>(); foreach (var inst in instSet.Instances) { nodes.Add(new SparqlRelatedToInstance(owlNC, activeFreeVarId.get(), (inst as NamedInstance).name, r.Item2, r.Item1)); } return(new SparqlOr(owlNC, activeFreeVarId.get(), nodes)); } } else if (e.C is Top) { return(new SparqlRelatedToVariable(owlNC, activeFreeVarId.get(), newFreeVarId(), r.Item2, r.Item1, true)); } else { SparqlNode c; using (activeFreeVarId.set(newFreeVarId())) c = e.C.accept(this) as SparqlNode; var d = new SparqlRelatedToVariable(owlNC, activeFreeVarId.get(), c.GetFreeVariableId(), r.Item2, r.Item1); return(new SparqlAnd(owlNC, activeFreeVarId.get(), new List <SparqlNode>() { c, d })); } }
public object Visit(SomeRestriction e) { return(EXISTS(e.R, e.C)); }