Esempio n. 1
0
        public static DlName ToDL(EnName eng, CogniPy.CNL.EN.endict.WordKind kind)
        {
            var parts = eng.Split();

            DlName.Parts dlp = new DlName.Parts();
            dlp.term   = parts.term;
            dlp.local  = parts.kind == EnName.Parts.Kind.BigName;
            dlp.quoted = parts.quoted;

            if (parts.quoted || parts.kind != EnName.Parts.Kind.Name || kind == endict.WordKind.NormalForm)
            {
                dlp.name = parts.name;
            }
            else
            {
                var name = parts.name;
                var arr  = name.Split(new char[] { '-' });
                if (kind == endict.WordKind.SimplePast || kind == endict.WordKind.PastParticiple || kind == endict.WordKind.PluralFormVerb)
                {
                    arr[0] = CNLFactory.lex.toDL_Simple(arr[0], kind);
                }
                else if (kind == endict.WordKind.PluralFormNoun)
                {
                    arr[arr.Length - 1] = CNLFactory.lex.toDL_Simple(arr[arr.Length - 1], kind);
                }
                dlp.name = string.Join("-", arr);
            }
            return(dlp.Combine());
        }
Esempio n. 2
0
        public IEnumerable <string> Morphology(IEnumerable <string> col, string str, string form, bool bigName)
        {
            if (form == "NormalForm")
            {
                return(from r in col where FromDL(r, endict.WordKind.NormalForm, false).StartsWith(str) select FromDL(r, endict.WordKind.NormalForm, bigName));
            }
            else
            {
                CogniPy.CNL.EN.endict.WordKind k = CogniPy.CNL.EN.endict.WordKind.PastParticiple;
                if (form == "SimplePast")
                {
                    k = CogniPy.CNL.EN.endict.WordKind.SimplePast;
                }
                else if (form == "PluralFormNoun")
                {
                    k = CogniPy.CNL.EN.endict.WordKind.PluralFormNoun;
                }
                else if (form == "PluralFormVerb")
                {
                    k = CogniPy.CNL.EN.endict.WordKind.PluralFormVerb;
                }
                var q = from r in col where FromDL(r, k, bigName).StartsWith(str) select FromDL(r, k, bigName);

                return(q);
            }
        }
Esempio n. 3
0
        public string EN(string dl, bool bigName, CogniPy.CNL.EN.endict.WordKind wrdKnd = CogniPy.CNL.EN.endict.WordKind.NormalForm)
        {
            if (dl == "⊤")
            {
                return("thing");
            }

            var allParts = CogniPy.CNL.EN.ENNameingConvention.FromDL(new CogniPy.CNL.DL.DlName()
            {
                id = dl
            }, wrdKnd, bigName).Split();

            if (!System.String.IsNullOrWhiteSpace(allParts.term) && allParts.term.StartsWith("<") && allParts.term.EndsWith(">"))
            {
                var nss = allParts.term.Substring(1, allParts.term.Length - 2);
                if (nss == _defaultNamespace) // remove if the namespace is the default one.
                {
                    allParts.term = null;
                }
                else
                {
                    var tterm = _ns2pfx(nss);
                    if (!System.String.IsNullOrWhiteSpace(tterm))
                    {
                        allParts.term = tterm;
                    }
                }
            }

            return(allParts.Combine().id);
        }
Esempio n. 4
0
        public string DL(string en, CogniPy.CNL.EN.endict.WordKind wkrd = CogniPy.CNL.EN.endict.WordKind.NormalForm)
        {
            if (en.StartsWith("a ") || en.StartsWith("an "))
            {
                en = en.Split(' ').Last();
            }
            var allParts = new CogniPy.CNL.EN.EnName()
            {
                id = en
            }.Split();

            if (!System.String.IsNullOrWhiteSpace(allParts.term) && !allParts.term.Contains("<"))
            {
                var tterm = getPfx2NsSource(allParts.term);
                if (!System.String.IsNullOrWhiteSpace(tterm))
                {
                    allParts.term = "<" + tterm + ">";
                }
                else
                {
                    throw new Exception("No namespace found for prefix " + allParts.term + ". You need to define it before saving into Ontorion.");
                }
            }
            else if (!System.String.IsNullOrWhiteSpace(allParts.term) && allParts.term.StartsWith("<") && allParts.term.EndsWith(">"))
            {
                var tterm = CogniPy.CNL.CNLTools.GetCanonicalNs(allParts.term.Substring(1, allParts.term.Length - 2)); // string without < and >
                allParts.term = "<" + tterm + ">";
            }
            else //add the default namespace
            {
                var defaultNs = _defaultNamespace;
                allParts.term = string.Format("<{0}>", defaultNs);
            }

            return(CogniPy.CNL.EN.ENNameingConvention.ToDL(allParts.Combine(), wkrd).id);
        }