Example #1
0
        public List <Pullenti.Ner.Referent> TryAttachByReferent(Pullenti.Ner.Referent referent, IntOntologyItem item = null, bool mustBeSingle = false)
        {
            if (referent == null)
            {
                return(null);
            }
            if (item == null)
            {
                item = referent.CreateOntologyItem();
            }
            if (item == null)
            {
                return(null);
            }
            List <IntOntologyItem> li = this.TryAttachByItem(item);

            if (li == null)
            {
                return(null);
            }
            List <Pullenti.Ner.Referent> res = null;

            foreach (IntOntologyItem oi in li)
            {
                Pullenti.Ner.Referent r = oi.Referent ?? (oi.Tag as Pullenti.Ner.Referent);
                if (r != null)
                {
                    if (referent.CanBeEquals(r, ReferentsEqualType.WithinOneText))
                    {
                        if (res == null)
                        {
                            res = new List <Pullenti.Ner.Referent>();
                        }
                        if (!res.Contains(r))
                        {
                            res.Add(r);
                        }
                    }
                }
            }
            if (mustBeSingle)
            {
                if (res != null && res.Count > 1)
                {
                    for (int i = 0; i < (res.Count - 1); i++)
                    {
                        for (int j = i + 1; j < res.Count; j++)
                        {
                            if (!res[i].CanBeEquals(res[j], ReferentsEqualType.ForMerging))
                            {
                                return(null);
                            }
                        }
                    }
                }
            }
            return(res);
        }
Example #2
0
        public bool AddReferent(Pullenti.Ner.Referent referent)
        {
            if (referent == null)
            {
                return(false);
            }
            IntOntologyItem oi = null;

            if (referent.IntOntologyItem != null && referent.IntOntologyItem.Owner == this)
            {
                IntOntologyItem oi1 = referent.CreateOntologyItem();
                if (oi1 == null || oi1.Termins.Count == referent.IntOntologyItem.Termins.Count)
                {
                    return(true);
                }
                foreach (Termin t in referent.IntOntologyItem.Termins)
                {
                    m_Termins.Remove(t);
                }
                int i = m_Items.IndexOf(referent.IntOntologyItem);
                if (i >= 0)
                {
                    m_Items.RemoveAt(i);
                }
                oi = oi1;
            }
            else
            {
                oi = referent.CreateOntologyItem();
            }
            if (oi == null)
            {
                return(false);
            }
            oi.Referent = referent;
            referent.IntOntologyItem = oi;
            this.AddItem(oi);
            return(true);
        }