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()); }
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); } }
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); }
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); }