//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; } //} } } } } }
/// <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; } //} } } } }
/// <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); } }
public List <SymbolicTimeInterval> getTisListbyEIdxTis(int eIdx, SymbolicTimeInterval tis) { if (entsStiListStiDics.ContainsKey(eIdx) && entsStiListStiDics[eIdx].ContainsKey(tis)) { return(entsStiListStiDics[eIdx][tis]); } return(null); }
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()); }
//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); } }
/// <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()); } }
/// <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); }
/// <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); }
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); }
/// <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); }
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); }
/// <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++; }
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)); */ }
//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++; }
/// <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); }
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); }
public List <SymbolicTimeInterval> entityHasInstances(int entityIdx, int frsTncptIdx, int Rel, int ScndTncptIdx, SymbolicTimeInterval lstTIS) { return(entitiesKarmaVec[entityIdx].hasInstances(frsTncptIdx, Rel, ScndTncptIdx, lstTIS)); }
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); } }
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); }
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); } }
public List <SymbolicTimeInterval> get2SizedEntSTIListOfSTIs(int frstTndx, int scndTndx, int rel, int eIdx, SymbolicTimeInterval tis) { return(dharmaIdx.GetStisInRelationWithKeyStiForEntityByRelationAndSymbols(frstTndx, scndTndx, rel, eIdx, tis)); }
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; } }
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); } }
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); }
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); }
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); }
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); }
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); }