Exemplo n.º 1
0
        //Index one entity's sti series
        public void indexEntitySTIs(int eIdx, ref int index, ref int[] relStat, List <int> tonceptIds)
        {
            List <SymbolicTimeInterval> tisList = entityTISs[entitiesVec[eIdx]];

            for (int ti1Idx = 0; ti1Idx < tisList.Count; ti1Idx++)
            {
                SymbolicTimeInterval firsTis = tisList.ElementAt(ti1Idx);
                if (tonceptIds == null || tonceptIds.Contains(firsTis.symbol))
                {
                    addToncept(eIdx, firsTis, ref index); // update toncept entity support
                    //karma..
                    for (int ti2Idx = ti1Idx + 1; ti2Idx < tisList.Count; ti2Idx++)
                    {
                        SymbolicTimeInterval secondTis = tisList.ElementAt(ti2Idx);
                        if (tonceptIds == null || tonceptIds.Contains(secondTis.symbol))
                        {
                            //if (firsTis.symbol != secondTis.symbol)
                            //{
                            addToncept(eIdx, secondTis, ref index);     // DONT update toncept entity support
                            int relation = KLC.WhichRelation(firsTis, secondTis, epsilon, max_gap, relations_style);
                            if (relation > -1)
                            {
                                relStat[relation]++;
                                indexTISPair(firsTis, secondTis, relation, eIdx);
                            }
                            else
                            {
                                break;
                            }
                            //}
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Runs karma for all entites up to a certain entity id
        /// </summary>
        /// <param name="to_eIdx">Entity id max non-inclusive</param>
        public void RunKarma(int to_eIdx)
        {
            int index = 0;

            int[] countOfEachRelation = new int[7];
            for (int eIdx = 0; eIdx < to_eIdx && eIdx < entityTISs.Count() && eIdx < entitieSize; eIdx++)
            {
                List <SymbolicTimeInterval> tisList = entityTISs[entitiesVec[eIdx]];
                for (int ti1Idx = 0; ti1Idx < tisList.Count; ti1Idx++) // time interval 1
                {
                    SymbolicTimeInterval firsTis = tisList.ElementAt(ti1Idx);
                    AddSymbol(eIdx, firsTis, ref index);                            // update symbol entity support
                    for (int ti2Idx = ti1Idx + 1; ti2Idx < tisList.Count; ti2Idx++) // time interval 2
                    {
                        SymbolicTimeInterval secondTis = tisList.ElementAt(ti2Idx);
                        //if (firsTis.symbol != secondTis.symbol)
                        //{
                        AddSymbol(eIdx, secondTis, ref index);     // DONT update symbol entity support
                        int relation = KLC.WhichRelation(firsTis, secondTis, epsilon, max_gap, relations_style);
                        if (relation > -1)
                        {
                            countOfEachRelation[relation]++;
                            karma.AddStiToTindexRelationEntryBySymbols(Symbols[firsTis.symbol].SymbolINDEX, Symbols[secondTis.symbol].SymbolINDEX, relation, eIdx, firsTis, secondTis);
                        }
                        else
                        {
                            break;
                        }
                        //}
                    }
                }
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Compare symbolic time interavl with another and return the result
 /// </summary>
 /// <param name="otherTimeInterval"></param>
 /// <returns>-1 if the other time interval starts after the original time interval or if they start at the same time and the other time interval finishes after the original one
 /// If both time intervals occur at the same time, compare according to the symbol number
 /// Return 1 otherwise</returns>
 public int CompareTo(object otherTimeInterval)
 {
     if (otherTimeInterval is SymbolicTimeInterval)
     {
         SymbolicTimeInterval other = otherTimeInterval as SymbolicTimeInterval;
         if (startTime < other.startTime)
         {
             return(-1);
         }
         else if (startTime == other.startTime && endTime < other.endTime)
         {
             return(-1);
         }
         else if (startTime == other.startTime && endTime == other.endTime && symbol < other.symbol)
         {
             return(-1);
         }
         else
         {
             return(1);
         }
     }
     else
     {
         return(0);
     }
 }
Exemplo n.º 4
0
 public List <SymbolicTimeInterval> getTisListbyEIdxTis(int eIdx, SymbolicTimeInterval tis)
 {
     if (entsStiListStiDics.ContainsKey(eIdx) && entsStiListStiDics[eIdx].ContainsKey(tis))
     {
         return(entsStiListStiDics[eIdx][tis]);
     }
     return(null);
 }
Exemplo n.º 5
0
        private void indexTimeInetervalSymbolsPair(SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal, int relation, int entityIdx)
        {
            int tKeyIdx = toncepts[tisKey.symbol].SymbolINDEX;
            int tValIdx = toncepts[tisVal.symbol].SymbolINDEX;

            //karma.indexTTsRelEidxSTIs(tKeyIdx, tValIdx, relation, entityIdx, tisKey, tisVal);
            dharmaIdx.indexTTsRelEidxSTIs(tKeyIdx, tValIdx, relation, entityIdx, tisKey, tisVal, toncepts.Count());
        }
Exemplo n.º 6
0
 //Index a pair of stis with a relation in a specific entity
 private void indexTISPair(SymbolicTimeInterval firsTis, SymbolicTimeInterval secondTis, int relation, int eIdx)
 {
     if (forBackWards == KLC.forwardMining)
     {
         indexTimeInetervalSymbolsPair(firsTis, secondTis, relation, eIdx);
     }
     else
     {
         indexTimeInetervalSymbolsPair(secondTis, firsTis, relation, eIdx);
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// Reads the input file for the purposes of initializing the program by reading all time interavls and adding all symbols
 /// </summary>
 /// <param name="filePath"></param>
 /// <param name="entityTISs"></param>
 /// <param name="toncepts"></param>
 public static void read_tids_file(string filePath, ref Dictionary <int, List <SymbolicTimeInterval> > entityTISs, ref Dictionary <int, Symbol> toncepts)
 {
     try
     {
         TextReader tr       = new StreamReader(filePath);
         string     readLine = tr.ReadLine();
         while (readLine != null && !readLine.StartsWith("startToncepts"))
         {
             readLine = tr.ReadLine();
         }
         if (!(readLine == "startToncepts" && tr.Peek() >= 0 && tr.ReadLine().StartsWith("numberOfEntities")))
         {
             throw new System.InvalidOperationException("incorrect file format");
         }
         int entitiesCounter = 0;
         while (tr.Peek() >= 0)  //read the entities and their symbolic time intervals
         {
             readLine = tr.ReadLine();
             if (entitiesCounter >= 0 && entitiesCounter < NUM_OF_ENTITIES) //entitiesCounter >= frstEntIdx)
             {
                 string[] mainDelimited = readLine.Split(';');
                 string   entityID      = mainDelimited[0].Split(',')[0];
                 readLine      = tr.ReadLine();
                 mainDelimited = readLine.Split(';');
                 List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
                 for (int i = 0; i < mainDelimited.Length - 1; i++)
                 {
                     string[]             tisDelimited = mainDelimited[i].Split(',');
                     int                  symbol       = int.Parse(tisDelimited[2]);
                     SymbolicTimeInterval tis          = new SymbolicTimeInterval(int.Parse(tisDelimited[0]), int.Parse(tisDelimited[1]), symbol);
                     addToncept(entityTISs.Count, tis, ref toncepts);
                     tisList.Add(tis);
                 }
                 long dt1 = DateTime.Now.Millisecond;
                 tisList.Sort();;
                 long dt2 = DateTime.Now.Millisecond - dt1;
                 entityTISs.Add(int.Parse(entityID), tisList);
             }
             else
             {
                 readLine = tr.ReadLine();
             }
             entitiesCounter++;
         }
         tr.Close();
     }
     catch (Exception e)
     {
         Console.WriteLine("The process failed: {0}", e.ToString());
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Adds a toncept to the toncept dictionary if it does not exist in it already.
        /// </summary>
        /// <param name="entityIdx"></param>
        /// <param name="tis"></param>
        /// <param name="toncepts"></param>
        public static void addToncept(int entityIdx, SymbolicTimeInterval tis, ref Dictionary <int, Symbol> toncepts)
        {
            Symbol tc;

            if (!toncepts.ContainsKey(tis.symbol))
            {
                tc = new Symbol(tis.symbol, toncepts.Count);
                toncepts.Add(tis.symbol, tc);
            }
            else
            {
                tc = toncepts[tis.symbol];
            }
            tc.AddIntervalToEntity(entityIdx, tis);
        }
Exemplo n.º 9
0
        /// <summary>
        /// An utility function to test if two symbolic time intervals are defined under a specific relation rule
        /// </summary>
        /// <param name="A">First symbolic time interval</param>
        /// <param name="B">Second symbolic time interval</param>
        /// <param name="relation"></param>
        /// <param name="epsilon"></param>
        /// <param name="max_gap"></param>
        /// <returns>Returns true only if the relation rule is properly carried out for the two symbolic time intervals</returns>
        public static bool checkRelationAmongTwoTIs(SymbolicTimeInterval A, SymbolicTimeInterval B, int relation, int epsilon, int max_gap)
        {
            switch (relation)
            {
            case KLC.ALLEN_BEFORE:     // ALBEFORE: //'b':
            {
                int BsMnsAe = B.startTime - A.endTime;
                return(BsMnsAe > epsilon && BsMnsAe < max_gap);
            }

            case KLC.ALLEN_MEET:     // ALMEET: //'m':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBs = A.endTime - B.startTime, AeMnsBe = A.endTime - B.endTime;
                return(BsMnsAs > epsilon && EpsiloneExtendedisEqual(AeMnsBs, epsilon) && AeMnsBe < epsilon);
            }

            case KLC.ALLEN_OVERLAP:     // ALOVERLAP: //'o':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBs = A.endTime - B.startTime, AeMnsBe = A.endTime - B.endTime;
                return(BsMnsAs > epsilon && AeMnsBs > epsilon && AeMnsBe < epsilon);
            }

            case KLC.ALLEN_FINISHBY:     // ALFINISHBY: //'F(fi)':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBe = A.endTime - B.endTime;
                return(BsMnsAs > epsilon && EpsiloneExtendedisEqual(AeMnsBe, epsilon));
            }

            case KLC.ALLEN_CONTAIN:     // ALCONTAIN: //'c':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBe = A.endTime - B.endTime;
                return(BsMnsAs > epsilon && AeMnsBe > epsilon);
            }

            case KLC.ALLEN_EQUAL:     // ALEQUAL: //'e':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBe = A.endTime - B.endTime;
                return(EpsiloneExtendedisEqual(BsMnsAs, epsilon) && EpsiloneExtendedisEqual(AeMnsBe, epsilon));
            }

            case KLC.ALLEN_STARTS:     // ALSTART: //'s':
            {
                int BsMnsAs = B.startTime - A.startTime, AeMnsBe = A.endTime - B.endTime;
                return(EpsiloneExtendedisEqual(BsMnsAs, epsilon) && AeMnsBe < epsilon);
            }
            }
            return(false);
        }
Exemplo n.º 10
0
        private void addToncept(int entityIdx, SymbolicTimeInterval tis, ref int index)
        {
            Symbol tc;

            if (!toncepts.ContainsKey(tis.symbol))
            {
                tc = new Symbol(tis.symbol, toncepts.Count());// index);
                index++;
                toncepts.Add(tis.symbol, tc);
            }
            else
            {
                tc = toncepts[tis.symbol];
            }
            tc.AddIntervalToEntity(entityIdx, tis); // tc.addEntity(entityIdx);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Creates new Symbol only if didnt exist before. if the symbol exsits , adds supporting instance
        /// </summary>
        /// <param name="entityIdx"></param>
        /// <param name="tis"></param>
        /// <param name="index"></param>
        private void AddSymbol(int entityIdx, SymbolicTimeInterval tis, ref int index)
        {
            Symbol tc;

            if (!Symbols.ContainsKey(tis.symbol))
            {
                tc = new Symbol(tis.symbol, Symbols.Count());
                index++;
                Symbols.Add(tis.symbol, tc);
            }
            else
            {
                tc = Symbols[tis.symbol];
            }
            tc.AddIntervalToEntity(entityIdx, tis);
        }
Exemplo n.º 12
0
        public static void addToncept(int entityIdx, SymbolicTimeInterval tis, ref Dictionary <int, Symbol> toncepts)//, bool updateTonceptEntitiesSupport)
        {
            Symbol tc;

            if (!toncepts.ContainsKey(tis.symbol))
            {
                tc = new Symbol(tis.symbol, toncepts.Count);
                toncepts.Add(tis.symbol, tc);
            }
            else
            {
                tc = toncepts[tis.symbol];
            }
            //if (updateTonceptEntitiesSupport)
            //    tc.entitiesSupport[entityIdx] = true;
            tc.AddIntervalToEntity(entityIdx, tis);  // tc.addEntity(entityIdx);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Adds an interval for a certain entity, modifying its horizontal and vertical support in the process
        /// </summary>
        /// <param name="entityIdx"></param>
        /// <param name="instance"></param>
        public void AddIntervalToEntity(int entityIdx, SymbolicTimeInterval instance)
        {
            if (!supportingInstancesDictionary.ContainsKey(entityIdx))
            {
                List <SymbolicTimeInterval> strList = new List <SymbolicTimeInterval>();
                strList.Add(instance);
                supportingInstancesDictionary.Add(entityIdx, strList);
            }

            else
            {
                if (!supportingInstancesDictionary[entityIdx].Contains(instance))
                {
                    supportingInstancesDictionary[entityIdx].Add(instance);
                }
            }
            totalHorizontalSupport++;
        }
Exemplo n.º 14
0
        private void indexTimeInetervalSymbolsPair(SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal, int relation, int entityIdx)
        {
            int tKeyIdx = toncepts[tisKey.symbol].SymbolINDEX;
            int tValIdx = toncepts[tisVal.symbol].SymbolINDEX;

            /*if (entitiesKarmaVec[entityIdx].instancesDic.ContainsKey(trkey))
             * {
             *  Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>> tiListDic = entitiesKarmaVec[entityIdx].getInstancesDicValuebyKey(tKeyIdx, relation, tValIdx); // .instancesDic[trkey];
             *  if (tiListDic.ContainsKey(tisKey))
             *      tiListDic[tisKey].Add(tisVal);
             *  else
             *  {
             *      List<SymbolicTimeInterval> tisList = new List<SymbolicTimeInterval>();
             *      tisList.Add(tisVal);
             *      tiListDic.Add(tisKey, tisList);
             *  }
             *
             * }
             * else
             * {
             *  Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>> tiListDic = new Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>>();
             *  List<SymbolicTimeInterval> tisList = new List<SymbolicTimeInterval>();
             *  tisList.Add(tisVal);
             *  tiListDic.Add(tisKey, tisList);
             *  entitiesKarmaVec[entityIdx].addtiListDicToTTDics(tKeyIdx, relation, tValIdx, tiListDic); // .instancesDic.Add(trkey, tiListDic);
             *
             *  //toncepts[tisKey.symbol].entIdxKeyList.Add(entityIdx + ";" + trkey); //(entitiesKarmaVec[entityIdx].instancesDic.Count - 1));
             *  //toncepts[tisVal.symbol].entIdxKeyList.Add(entityIdx + ";" + trkey); //"-" + (entitiesKarmaVec[entityIdx].instancesDic.Count - 1));
             *
             *  increaseGlblMxRelsVerSupport(tKeyIdx, tValIdx, relation); //glblMxRelsVerSupport[tKeyIdx][tValIdx][relation]++;
             * }*/

            entitiesKarmaVec[entityIdx].indexTimeInetervalSymbolsPair(tKeyIdx, relation, tValIdx, tisKey, tisVal); //increaseGlblMxRelsHrzSupport(tKeyIdx,tValIdx,relation); //glbllsHrzSupport[tKeyIdx][tValIdx][relation]++;
            increaseGlblTindexVerticalSupport(tKeyIdx, tValIdx, relation, entityIdx);

            //check this

            /*string trkey = tKeyIdx + "-" + relation + "-" + tValIdx;
             * if (!toncepts[tisKey.symbol].entIdxKeyList.Contains(entityIdx + ";" + trkey))
             *  toncepts[tisKey.symbol].entIdxKeyList.Add(entityIdx + ";" + trkey); //(entitiesKarmaVec[entityIdx].instancesDic.Count - 1));
             * if (!toncepts[tisVal.symbol].entIdxKeyList.Contains(entityIdx + ";" + trkey))
             *  toncepts[tisVal.symbol].entIdxKeyList.Add(entityIdx + ";" + trkey); //"-" + (entitiesKarmaVec[entityIdx].instancesDic.Count - 1));
             */
        }
Exemplo n.º 15
0
 //Adds a mapping between the two symbolic time intervals for the given entity
 public void indexByEidxSTIs(int eIdx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal)
 {
     if (!entsStiListStiDics.ContainsKey(eIdx))
     {
         List <SymbolicTimeInterval> stiList = new List <SymbolicTimeInterval>();
         stiList.Add(tisVal);
         Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > stiListSti = new Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >();
         stiListSti.Add(tisKey, stiList);
         entsStiListStiDics.Add(eIdx, stiListSti);
     }
     else if (!entsStiListStiDics[eIdx].ContainsKey(tisKey))
     {
         List <SymbolicTimeInterval> stiList = new List <SymbolicTimeInterval>();
         stiList.Add(tisVal);
         Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > stiListSti = new Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >();
         entsStiListStiDics[eIdx].Add(tisKey, stiList);
     }
     else
     {
         entsStiListStiDics[eIdx][tisKey].Add(tisVal);
     }
     horizontalSupport++;
 }
Exemplo n.º 16
0
        /// <summary>
        /// An utility function to find the relation between two symbolic time intervals
        /// </summary>
        /// <param name="A">First symbolic time interval</param>
        /// <param name="B">Second symbolic time interval</param>
        /// <param name="epsilon"></param>
        /// <param name="max_gap"></param>
        /// <param name="relations_style">Type of relations used (Allens, etc.)</param>
        /// <returns>The relation constant as defined in KLC between the two time intervals or -1 if none fit.</returns>
        public static int WhichRelation(SymbolicTimeInterval A, SymbolicTimeInterval B, int epsilon, int max_gap, int relations_style)
        {
            int relation = -1;
            int AeMnsBs = A.endTime - B.startTime, BsMnsAs = B.startTime - A.startTime;
            int AeMnsBe = A.endTime - B.endTime, BsMnsAe = B.startTime - A.endTime;

            if (BsMnsAe > epsilon && BsMnsAe < max_gap)
            {
                relation = KLC.ALLEN_BEFORE;   // ALBEFORE;
            }
            else if (BsMnsAs > epsilon && EpsiloneExtendedisEqual(AeMnsBs, epsilon) && AeMnsBe < epsilon)
            {
                relation = KLC.ALLEN_MEET;     // ALMEET;
            }
            else if (BsMnsAs > epsilon && AeMnsBs > epsilon && AeMnsBe < epsilon)
            {
                relation = KLC.ALLEN_OVERLAP;  // ALOVERLAP;
            }
            else if (EpsiloneExtendedisEqual(BsMnsAs, epsilon) && AeMnsBe < epsilon)
            {
                relation = KLC.ALLEN_STARTS;   // ALSTARTS;
            }
            else if (BsMnsAs > epsilon && AeMnsBe > epsilon)
            {
                relation = KLC.ALLEN_CONTAIN;  // ALCONTAIN;
            }
            else if (EpsiloneExtendedisEqual(BsMnsAs, epsilon) && EpsiloneExtendedisEqual(AeMnsBe, epsilon))
            {
                relation = KLC.ALLEN_EQUAL;    // ALEQUAL;
            }
            else if (BsMnsAs > epsilon && EpsiloneExtendedisEqual(AeMnsBe, epsilon))
            {
                relation = KLC.ALLEN_FINISHBY; // ALFINISHBY;
            }
            return(relation);
        }
Exemplo n.º 17
0
 public List <SymbolicTimeInterval> getSymSymEidxTisList(int eIdx, int frstTndx, int relIdx, int scndTndx, SymbolicTimeInterval tis)
 {
     if (relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx] != null && relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx].sym2Dic_entsSTIsDics.ContainsKey(scndTndx))
     {
         return(relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx].sym2Dic_entsSTIsDics[scndTndx].getTisListbyEIdxTis(eIdx, tis));
     }
     return(null);
 }
Exemplo n.º 18
0
 public List <SymbolicTimeInterval> entityHasInstances(int entityIdx, int frsTncptIdx, int Rel, int ScndTncptIdx, SymbolicTimeInterval lstTIS)
 {
     return(entitiesKarmaVec[entityIdx].hasInstances(frsTncptIdx, Rel, ScndTncptIdx, lstTIS));
 }
Exemplo n.º 19
0
 public List <SymbolicTimeInterval> hasInstances(int frsTncptIdx, int Rel, int ScndTncptIdx, SymbolicTimeInterval lstTIS)
 { //string trK = frsTncptIdx.ToString() + Rel + ScndTncptIdx; return instancesDic.ContainsKey(trK); }
     //string key = frsTncptIdx.ToString() + Rel + ScndTncptIdx;
     //if (instancesDic.ContainsKey(key) && instancesDic[key].ContainsKey(lstTIS))
     if (pairsTindex.ttSTIsDic[Rel].ContainsKey(frsTncptIdx) && pairsTindex.ttSTIsDic[Rel][frsTncptIdx].ContainsKey(ScndTncptIdx) && pairsTindex.ttSTIsDic[Rel][frsTncptIdx][ScndTncptIdx].ContainsKey(lstTIS))
     {
         return(pairsTindex.ttSTIsDic[Rel][frsTncptIdx][ScndTncptIdx][lstTIS]); // return instancesDic[key][lstTIS];
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 20
0
        public static string read_tids_file(int frstEntIdx, int lstEntIdx, string filePath, ref Dictionary <int, List <SymbolicTimeInterval> > entityTISs, ref Dictionary <int, Symbol> toncepts)
        {
            string   time     = "";
            DateTime starTime = DateTime.Now;

            try
            {
                //if (!File.Exists(filePath))
                //    return null;
                Symbol tc;
                entityTISs = new Dictionary <int, List <SymbolicTimeInterval> >();
                TextReader tr       = new StreamReader(filePath);
                string     readLine = tr.ReadLine();
                //read the variables dictionary?
                readLine = tr.ReadLine();
                if (readLine == "startToncepts")
                {
                    while (tr.Peek() >= 0) //read the toncepts
                    {
                        readLine = tr.ReadLine();
                        if (readLine.StartsWith("numberOfEntities"))
                        {
                            break;
                        }
                        int binSize = int.Parse(readLine.Split(',')[3]);   // add the original variable ID
                        for (int i = 0; i < binSize; i++)
                        {
                            readLine = tr.ReadLine();
                            int tonceptID = int.Parse(readLine.Split(',')[2]);
                            tc = new Symbol(tonceptID, toncepts.Count);
                            toncepts.Add(tonceptID, tc);
                        }
                    }
                }
                time = time + DateTime.Now.Subtract(starTime).TotalMilliseconds.ToString() + " ";
                int entitiesCounter = 0;
                while (tr.Peek() >= 0)  // && entitiesCounter < lstEntIdx) //read the entities and their symbolic time intervals
                {
                    readLine = tr.ReadLine();
                    if (entitiesCounter >= frstEntIdx && entitiesCounter < lstEntIdx) //entitiesCounter >= frstEntIdx)
                    {
                        string[] mainDelimited = readLine.Split(';');
                        string   entityID      = mainDelimited[0].Split(',')[0];
                        readLine      = tr.ReadLine();
                        mainDelimited = readLine.Split(';');
                        List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
                        for (int i = 0 /*1*/; i < mainDelimited.Length - 1; i++)
                        {
                            string[]             tisDelimited = mainDelimited[i].Split(',');
                            int                  symbol       = int.Parse(tisDelimited[2]);
                            SymbolicTimeInterval tis          = new SymbolicTimeInterval(int.Parse(tisDelimited[0]), int.Parse(tisDelimited[1]), symbol); // int.Parse(tisDelimited[2]));
                            addToncept(entityTISs.Count, tis, ref toncepts);
                            tisList.Add(tis);
                        }
                        tisList.Sort();;
                        entityTISs.Add(int.Parse(entityID), tisList);
                    }
                    else
                    {
                        readLine = tr.ReadLine();
                    }
                    entitiesCounter++;
                }
                tr.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.ToString());
            }
            time = time + DateTime.Now.Subtract(starTime).TotalMilliseconds.ToString() + " ";
            return(time);
        }
Exemplo n.º 21
0
 public void indexTimeInetervalSymbolsPair(int frstTncptIdx, int rel, int scndTncptidx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal)
 {
     if (pairsTindex.ttSTIsDic[rel] == null) // !pairsTindex.ttSTIsDic[rel].ContainsKey(frstTncptIdx))
     {
         pairsTindex.ttSTIsDic[rel] = new Dictionary <int, Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > > >();
         Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > > scndTncptIdxDic = new Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > >();
         Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListDic = new Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >();
         List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
         tisList.Add(tisVal);
         tiListDic.Add(tisKey, tisList);
         scndTncptIdxDic.Add(scndTncptidx, tiListDic);
         pairsTindex.ttSTIsDic[rel].Add(frstTncptIdx, scndTncptIdxDic);
     }
     else if (!pairsTindex.ttSTIsDic[rel].ContainsKey(frstTncptIdx))
     {
         Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > > scndTncptIdxDic = new Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > >();
         Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListDic = new Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >();
         List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
         tisList.Add(tisVal);
         tiListDic.Add(tisKey, tisList);
         scndTncptIdxDic.Add(scndTncptidx, tiListDic);
         pairsTindex.ttSTIsDic[rel].Add(frstTncptIdx, scndTncptIdxDic);
     }
     else if (!pairsTindex.ttSTIsDic[rel][frstTncptIdx].ContainsKey(scndTncptidx))
     {
         Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListDic = new Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >();
         List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
         tisList.Add(tisVal);
         tiListDic.Add(tisKey, tisList);
         pairsTindex.ttSTIsDic[rel][frstTncptIdx].Add(scndTncptidx, tiListDic);
     }
     else if (!pairsTindex.ttSTIsDic[rel][frstTncptIdx][scndTncptidx].ContainsKey(tisKey))
     {
         List <SymbolicTimeInterval> tisList = new List <SymbolicTimeInterval>();
         tisList.Add(tisVal);
         pairsTindex.ttSTIsDic[rel][frstTncptIdx][scndTncptidx].Add(tisKey, tisList);
     }
     else
     {
         pairsTindex.ttSTIsDic[rel][frstTncptIdx][scndTncptidx][tisKey].Add(tisVal);
     }
 }
Exemplo n.º 22
0
 public List <SymbolicTimeInterval> get2SizedEntSTIListOfSTIs(int frstTndx, int scndTndx, int rel, int eIdx, SymbolicTimeInterval tis)
 {
     return(dharmaIdx.GetStisInRelationWithKeyStiForEntityByRelationAndSymbols(frstTndx, scndTndx, rel, eIdx, tis));
 }
Exemplo n.º 23
0
        public void indexTTsRelEidxSTIs(int frstTndx, int scndTndx, int relIdx, int eIdx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal, int symSize)
        {
            //Kindex[frstTncptIdx, scndTncptIdx].indexByRelEidxSTIs(rel, eIdx, tisKey, tisVal);
            switch (dharmaIndexType)
            {
            case KLC.dharma_relVecSymVecSymDic:
                relVecSymVecSymDicEntsSTIsDics.indexTTsRelEidxSTIs(frstTndx, relIdx, scndTndx, eIdx, tisKey, tisVal, symSize);
                break;

            case KLC.dharma_relVecSymSymDics:
                relVecSymsDicEntsSTIsDics.indexTTsRelEidxSTIs(frstTndx, relIdx, scndTndx, eIdx, tisKey, tisVal);
                break;

            case KLC.dharma_relSymSymDics:
                relSymSymDicsEntsSTIsDics.indexTTsRelEidxSTIs(frstTndx, relIdx, scndTndx, eIdx, tisKey, tisVal);
                break;

            default:
                break;
            }
        }
Exemplo n.º 24
0
        public List <SymbolicTimeInterval> GetStisInRelationWithKeyStiForEntityByRelationAndSymbols(int frstTndx, int scndTndx, int relIdx, int eIdx, SymbolicTimeInterval tis)
        {
            //return Kindex[frstTndx, scndTndx].relsVecOfEntitiesDics[rel].getTisListbyEIdxTis(eIdx, tis);
            switch (dharmaIndexType)
            {
            case KLC.dharma_relVecSymVecSymDic:
                return(relVecSymVecSymDicEntsSTIsDics.getSymSymEidxTisList(eIdx, frstTndx, relIdx, scndTndx, tis));

            case KLC.dharma_relVecSymSymDics:
                return(relVecSymsDicEntsSTIsDics.getSymSymEidxTisList(eIdx, frstTndx, relIdx, scndTndx, tis));

            case KLC.dharma_relSymSymDics:
                return(relSymSymDicsEntsSTIsDics.getSymSymEidxTisList(eIdx, frstTndx, relIdx, scndTndx, tis));

            default:
                return(null);
            }
        }
Exemplo n.º 25
0
        public void indexTTsRelEidxSTIs(int frstTndx, int relIdx, int scndTndx, int eIdx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal)
        {
            if (!SymRelSym_EntsSTIsListDic.ContainsKey(frstTndx))
            {
                SymRelSym_EntsSTIsListDic.Add(frstTndx, new Dictionary <int, Dictionary <int, EntsStiListStiDics> >());
            }
            if (!SymRelSym_EntsSTIsListDic[frstTndx].ContainsKey(relIdx))
            {
                SymRelSym_EntsSTIsListDic[frstTndx].Add(relIdx, new Dictionary <int, EntsStiListStiDics>());
            }
            if (!SymRelSym_EntsSTIsListDic[frstTndx][relIdx].ContainsKey(scndTndx))
            {
                SymRelSym_EntsSTIsListDic[frstTndx][relIdx].Add(scndTndx, new EntsStiListStiDics());
            }

            SymRelSym_EntsSTIsListDic[frstTndx][relIdx][scndTndx].indexByEidxSTIs(eIdx, tisKey, tisVal);
        }
Exemplo n.º 26
0
 public List <SymbolicTimeInterval> getSymSymEidxTisList(int eIdx, int frstTndx, int relIdx, int scndTndx, SymbolicTimeInterval tis)
 {
     if (SymRelSym_EntsSTIsListDic.ContainsKey(frstTndx) && SymRelSym_EntsSTIsListDic[frstTndx].ContainsKey(relIdx) && SymRelSym_EntsSTIsListDic[frstTndx][relIdx].ContainsKey(scndTndx))
     {
         return(SymRelSym_EntsSTIsListDic[frstTndx][relIdx][scndTndx].getTisListbyEIdxTis(eIdx, tis));
     }
     return(null);
 }
Exemplo n.º 27
0
        public void indexTTsRelEidxSTIs(int frstTndx, int relIdx, int scndTndx, int eIdx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal, int symSize)
        {
            if (relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx] == null) //.sym1Vec_sym2Dic_entsSTIsDics[frstTndx] == null)
            {
                relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx] = new Sym1Vec_Sym2Dic_entsSTIsDics(symSize);
            }
            if (relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx] == null)
            {
                relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx] = new Sym2Dic_entsSTIsDics();
            }
            if (!relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx].sym2Dic_entsSTIsDics.ContainsKey(scndTndx))
            {
                relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx].sym2Dic_entsSTIsDics.Add(scndTndx, new EntsStiListStiDics());
            }

            relVec_sym1Vec_sym2Dic_entsSTIsDics[relIdx].sym1Vec_sym2Dic_entsSTIsDics[frstTndx].sym2Dic_entsSTIsDics[scndTndx].indexByEidxSTIs(eIdx, tisKey, tisVal);
        }
Exemplo n.º 28
0
 public List <SymbolicTimeInterval> getSymSymEidxTisList(int eIdx, int frstTndx, int relIdx, int scndTndx, SymbolicTimeInterval tis)
 {
     if (relVecSymSym_entSTIsDics[relIdx].ContainsKey(frstTndx) && relVecSymSym_entSTIsDics[relIdx][frstTndx].ContainsKey(scndTndx))
     {
         return(relVecSymSym_entSTIsDics[relIdx][frstTndx][scndTndx].getTisListbyEIdxTis(eIdx, tis));
     }
     return(null);
 }
Exemplo n.º 29
0
        public void indexTTsRelEidxSTIs(int frstTndx, int relIdx, int scndTndx, int eIdx, SymbolicTimeInterval tisKey, SymbolicTimeInterval tisVal)
        {
            if (relVecSymSym_entSTIsDics[relIdx] == null)
            {
                relVecSymSym_entSTIsDics[relIdx] = new Dictionary <int, Dictionary <int, EntsStiListStiDics> >();
            }
            if (!relVecSymSym_entSTIsDics[relIdx].ContainsKey(frstTndx))
            {
                relVecSymSym_entSTIsDics[relIdx].Add(frstTndx, new Dictionary <int, EntsStiListStiDics>());
            }
            if (!relVecSymSym_entSTIsDics[relIdx][frstTndx].ContainsKey(scndTndx))
            {
                relVecSymSym_entSTIsDics[relIdx][frstTndx].Add(scndTndx, new EntsStiListStiDics());
            }

            relVecSymSym_entSTIsDics[relIdx][frstTndx][scndTndx].indexByEidxSTIs(eIdx, tisKey, tisVal);
        }