コード例 #1
0
        public static Map ToMap(this AHGHEEParser.KvpsContext kvps)
        {
            try
            {
                var items = new List <KeyValue>();
                foreach (var pair in kvps.pair())
                {
                    KeyValue kvp = default(KeyValue);
                    if (pair.kvp() != null)
                    {
                        var key   = pair.kvp().STRING().GetText().Trim('"');
                        var value = pair.kvp().value().ToData();
                        kvp = Utils.PropData(key, value, 0L);
                    }
                    else if (pair.edge() != null)
                    {
                        var key   = pair.edge().STRING(0).GetText().Trim('"');
                        var value = pair.edge().STRING(1).GetText().Trim('"');
                        var id    = Utils.Id(value);
                        kvp = Utils.PropData(key, Utils.DataId(id), 0L);
                    }
                    else if (pair.fedge() != null)
                    {
                        var key   = pair.edge().STRING(0).GetText().Trim('"');
                        var id    = Utils.Id(key);
                        var value = pair.edge().STRING(1).GetText().Trim('"');
                        kvp = Utils.Prop(0L, Utils.DataId(id),
                                         Utils.DBString(value));
                    }
                    else if (pair.dedge() != null)
                    {
                        var key     = pair.edge().STRING(0).GetText().Trim('"');
                        var value   = pair.edge().STRING(1).GetText().Trim('"');
                        var keyId   = Utils.Id(key);
                        var valueId = Utils.Id(value);
                        kvp = Utils.Prop(0L, Utils.DataId(keyId),
                                         Utils.DataId(valueId));
                    }
                    else
                    {
                        continue;
                    }
                    items.Add(kvp);
                }

                return(new Map()
                {
                    Items = items
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(kvps.GetText());
                Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
                throw;
            }
        }
コード例 #2
0
        public static (Primitive, Primitive?) ToDataBlock(this NTRIPLESParser.ObjContext ctx, Func <string?, string> BNToId)
        {
            // VALUE with optional stuffs
            var literalString = ctx.literal()?.STRING()?.GetText().Trim('"');

            if (literalString != null)
            {
                var str = Utils.DBString(literalString);

                var literalStringTypeIri = ctx.literal()?.IRI()?.GetText().Trim('<', '>');
                var literalStringLang    = ctx.literal()?.LANGTAG()?.GetText();
                if (literalStringTypeIri != null)
                {
                    return(str, Utils.DataId(Utils.Id(literalStringTypeIri)));
                }

                if (literalStringLang != null)
                {
                    return(str, Utils.DBString($"lang:{literalStringLang}"));
                }
                return(str, null);
            }

            // Value Pointer
            var objPointer = ctx.IRI()?.GetText()?.Trim('<', '>');

            if (objPointer != null)
            {
                return(Utils.DataId(Utils.Id(objPointer)), null);
            }

            // Value BlankNode, got this far, we have to have a blankNode, or something is broken.
            if (ctx.BLANKNODE() == null)
            {
                // this likely indicates are corrupt file, or upstream corruption in the parsing of the file.
            }
            var objVal = ctx.BLANKNODE()?.GetText();

            var objBn = BNToId(objVal);

            return(Utils.DataId(Utils.Id(objBn)), null);
        }
コード例 #3
0
 public static Primitive ToDataBlockNodeID(this string str)
 {
     return(Utils.DataId(Utils.Id(str)));
 }