Esempio n. 1
0
 /// <summary>
 /// Binds the given Entity as a direct object of the VerbPhrase instance.
 /// </summary>
 /// <param name="directObject">The Entity to attach to the VerbPhrase as a direct object.</param>
 public virtual void BindDirectObject(IEntity directObject)
 {
     if (directObject != null)
     {
         directObjects = directObjects.Add(directObject);
         directObject.BindAsDirectObjectOf(this);
         foreach (var verb in Words.OfVerb())
         {
             verb.BindDirectObject(directObject);
         }
         if (IsPossessive)
         {
             foreach (var subject in Subjects)
             {
                 subject.AddPossession(directObject);
             }
         }
         else if (IsClassifier)
         {
             foreach (var subject in Subjects)
             {
                 AliasLookup.DefineAlias(subject, directObject);
             }
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Returns a string representation of the PronounPhrase
        /// </summary>
        /// <returns>A string representation of the PronounPhrase</returns>
        public override string ToString()
        {
            var result = base.ToString() + (RefersTo.EmptyIfNull().Any() ? "\nreferring to -> " + RefersTo.Text : string.Empty);

            result += AliasLookup.GetDefinedAliases(RefersTo ?? this as IEntity).Any() ? "\nClassified as: " + AliasLookup.GetDefinedAliases(RefersTo as IEntity ?? this).Format() : string.Empty;
            return(result);
        }
Esempio n. 3
0
        protected void AddAliases(string name, int count)
        {
            List <long> aliasList;

            if (!AliasLookup.TryGetValue(name, out aliasList))
            {
                aliasList         = new List <long>(count);
                AliasLookup[name] = aliasList;
            }

            var total = aliasList.Count;

            lock (Lock)
                for (int i = total; i <= total + count; i++)
                {
                    try
                    {
                        var alias = HashProvider.Hash("{0}_{1}".AsFormat(name, i));
                        aliasList.Add(alias);
                        Map.Add(alias, name);
                    }
                    finally
                    {
                    }
                }
        }
Esempio n. 4
0
 private ScopedAliasMap(params IEnumerable <ILexical>[] scope)
 {
     domain = scope.SelectMany(s => s);
     foreach (var e in domain.OfEntity())
     {
         assumedAliases[e.Text] = new HashSet <string>(AliasLookup.GetLikelyAliases(e));
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Rebalances a node's virtual key space to some total number
        /// </summary>
        public virtual void RebalanceNodeTo(string name, int total)
        {
            List <long> aliasList;

            if (!AliasLookup.TryGetValue(name, out aliasList))
            {
                aliasList         = new List <long>(total);
                AliasLookup[name] = aliasList;
            }

            if (total != aliasList.Count)
            {
                RebalanceNodeBy(name, total - aliasList.Count);
            }
        }
Esempio n. 6
0
        protected void RemoveAliases(string name)
        {
            List <long> aliasList;

            lock (Lock)
                if (AliasLookup.TryRemove(name, out aliasList))
                {
                    foreach (var alias in aliasList)
                    {
                        try
                        {
                            Map.Delete(alias);
                        }
                        finally
                        {
                        }
                    }
                }
        }
Esempio n. 7
0
 /// <summary>
 /// Binds the given Entity as a direct object of the Verb.
 /// </summary>
 /// <param name="directObject">The Entity to attach to the Verb as a direct object.</param>
 public virtual void BindDirectObject(IEntity directObject)
 {
     directObjects.Add(directObject);
     directObject.BindAsDirectObjectOf(this);
     if (IsPossessive)
     {
         foreach (var subject in subjects)
         {
             subject.AddPossession(directObject);
         }
     }
     else if (IsClassifier)
     {
         foreach (var subject in subjects)
         {
             AliasLookup.DefineAlias(subject, directObject);
         }
     }
 }
Esempio n. 8
0
        protected void RemoveKeySpaceFrom(string name, int count)
        {
            List <long> aliasList;

            lock (Lock)
                if (AliasLookup.TryGetValue(name, out aliasList))
                {
                    var removals = aliasList.Take(count).ToList();
                    removals
                    .ForEach(x =>
                    {
                        try
                        {
                            aliasList.Remove(x);
                            Map.Delete(x);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    });
                }
        }