private void Load(string filepath) { otriples.Clear(); otriples.Fill(new object[0]); dtriples.Clear(); dtriples.Fill(new object[0]); int i = 0; //Entity e = new Entity(); foreach (var triple in TurtleInt.LoadGraph(filepath)) { if (i % 100000 == 0) { Console.Write("{0} ", i / 100000); } i++; if (triple is OTripleInt) { var tr = (OTripleInt)triple; otriples.Root.AppendElement(new object[] { tr.subject, tr.predicate, tr.obj }); } else { var tr = (DTripleInt)triple; Literal lit = tr.data; object[] da; if (lit.vid == LiteralVidEnumeration.integer) { da = new object[] { 1, lit.value } } ; else if (lit.vid == LiteralVidEnumeration.date) { da = new object[] { 3, lit.value } } ; else if (lit.vid == LiteralVidEnumeration.text) { Text t = (Text)lit.value; da = new object[] { 2, new object[] { t.s, t.l } }; } else { da = new object[] { 0, null } }; dtriples.Root.AppendElement(new object[] { tr.subject, tr.predicate, da }); } } otriples.Flush(); dtriples.Flush(); }
public void LoadTurtle(string filepath) { otriples.Clear(); otriples.Fill(new object[0]); dtriples.Clear(); dtriples.Fill(new object[0]); // Только для специальных целей: TurtleInt.sarr = new List <string>(); int i = 0; //Entity e = new Entity(); foreach (var triple in TurtleInt.LoadGraph(filepath)) { if (i % 10000 == 0) { Console.Write("{0} ", i / 10000); } i++; if (triple is OTripleInt) { var tr = (OTripleInt)triple; otriples.Root.AppendElement(new object[] { tr.subject, tr.predicate, tr.obj }); } else { var tr = (DTripleInt)triple; Literal lit = tr.data; object[] da; switch (lit.vid) { case LiteralVidEnumeration.integer: da = new object[] { 1, lit.Value }; break; case LiteralVidEnumeration.date: da = new object[] { 3, lit.Value }; break; case LiteralVidEnumeration.boolean: da = new object[] { 4, lit.Value }; break; case LiteralVidEnumeration.text: { Text t = (Text)lit.Value; da = new object[] { 2, new object[] { t.Value, t.Lang } }; } break; case LiteralVidEnumeration.typedObject: { TypedObject t = (TypedObject)lit.Value; da = new object[] { 5, new object[] { t.Value, t.Type } }; } break; default: da = new object[] { 0, null }; break; } dtriples.Root.AppendElement(new object[] { tr.subject, tr.predicate, da }); } } Console.WriteLine(); otriples.Flush(); dtriples.Flush(); // Только для специальных целей: bool specialpurposes = false; if (specialpurposes) { int ii = 0; foreach (string s in TurtleInt.sarr) { if (ii % 20 == 0) { Console.WriteLine("\"{0}\", ", s); } ii++; } Console.WriteLine("sarr.Count() = {0}", TurtleInt.sarr.Count()); } SPOComparer spo_compare = new SPOComparer(); SPComparer sp_compare = new SPComparer(); // Создание и упорядочивание дополнительных структур otriples_op.Clear(); otriples_op.Fill(new object[0]); foreach (object v in otriples.Root.ElementValues()) { otriples_op.Root.AppendElement(v); } otriples_op.Flush(); dtriples_sp.Clear(); dtriples_sp.Fill(new object[0]); foreach (PaEntry entry in dtriples.Root.Elements()) { int s = (int)entry.Field(0).Get(); int p = (int)entry.Field(1).Get(); dtriples_sp.Root.AppendElement(new object[] { s, p, entry.offset }); } dtriples_sp.Flush(); // Упорядочивание otriples по s-p-o otriples.Root.SortByKey <SubjPredObjInt>(rec => new SubjPredObjInt(rec), spo_compare); // Упорядочивание otriples_op по o-p otriples_op.Root.SortByKey <SubjPredInt>(rec => { object[] r = (object[])rec; return(new SubjPredInt() { pred = (int)r[1], subj = (int)r[2] }); }, sp_compare); // Упорядочивание dtriples_sp по s-p dtriples_sp.Root.SortByKey(rec => { object[] r = (object[])rec; return(new SubjPredInt() { pred = (int)r[1], subj = (int)r[0] }); }, sp_compare); // Индексирование if (spo_o_index == null) { OpenCreateIndexes(); } //spo_o_index.Load(spo_compare); //sp_d_index.Load(sp_compare); //op_o_index.Load(sp_compare); if (filescale) { // Создание шкалы (Надо переделать) CreateScale(); //ShowScale(); oscale.Clear(); oscale.Fill(new object[0]); foreach (int v in scale.Values()) { oscale.Root.AppendElement(v); } oscale.Flush(); CalculateRange(); // Наверное, range считается в CreateScale() } ewt.Load(); ewtHash.Load(); //getable.ConstructGroupedEntities(new DiapLinksScanner[] { // new DiapLinksScanner(otriples, 0), // new DiapLinksScanner(otriples_op, 2), // new DiapLinksScanner(dtriples_sp, 0)}); }