コード例 #1
0
        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
                }));
            }
        }
コード例 #2
0
ファイル: ModAnalizer.cs プロジェクト: jswiatkowski/cognipy
 public object Visit(SomeRestriction e)
 {
     return(EXISTS(e.R, e.C));
 }