示例#1
0
        /*
         * private void pruneToncepts()
         * {
         *  for (int t = 0; t < toncepts.Count; t++)
         *  {
         *      Symbol tc = toncepts.Values.ElementAt(t);
         *      if (tc.getTonceptVerticalSupport() < min_ver_sup)
         *      {
         *          for(int i = 0; i < tc.entIdxKeyList.Count; i++)
         *          {
         *              string[] userPair = tc.entIdxKeyList.ElementAt(i).Split(';');
         *              entityKarma eK = entitiesKarmaVec[int.Parse(userPair[0])];
         *              //entitiesKarmaVec[int.Parse(userPair[0])].instancesDic.Remove(entitiesKarmaVec[int.Parse(userPair[0])].instancesDic.ElementAt(int.Parse(userPair[1])).Key);
         *               //eK.instancesDic.Remove(userPair[1]); // eK.instancesDic.ElementAt(int.Parse(userPair[1])).Key);
         *          }
         *          toncepts.Remove(toncepts.Keys.ElementAt(t));
         *          t--;
         *      }
         *      tc.entIdxKeyList.Clear();
         *  }
         *  for (int v = 0; v < glblTindexVerticalSupport.Count(); v++)
         *      if (glblTindexVerticalSupport.ElementAt(v).Value.Count() < min_ver_sup)
         *      {
         *          glblTindexVerticalSupport.Remove(glblTindexVerticalSupport.ElementAt(v).Key);
         *          v--;
         *      }
         * }*/

        public TIRP getMatrixDICasTIRP(int tTrgtID, int tErlyID, int rel)
        {
            TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel);

            //string trK = toncepts[tTrgtID].tonceptINDEX + "-" + rel + "-" + toncepts[tErlyID].tonceptINDEX;
            for (int eIdx = 0; eIdx < entitieSize; eIdx++)
            {
                if (entitiesKarmaVec[eIdx].instancesDicContainsKey(toncepts[tTrgtID].SymbolINDEX, rel, toncepts[tErlyID].SymbolINDEX))                                                                               // .instancesDic.ContainsKey(trK))
                {
                    Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListDic = entitiesKarmaVec[eIdx].getInstancesDicValuebyKey(toncepts[tTrgtID].SymbolINDEX, rel, toncepts[tErlyID].SymbolINDEX); // .instancesDic[trK];
                    foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListDic)                                                                                                // for(int i = 0; i < tiListDic.Count; i++)
                    {
                        foreach (SymbolicTimeInterval tis in tiListTi.Value)
                        {
                            StiInstance tisInsNew = new StiInstance(tiListTi.Key, tis, eIdx);
                            twoSzdTIRP.AddEntity(eIdx); // int.Parse(tiListTi.Key.Split('-')[0]));
                            twoSzdTIRP.tinstancesList.Add(tisInsNew);
                        }
                        twoSzdTIRP.meanHorizontalSupport += tiListTi.Value.Count();
                    }
                }
            }
            twoSzdTIRP.meanHorizontalSupport = twoSzdTIRP.meanHorizontalSupport / twoSzdTIRP.supprtingEntities.Count();
            return(twoSzdTIRP);
        }
示例#2
0
        public TIRP get2SizedAsTIRP(int tTrgtID, int tErlyID, int tTrgtIdx, int tErlyIdx, int rel)
        {
            TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel);
            ////string trK = toncepts[tTrgtID].tonceptINDEX.ToString() + "-" + rel + "-" + toncepts[tErlyID].tonceptINDEX;
            ////Dictionary<string, List<SymbolicTimeInterval>> tiListDic = twoSizedTIRPsMatrix[toncepts[tTrgtID].tonceptINDEX][toncepts[tErlyID].tonceptINDEX].prsMxRelVec[rel].instancesDicList; //entitiesKarmaVec[eIdx].instancesDic[trK];
            //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>>[] tiListDicsVec = karma.Kindex[toncepts[tTrgtID].tonceptINDEX, toncepts[tErlyID].tonceptINDEX].getRelEntitiesDics(rel);

            //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>>[] tiListDicsVec = getTindexRelEntitiesDicsVec(tTrgtIdx, tErlyIdx, rel);
            Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > > tiListDicsVec = getTindexRelEntitiesDicsVec(tTrgtIdx, tErlyIdx, rel);

            for (int eIdx = 0; eIdx < tiListDicsVec.Count(); eIdx++)
            {
                //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>> tiListTiDic = tiListDicsVec[eIdx];
                //if (tiListDicsVec[eIdx] != null)
                {
                    foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListDicsVec.ElementAt(eIdx).Value) // [eIdx]) // tiListTiDic)
                    {
                        foreach (SymbolicTimeInterval tis in tiListTi.Value)
                        {
                            StiInstance tisInsNew = new StiInstance(new SymbolicTimeInterval(tiListTi.Key.startTime, tiListTi.Key.endTime, tiListTi.Key.symbol), tis, tiListDicsVec.ElementAt(eIdx).Key); // eIdx);
                            twoSzdTIRP.AddEntity(eIdx);                                                                                                                                                   //// int.Parse(tiListTi.Key.Split('-')[0]));
                            twoSzdTIRP.tinstancesList.Add(tisInsNew);
                            twoSzdTIRP.meanHorizontalSupport++;
                        }
                    }
                }
            }
            return(twoSzdTIRP);
        }
示例#3
0
        /// <summary>
        /// Gets all suporting instances for the newly extended TIRP
        /// </summary>
        /// <param name="tNew"></param>
        /// <param name="tinstances"></param>
        /// <returns></returns>
        private bool SearchSupportingInstances(ref TIRP tNew, List <StiInstance> tinstances)
        {
            bool seedRelEmpty = true;

            bool[] entitieSupport = new bool[KLC.NUM_OF_ENTITIES];
            int    topRelIdx = ((tNew.size - 1) * (tNew.size - 2) / 2), seedRelIdx = (tNew.size * (tNew.size - 1) / 2 - 1);
            int    seedRelation = tNew.rels[seedRelIdx];
            int    tncptLst = tNew.symbols[tNew.size - 2], tncptNew = tNew.symbols[tNew.size - 1];

            int lsTncptIdx = karma.getSymbolIndexByID(tncptLst);
            int nxTncptIdx = karma.getSymbolIndexByID(tncptNew);

            for (int tins = 0; tins < tinstances.Count; tins++)
            {
                seedRelEmpty = false;
                //Get all intervals where the relation takes place for the last STI added to the TIRP
                List <SymbolicTimeInterval> tisList = karma.karma.GetStisInRelationWithKeyStiForEntityByRelationAndSymbols(lsTncptIdx, nxTncptIdx, seedRelation, tinstances[tins].entityIdx, tinstances[tins].sti[tNew.size - 2]);
                if (tisList != null)
                {
                    //Add all the found instances to the TIRP
                    for (int i = 0; (karma.getHS1() == false && i < tisList.Count) || (karma.getHS1() == true && i < 1); i++)
                    {
                        int relIdx = 0;
                        for (relIdx = topRelIdx; relIdx < seedRelIdx; relIdx++)
                        {
                            if (!KLC.checkRelationAmongTwoTIs(tinstances[tins].sti[relIdx - topRelIdx], tisList.ElementAt(i), tNew.rels[relIdx], karma.getEpsilon(), karma.getMaxGap()))
                            {
                                break;
                            }
                        }
                        if (relIdx == seedRelIdx)
                        {
                            StiInstance newIns = new StiInstance(tNew.size, tinstances[tins].sti, tisList.ElementAt(i), tinstances[tins].entityIdx);
                            tNew.AddEntity(newIns.entityIdx);
                            tNew.tinstancesList.Add(newIns);
                        }
                    }
                }
            }
            return(seedRelEmpty);
        }
示例#4
0
        /// <summary>
        /// Gets all the two sized instances for a certain relation and certain symbols.
        /// </summary>
        /// <param name="tTrgtID">First symbol id</param>
        /// <param name="tErlyID">Second symbol id</param>
        /// <param name="rel">Relation id</param>
        /// <returns></returns>
        public TIRP GetTwoSizedTirpForSymbolsAndRel(int tTrgtID, int tErlyID, int rel)
        {
            TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel);

            Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >[] tiListDicsVec = karma.Kindex[Symbols[tTrgtID].SymbolINDEX, Symbols[tErlyID].SymbolINDEX].GetStiMapsInArrayIndexedByEntityIdForRelation(rel);
            for (int eIdx = 0; eIdx < tiListDicsVec.Count(); eIdx++) // for every entity...
            {
                Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTiDic = tiListDicsVec[eIdx];
                foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListTiDic) // ...and every pair of mappings between symbolic time interavls to the list of stis they are in relation with
                {
                    foreach (SymbolicTimeInterval tis in tiListTi.Value)                                            // add all the two sized instances to twoSzdTIRP
                    {
                        StiInstance tisInsNew = new StiInstance(new SymbolicTimeInterval(tiListTi.Key.startTime, tiListTi.Key.endTime, tiListTi.Key.symbol), tis, eIdx);
                        twoSzdTIRP.AddEntity(eIdx);
                        twoSzdTIRP.tinstancesList.Add(tisInsNew);
                        twoSzdTIRP.meanHorizontalSupport++;
                    }
                }
            }
            return(twoSzdTIRP);
        }