コード例 #1
0
        public void TestNode()
        {
            var func = new Function();
            var setValueAtKey = new SetValueAtKey();
            var hasKey = new HasKey();
            var dictVar = new Variable(DictType.Instance, new Dictionary<string, dynamic>
            {
                { "tata", "tutu" }
            });
            var boolVar = new Variable(Scalar.Boolean, false);

            uint setValueAtID = func.addInstruction(setValueAtKey);
            uint getDictID = func.addInstruction(new Getter(dictVar));
            uint hasKeyID = func.addInstruction(hasKey);
            uint setBoolVarID = func.addInstruction(new Setter(boolVar));

            func.LinkInstructionData(getDictID, "reference", setValueAtID, "reference");
            func.setEntryPoint(setValueAtID);
            setValueAtKey.SetInputValue("key", "toto");
            setValueAtKey.SetInputValue("value", 3.42);

            hasKey.SetInputValue("key", "toto");
            func.LinkInstructionData(getDictID, "reference", hasKeyID, "reference");
            func.LinkInstructionData(hasKeyID, "result", setBoolVarID, "value");
            func.LinkInstructionExecution(setValueAtID, 0, setBoolVarID);
            
            Assert.IsFalse(dictVar.Value.ContainsKey("toto"));

            func.Call();

            Assert.IsTrue(dictVar.Value.ContainsKey("toto"));
            Assert.IsTrue(dictVar.Value["toto"] == 3.42);
            Assert.IsTrue(boolVar.Value);
        }
コード例 #2
0
ファイル: ModAnalizer.cs プロジェクト: jswiatkowski/cognipy
        public object Visit(HasKey e)
        {
            if (e.modality != Statement.Modality.IS)
            {
                return(CreateNull());
            }

            return(CreateNull());
        }
コード例 #3
0
ファイル: HasKeyTest.cs プロジェクト: mvprav/Goo-Factory
        public void ShouldProvideTheDefaultValueOfTheProperty()
        {
            var key1 = new HasKey<Organization, int>(organization => organization.Id);
            object value = key1.Value();
            value.Should().Be().EqualTo(0);

            var key2 = new HasKey<Organization, string>(organization => organization.Code);
            key2.Value().Should().Be().Null();
        }
コード例 #4
0
        public void Update_KeyEquatable()
        {
            var changes = new List <NotifyCollectionChangedEventArgs>();

            var c = new ObservableCollection <HasKey>(Enumerable.Range(0, 10).Select(i => new HasKey(i.ToString(), i)));

            c.CollectionChanged += (s, e) => changes.Add(e);

            var updated = c.ToList();

            updated[7] = new HasKey("7a", 7);
            c.Update(updated);

            Assert.AreEqual(1, changes.Count);
            Assert.AreEqual(NotifyCollectionChangedAction.Replace, changes.Single().Action);
            Assert.AreEqual("7a", c[7].Content);
        }
コード例 #5
0
 public override object Visit(HasKey e)
 {
     UnionDepth.Add(e.DataRoles.Count + e.Roles.Count);
     return(base.Visit(e));
 }
コード例 #6
0
        public override object Visit(HasKey e)
        {
            StringBuilder[] side = new StringBuilder[] { new StringBuilder(), new StringBuilder() };

            var conc = owlNC.getIRIFromId((e.C as CNL.DL.Atomic).id, EntityKind.Concept);

            for (int i = 0; i <= 1; i++)
            {
                side[i].Append("(?X" + i.ToString() + " rdf:type <" + conc + ">)");
            }

            int varid = 0;

            foreach (var r in e.Roles)
            {
                for (int i = 0; i <= 1; i++)
                {
                    side[i].Append(", ");

                    if (r is CNL.DL.Atomic)
                    {
                        var q = owlNC.getIRIFromId((r as CNL.DL.Atomic).id, EntityKind.Role);
                        side[i].Append("(?X" + i.ToString() + " <" + q + "> " + "?Y" + varid.ToString() + "X" + i.ToString() + ")");
                    }
                    else if (r is CNL.DL.RoleInversion)
                    {
                        var rr = (r as CNL.DL.RoleInversion).R;
                        if (rr is CNL.DL.Atomic)
                        {
                            var q = owlNC.getIRIFromId((rr as CNL.DL.Atomic).id, EntityKind.Role);
                            side[i].Append("(?Y" + varid.ToString() + "X" + i.ToString() + " <" + q + "> ?X" + i.ToString() + ")");
                        }
                    }
                }
                varid++;
            }
            foreach (var r in e.DataRoles)
            {
                for (int i = 0; i <= 1; i++)
                {
                    side[i].Append(", ");

                    if (r is CNL.DL.Atomic)
                    {
                        var q = owlNC.getIRIFromId((r as CNL.DL.Atomic).id, EntityKind.DataRole);
                        side[i].Append("(?X" + i.ToString() + " <" + q + "> " + "?Y" + varid.ToString() + "X" + i.ToString() + ")");
                    }
                }
                varid++;
            }

            // for sameas

            var idx = Interlocked.Increment(ref prp_key_cnt).ToString().ToString();

            sb.Append("[prp-key-1-" + idx + ": ");
            id2stmt.Add("prp-key-1-" + idx, e);

            sb.Append(side.First() + "," + side.Last() + ", notEqual(?X0, ?X1)");
            for (int z = 0; z < varid; z++)
            {
                sb.Append(", equal(");
                for (int i = 0; i <= 1; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(" ,");
                    }
                    sb.Append("?Y" + z.ToString() + "X" + i.ToString());
                }
                sb.Append(")");
            }
            sb.Append(" -> (?X0 owl:sameAs ?X1)");
            appendDebugString(sb, e);
            sb.AppendLine("]");

            //for different

            var idx2 = Interlocked.Increment(ref prp_key_cnt).ToString();

            sb.Append("[prp-key-2-" + idx2 + ": ");
            id2stmt.Add("prp-key-2-" + idx2, e);

            sb.Append(side.First() + "," + side.Last() + ", notEqual(?X0, ?X1)");
            sb.Append(", pairwizeDifferentAtleastOnce(");
            bool first = true;

            for (int z = 0; z < varid; z++)
            {
                for (int i = 0; i <= 1; i++)
                {
                    if (!first)
                    {
                        sb.Append(" ,");
                    }
                    else
                    {
                        first = false;
                    }
                    sb.Append("?Y" + z.ToString() + "X" + i.ToString());
                }
            }

            sb.Append(")");
            sb.Append(" -> (?X0 owl:differentFrom ?X1)");
            appendDebugString(sb, e);
            sb.AppendLine("]");

            return(null);
        }