You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by se...@apache.org on 2020/03/14 07:00:32 UTC

[incubator-nlpcraft] branch master updated (a7a1ca3 -> 3be1ac3)

This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git.


    from a7a1ca3  WIP.
     new 17776cd  WIP.
     new b53b17c  WIP.
     new 468a82b  WIP.
     new c73bf59  WIP.
     new 2582fe3  WIP.
     new aa60ed8  WIP.
     new 177669c  WIP.
     new 27573d8  WIP.
     new 1eebd1f  WIP.
     new b7fca7b  WIP.
     new 1970603  WIP.
     new e2836af  Merge branch 'master' into NLPCRAFT-2
     new 3be1ac3  WIP.

The 13 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../common/nlp/core/NCNlpCoreManager.scala         |   4 +-
 .../org/nlpcraft/model/impl/NCTokenLogger.scala    |  27 +-
 .../nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala  |  42 +-
 .../aggregation/NCAggregationEnricher.scala        |  26 +-
 .../mgrs/nlp/enrichers/limit/NCLimitEnricher.scala |  14 +-
 .../nlp/enrichers/post/NCPostEnrichProcessor.scala | 157 +++++---
 .../enrichers/relation/NCRelationEnricher.scala    |   2 +-
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 425 ++++++++++++---------
 8 files changed, 429 insertions(+), 268 deletions(-)


[incubator-nlpcraft] 13/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 3be1ac306173c3b0eb08d1fdd17920cc53983073
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Sat Mar 14 09:58:36 2020 +0300

    WIP.
---
 .../probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala         | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 973fb9c..efe4161 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -111,7 +111,7 @@ object NCSortEnricher extends NCProbeEnricher {
       */
     private def validate() {
         // Not duplicated.
-        require(SORT.size + BY.size + ORDER.size == (SORT ++ BY ++ ORDER.unzip._1).distinct.size)
+        require(SORT.size + BY.size + ORDER.size == (SORT ++ BY ++ ORDER.map(_._1)).distinct.size)
 
         // Single words.
         require(!SORT.exists(_.contains(" ")))
@@ -119,10 +119,10 @@ object NCSortEnricher extends NCProbeEnricher {
 
         // Different words.
         require(SORT.intersect(BY).isEmpty)
-        require(SORT.intersect(ORDER.unzip._1).isEmpty)
-        require(BY.intersect(ORDER.unzip._1).isEmpty)
+        require(SORT.intersect(ORDER.map(_._1)).isEmpty)
+        require(BY.intersect(ORDER.map(_._1)).isEmpty)
 
-        val ordersSeq: Seq[Seq[String]] = ORDER.unzip._1.map(_.split(" ").toSeq)
+        val ordersSeq: Seq[Seq[String]] = ORDER.map(_._1).map(_.split(" ").toSeq)
 
         // ORDER doens't contains words fron BY (It can contains words from SORT)
         require(!BY.exists(p ⇒ ordersSeq.contains(p)))
@@ -240,7 +240,7 @@ object NCSortEnricher extends NCProbeEnricher {
         val hOpt: Option[KeyWordsHolder] =
             get0(SORT, toks) match {
                 case Some(sort) ⇒
-                    val orderOpt = get0(ORDER.unzip._1, toks)
+                    val orderOpt = get0(ORDER.map(_._1), toks)
 
                     def mkHolder(sort: KeyWord): Option[KeyWordsHolder] = Some(KeyWordsHolder(sort, get0(BY, toks), orderOpt))
 


[incubator-nlpcraft] 05/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 2582fe3098e6d5042bea3eb2344d07e832c09b5c
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Thu Mar 12 21:47:58 2020 +0300

    WIP.
---
 .../nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala  |  5 +--
 .../nlp/enrichers/post/NCPostEnrichProcessor.scala | 21 +++++++-----
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 39 ++++++++++++++--------
 3 files changed, 40 insertions(+), 25 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
index d2b1a4a..a5e4678 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
@@ -18,6 +18,7 @@
 package org.nlpcraft.probe.mgrs.nlp
 
 import java.io.Serializable
+import java.util
 
 import com.typesafe.scalalogging.LazyLogging
 import io.opencensus.trace.Span
@@ -25,9 +26,9 @@ import org.nlpcraft.common.nlp._
 import org.nlpcraft.common.{NCService, _}
 import org.nlpcraft.probe.mgrs.NCModelDecorator
 
+import scala.collection.JavaConverters._
 import scala.collection.{Map, Seq}
 import scala.language.implicitConversions
-import scala.collection.JavaConverters._
 
 /**
  * Base class for NLP enricher.
@@ -106,7 +107,7 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
         matched.forall(t ⇒
             t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒
                 n.get(refNoteName) match {
-                    case Some(s) ⇒ s.asInstanceOf[java.util.List[String]].asScala == refNoteVals
+                    case Some(s) ⇒ s.asInstanceOf[util.List[String]].asScala.intersect(refNoteVals).nonEmpty
                     case None ⇒ false
                 }
             )
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
index b41ce7b..998607f 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
@@ -233,8 +233,8 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
                 "nlpcraft:relation",
                 "nlpcraft:limit"
             ).forall(t ⇒ fixIndexesReferences(t, ns, history) &&
-            fixIndexesReferencesList("nlpcraft:limit", "subjIndexes", "subjNotes", ns, history) &&
-            fixIndexesReferencesList("nlpcraft:limit", "byIndexes", "byNotes", ns, history))
+            fixIndexesReferencesList("nlpcraft:sort", "subjIndexes", "subjNotes", ns, history) &&
+            fixIndexesReferencesList("nlpcraft:sort", "byIndexes", "byNotes", ns, history))
 
         if (res)
             // Validation (all indexes calculated well)
@@ -374,16 +374,19 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
             }
         )
 
-        ns.flatMap(_.getNotes(noteType)).forall(rel ⇒ {
-            val idxsList: util.List[util.List[Int]] = rel.data[java.util.List[java.util.List[Int]]](idxsField)
-            val notesTypes = rel.data[util.List[String]](noteField)
+        ns.flatMap(_.getNotes(noteType)).forall(rel ⇒
+            rel.dataOpt[java.util.List[java.util.List[Int]]](idxsField) match {
+                case Some(idxsList) ⇒
+                    val notesTypes = rel.data[util.List[String]](noteField)
 
-            require(idxsList.size() == notesTypes.size())
+                    require(idxsList.size() == notesTypes.size())
 
-            idxsList.asScala.zip(notesTypes.asScala).forall {
-                case (idxs, notesType) ⇒ checkRelation(ns, idxs.asScala, notesType, rel.id)
+                    idxsList.asScala.zip(notesTypes.asScala).forall {
+                        case (idxs, notesType) ⇒ checkRelation(ns, idxs.asScala, notesType, rel.id)
+                    }
+                case None ⇒ true
             }
-        })
+        )
     }
 
     /**
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index ad426b5..6ea5fb0 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -96,6 +96,16 @@ object NCSortEnricher extends NCProbeEnricher {
         require(subjSeq.nonEmpty)
 
         lazy val all: Seq[NCNlpSentenceToken] = main ++ stop
+
+        // Added for debug reasons.
+        override def toString: String = {
+            def s1[T](seq: Seq[NCNlpSentenceToken]): String = s"[${seq.map(_.origText).mkString(", ")}]"
+            def s2[T](seq: Seq[NoteData]): String =
+                s"[${seq.map(p ⇒ s"${p.note}: [${p.indexes.mkString(", ")}]").mkString(", ")}]"
+            def s3[T](seq: Seq[Seq[NoteData]]): String = s"[${seq.map(s2).mkString(", ")}]"
+
+            s"Match [main=${s1(main)}, stop=${s1(stop)}, subjSeq=${s3(subjSeq)}, bySeq=${s3(bySeq)}]"
+        }
     }
 
     /**
@@ -243,15 +253,17 @@ object NCSortEnricher extends NCProbeEnricher {
                                 foldLeft("")((x, y) ⇒ if (x.endsWith(y)) x else s"$x $y").trim
                         )
                     ) {
-                        val subj = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
-                        val by = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
-
-                        others.foreach(t ⇒
-                            if (subj.isEmpty || by.isEmpty && contiguous(others, subj.last.index, t.index))
-                                subj += t
+                        val sepIdxs = h.all.
+                            map(_.index).
+                            filter(i ⇒ others.exists(_.index > i) && others.exists(_.index < i)).
+                            sorted
+
+                        // Devides separated by keywords.
+                        val (subj, by) =
+                            if (sepIdxs.isEmpty)
+                                (others, Seq.empty)
                             else
-                                by += t
-                        )
+                                (others.filter(_.index < sepIdxs.head), others.filter(_.index > sepIdxs.last))
 
                         require(subj.nonEmpty)
 
@@ -311,7 +323,7 @@ object NCSortEnricher extends NCProbeEnricher {
                             }
 
                             def mkNote(params: ArrayBuffer[(String, Any)]): Unit = {
-                                val note = NCNlpSentenceNote(m.main.map(_.index), TOK_ID, params:_*)
+                                val note = NCNlpSentenceNote(m.main.map(_.index), TOK_ID, params: _*)
 
                                 m.main.foreach(_.add(note))
                                 m.stop.foreach(_.addStopReason(note))
@@ -320,17 +332,16 @@ object NCSortEnricher extends NCProbeEnricher {
                             }
 
                             if (m.bySeq.nonEmpty)
-                                for (by ← m.bySeq if !hasReferences(TOK_ID, "byNotes", by.map(_.note), m.main))
+                                for (by ← m.bySeq)
                                     mkNote(addNotes(mkParams(), by, "byNotes", "byIndexes"))
                             else
                                 mkNote(mkParams())
                         }
 
+                        if (changed)
+                            buf += toks.toSet
                     case None ⇒ // No-op.
-
-                if (changed)
-                    buf += toks.toSet
-            }
+                }
 
             changed
         }


[incubator-nlpcraft] 03/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 468a82b0d845d13e4872be2f4b1b97baa24383f0
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Thu Mar 12 14:55:06 2020 +0300

    WIP.
---
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 105 +++++++++++++--------
 1 file changed, 64 insertions(+), 41 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 8678c7d..4351213 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -35,13 +35,12 @@ import scala.collection.{Map, Seq, mutable}
   * Sort enricher.
   */
 object NCSortEnricher extends NCProbeEnricher {
-    private final val SORT: Seq[String] =
+    private final val SORT =
         Seq("sort", "rank", "classify", "order", "arrange", "organize", "segment", "shuffle").map(NCNlpCoreManager.stem)
 
-    private final val BY: Seq[String] =
-        Seq("by", "on", "with").map(NCNlpCoreManager.stem)
+    private final val BY: Seq[String] = Seq("by", "on", "with").map(NCNlpCoreManager.stem)
 
-    private final val ORDER: Seq[(String, Boolean)] = {
+    private final val ORDER = {
         val p = NCMacroParser()
 
         Seq(
@@ -56,11 +55,9 @@ object NCSortEnricher extends NCProbeEnricher {
         ).flatMap { case (txt, asc) ⇒ p.expand(txt).map(p ⇒ NCNlpCoreManager.stem(p) → asc) }
     }
 
-    require(SORT.size + BY.size + ORDER.size == (SORT ++ BY ++ ORDER.unzip._1).distinct.size)
+    private final val TOK_ID = "nlpcraft:sort"
 
-    private final val TOK_ID: String = "nlpcraft:sort"
-
-    private final val SORT_TYPES: Seq[String] = Seq(
+    private final val SORT_TYPES = Seq(
         "nlpcraft:continent",
         "nlpcraft:subcontinent",
         "nlpcraft:country",
@@ -86,18 +83,6 @@ object NCSortEnricher extends NCProbeEnricher {
             s"SORT x BY ORDER"
         )
 
-    // Validation.
-    SEQS.map(_.split(" ")).foreach(seq ⇒ {
-        require(seq.forall(p ⇒ p == "SORT" || p == "ORDER" || p == "BY" || p == "x"))
-
-        seq.groupBy(p ⇒ p).foreach { case (key, group) ⇒
-            key match {
-                case "x" ⇒ require(group.length <= 2)
-                case _ ⇒ require(group.length == 1)
-            }
-        }
-    })
-
     case class NoteData(note: String, indexes: Seq[Int])
 
     private case class Match(
@@ -113,17 +98,43 @@ object NCSortEnricher extends NCProbeEnricher {
         lazy val all: Seq[NCNlpSentenceToken] = main ++ stop
     }
 
-    override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒
-        super.start()
-    }
+    /**
+      *
+      */
+    private def validate() {
+        require(SORT.size + BY.size + ORDER.size == (SORT ++ BY ++ ORDER.unzip._1).distinct.size)
 
-    override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒
-        super.stop()
+        val seq1 = SORT.flatMap(_.split(" "))
+        val seq2 = BY.flatMap(_.split(" "))
+        val seq3 = ORDER.map(_._1).flatMap(_.split(" "))
+
+        require(seq1.size == seq1.distinct.size)
+        require(seq2.size == seq2.distinct.size)
+        require(seq3.size == seq3.distinct.size)
+
+        require(seq1.intersect(seq2).isEmpty)
+        require(seq1.intersect(seq3).isEmpty)
+        require(seq2.intersect(seq3).isEmpty)
+
+        SEQS.map(_.split(" ")).foreach(seq ⇒ {
+            require(seq.forall(p ⇒ p == "SORT" || p == "ORDER" || p == "BY" || p == "x"))
+
+            seq.groupBy(p ⇒ p).foreach { case (key, group) ⇒
+                key match {
+                    case "x" ⇒ require(group.length <= 2)
+                    case _ ⇒ require(group.length == 1)
+                }
+            }
+        })
     }
 
-    // [Token] -> [NoteData]
-    // [Token(A, B), Token(A), Token(C, D), Token(C, D, X), Token(Z)] ⇒
-    // [[A (0, 1), C (2, 3), Z (4)], [A (0, 1), D (2, 3), Z (4)]]
+    /**
+      * [Token] -> [NoteData]
+      * [Token(A, B), Token(A), Token(C, D), Token(C, D, X), Token(Z)] ⇒
+      * [ [A (0, 1), C (2, 3), Z (4)], [A (0, 1), D (2, 3), Z (4) ] ]
+      *
+      * @param toks
+      */
     private def split(toks: Seq[NCNlpSentenceToken]): Seq[Seq[NoteData]] = {
         val all: Seq[NoteData] = toks.
             flatten.
@@ -132,20 +143,27 @@ object NCSortEnricher extends NCProbeEnricher {
             sortBy(_.indexes.head)
 
         if (all.nonEmpty) {
+            val first = all.head.indexes.head
+            val last = all.last.indexes.last
+
             val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
 
-            def go(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
+            def fill(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
                 seq += nd
 
                 all.
-                    filter(p ⇒ p.indexes.head == nd.indexes.last + 1).
-                    foreach(go(_, mutable.ArrayBuffer.empty[NoteData] ++ seq.clone()))
+                    filter(p ⇒ nd.indexes.last < p.indexes.head  && {
+                        val between = toks.slice(nd.indexes.last, p.indexes.head - 1)
 
-                if (seq.nonEmpty && seq.head.indexes.head == toks.head.index && seq.last.indexes.last == toks.last.index)
+                        between.isEmpty || between.forall(_.isStopWord)
+                    }).
+                    foreach(fill(_, mutable.ArrayBuffer.empty[NoteData] ++ seq.clone()))
+
+                if (seq.nonEmpty && seq.head.indexes.head == first && seq.last.indexes.last == last)
                     res += seq
             }
 
-            go(all.head)
+            fill(all.head)
 
             res
         }
@@ -198,7 +216,6 @@ object NCSortEnricher extends NCProbeEnricher {
                 case None ⇒ None
             }
 
-
         hOpt match {
             case Some(h) ⇒
                 val others = toks.filter(t ⇒ !h.all.contains(t))
@@ -240,11 +257,7 @@ object NCSortEnricher extends NCProbeEnricher {
         }
     }
 
-    // TODO:
-    private def suitable(m: Match, notes: Seq[String], refName: String): Boolean =
-        !hasReferences(TOK_ID, refName, notes, m.main)
-
-    override def enrich(mdl: NCModelDecorator, ns: NCNlpSentence, senMeta: Map[String, Serializable], parent: Span): Boolean =
+    override def enrich(mdl: NCModelDecorator, ns: NCNlpSentence, meta: Map[String, Serializable], parent: Span): Boolean =
         startScopedSpan("enrich", parent,
             "srvReqId" → ns.srvReqId,
             "modelId" → mdl.model.getId,
@@ -255,7 +268,7 @@ object NCSortEnricher extends NCProbeEnricher {
             for (toks ← ns.tokenMixWithStopWords() if areSuitableTokens(buf, toks))
                 tryToMatch(toks) match {
                     case Some(m) ⇒
-                        for (subj ← m.subjSeq if suitable(m, subj.map(_.note), "subjNotes")) {
+                        for (subj ← m.subjSeq if !hasReferences(TOK_ID, "subjNotes", subj.map(_.note), m.main)) {
                             def addNotes(
                                 params: ArrayBuffer[(String, Any)],
                                 seq: Seq[NoteData],
@@ -287,7 +300,7 @@ object NCSortEnricher extends NCProbeEnricher {
                             }
 
                             if (m.bySeq.nonEmpty)
-                                for (by ← m.bySeq if suitable(m, by.map(_.note), "byNotes"))
+                                for (by ← m.bySeq if !hasReferences(TOK_ID, "byNotes", by.map(_.note), m.main))
                                     mkNote(addNotes(mkParams(), by, "byNotes", "byIndexes"))
                             else
                                 mkNote(mkParams())
@@ -301,4 +314,14 @@ object NCSortEnricher extends NCProbeEnricher {
 
             changed
         }
+
+    override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒
+        validate()
+
+        super.start()
+    }
+
+    override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒
+        super.stop()
+    }
 }
\ No newline at end of file


[incubator-nlpcraft] 12/13: Merge branch 'master' into NLPCRAFT-2

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit e2836af07d4e1c3d3578fe387f47f2b94279bc0d
Merge: 1970603 a7a1ca3
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Sat Mar 14 09:57:31 2020 +0300

    Merge branch 'master' into NLPCRAFT-2
    
    # Conflicts:
    #	src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala

 README.md                                          |   12 +-
 bin/nccurl.sh                                      |   40 +-
 bin/prepare.sh                                     |   40 +-
 docker/Dockerfile                                  |   43 +-
 docker/prepare.sh                                  |   40 +-
 docker/readme.md                                   |    8 +-
 docs/Gemfile                                       |   41 +-
 docs/_config.yml                                   |   49 +-
 docs/_data/blogs.yml                               |  110 -
 docs/_data/metrics.yml                             |   38 +-
 docs/_data/news.yml                                |   89 +-
 docs/_data/releases.yml                            |  172 +-
 docs/_includes/quick-links.html                    |   51 +
 docs/_layouts/blog.html                            |   10 +-
 docs/_layouts/default.html                         |   18 +-
 docs/_layouts/release-notes.html                   |   10 +-
 docs/_scss/404.scss                                |   38 +-
 docs/_scss/basic-concepts.scss                     |   38 +-
 docs/_scss/blogs.scss                              |  138 -
 docs/_scss/buttons.scss                            |   38 +-
 docs/_scss/colors.scss                             |   38 +-
 docs/_scss/download.scss                           |   38 +-
 docs/_scss/fonts.scss                              |   38 +-
 docs/_scss/footer.scss                             |   38 +-
 docs/_scss/header.scss                             |   38 +-
 docs/_scss/index.scss                              |   42 +-
 docs/_scss/integrations.scss                       |   38 +-
 docs/_scss/metrics-and-tracing.scss                |   38 +-
 docs/_scss/misc.scss                               |   38 +-
 docs/_scss/server-and-probes.scss                  |   38 +-
 docs/_scss/sh.scss                                 |   38 +-
 docs/_scss/three-cols.scss                         |   38 +-
 docs/_scss/use-cases.scss                          |   38 +-
 docs/apis/javadoc-0.1.0/allclasses-frame.html      |   62 -
 docs/apis/javadoc-0.1.0/allclasses-noframe.html    |   62 -
 docs/apis/javadoc-0.1.0/constant-values.html       |  368 ---
 docs/apis/javadoc-0.1.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.1.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.1.0/index-all.html             | 2096 -------------
 docs/apis/javadoc-0.1.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  276 --
 .../org/nlpcraft/model/NCDataSource.html           |  277 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  262 --
 .../org/nlpcraft/model/NCElement.html              |  622 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.1.0/org/nlpcraft/model/NCModel.html  | 2261 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  283 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  368 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  366 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  331 --
 .../org/nlpcraft/model/NCQueryResult.html          |  533 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  502 ----
 .../javadoc-0.1.0/org/nlpcraft/model/NCToken.html  | 1198 --------
 .../org/nlpcraft/model/NCVariant.html              |  253 --
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  584 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1514 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  215 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  495 ---
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../org/nlpcraft/model/class-use/NCDataSource.html |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  239 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  282 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  858 ------
 .../org/nlpcraft/model/class-use/NCVariant.html    |  229 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  410 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  343 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  400 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  360 ---
 .../intent/NCIntentSolver.IntentCallback.html      |  209 --
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  410 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  343 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  410 ---
 .../model/intent/NCIntentSolver.Predicate.html     |  219 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  532 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  370 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  410 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  598 ----
 .../model/intent/NCIntentSolverContext.html        |  340 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  195 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../class-use/NCIntentSolver.IntentCallback.html   |  174 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.Predicate.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  174 --
 .../intent/class-use/NCIntentSolverContext.html    |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   43 -
 .../org/nlpcraft/model/intent/package-summary.html |  276 --
 .../org/nlpcraft/model/intent/package-tree.html    |  196 --
 .../org/nlpcraft/model/intent/package-use.html     |  191 --
 .../org/nlpcraft/model/package-frame.html          |   42 -
 .../org/nlpcraft/model/package-summary.html        |  270 --
 .../org/nlpcraft/model/package-tree.html           |  186 --
 .../org/nlpcraft/model/package-use.html            |  350 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  347 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  409 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  197 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  198 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2723 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.1.0/overview-frame.html        |   27 -
 docs/apis/javadoc-0.1.0/overview-summary.html      |  180 --
 docs/apis/javadoc-0.1.0/overview-tree.html         |  236 --
 docs/apis/javadoc-0.1.0/package-list               |    5 -
 .../javadoc-0.1.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.1.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.1.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.1.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.1.0/script.js                  |   30 -
 docs/apis/javadoc-0.1.0/serialized-form.html       |  250 --
 docs/apis/javadoc-0.1.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.2.0/allclasses-frame.html      |   62 -
 docs/apis/javadoc-0.2.0/allclasses-noframe.html    |   62 -
 docs/apis/javadoc-0.2.0/constant-values.html       |  368 ---
 docs/apis/javadoc-0.2.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.2.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.2.0/index-all.html             | 2100 -------------
 docs/apis/javadoc-0.2.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  276 --
 .../org/nlpcraft/model/NCDataSource.html           |  277 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  262 --
 .../org/nlpcraft/model/NCElement.html              |  622 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.2.0/org/nlpcraft/model/NCModel.html  | 2268 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  283 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  376 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  340 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  331 --
 .../org/nlpcraft/model/NCQueryResult.html          |  533 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  502 ----
 .../javadoc-0.2.0/org/nlpcraft/model/NCToken.html  | 1212 --------
 .../org/nlpcraft/model/NCVariant.html              |  253 --
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  584 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1516 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  215 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  495 ---
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../org/nlpcraft/model/class-use/NCDataSource.html |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  239 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  282 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  870 ------
 .../org/nlpcraft/model/class-use/NCVariant.html    |  229 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  410 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  343 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  400 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  360 ---
 .../intent/NCIntentSolver.IntentCallback.html      |  209 --
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  410 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  343 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  410 ---
 .../model/intent/NCIntentSolver.Predicate.html     |  219 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  532 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  370 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  410 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  598 ----
 .../model/intent/NCIntentSolverContext.html        |  340 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  195 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../class-use/NCIntentSolver.IntentCallback.html   |  174 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.Predicate.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  174 --
 .../intent/class-use/NCIntentSolverContext.html    |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   43 -
 .../org/nlpcraft/model/intent/package-summary.html |  276 --
 .../org/nlpcraft/model/intent/package-tree.html    |  196 --
 .../org/nlpcraft/model/intent/package-use.html     |  191 --
 .../org/nlpcraft/model/package-frame.html          |   42 -
 .../org/nlpcraft/model/package-summary.html        |  270 --
 .../org/nlpcraft/model/package-tree.html           |  186 --
 .../org/nlpcraft/model/package-use.html            |  350 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  347 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  409 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  197 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  198 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2773 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.2.0/overview-frame.html        |   27 -
 docs/apis/javadoc-0.2.0/overview-summary.html      |  180 --
 docs/apis/javadoc-0.2.0/overview-tree.html         |  236 --
 docs/apis/javadoc-0.2.0/package-list               |    5 -
 .../javadoc-0.2.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.2.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.2.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.2.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.2.0/script.js                  |   30 -
 docs/apis/javadoc-0.2.0/serialized-form.html       |  250 --
 docs/apis/javadoc-0.2.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.3.0/allclasses-frame.html      |   64 -
 docs/apis/javadoc-0.3.0/allclasses-noframe.html    |   64 -
 docs/apis/javadoc-0.3.0/constant-values.html       |  368 ---
 docs/apis/javadoc-0.3.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.3.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.3.0/index-all.html             | 2152 -------------
 docs/apis/javadoc-0.3.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  276 --
 .../org/nlpcraft/model/NCDataSource.html           |  277 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  627 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.3.0/org/nlpcraft/model/NCModel.html  | 2269 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  288 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  376 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  331 --
 .../org/nlpcraft/model/NCQueryResult.html          |  537 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  506 ----
 .../javadoc-0.3.0/org/nlpcraft/model/NCToken.html  | 1212 --------
 .../org/nlpcraft/model/NCVariant.html              |  253 --
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  584 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1552 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  221 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  495 ---
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../org/nlpcraft/model/class-use/NCDataSource.html |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  294 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  282 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  870 ------
 .../org/nlpcraft/model/class-use/NCVariant.html    |  229 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  410 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  351 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  369 ---
 .../intent/NCIntentSolver.IntentCallback.html      |  209 --
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  410 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  351 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  410 ---
 .../model/intent/NCIntentSolver.Predicate.html     |  219 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  535 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  379 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  410 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  410 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  644 ----
 .../model/intent/NCIntentSolverContext.html        |  367 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../class-use/NCIntentSolver.IntentCallback.html   |  174 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.Predicate.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  202 --
 .../intent/class-use/NCIntentSolverContext.html    |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   43 -
 .../org/nlpcraft/model/intent/package-summary.html |  276 --
 .../org/nlpcraft/model/intent/package-tree.html    |  198 --
 .../org/nlpcraft/model/intent/package-use.html     |  214 --
 .../org/nlpcraft/model/package-frame.html          |   42 -
 .../org/nlpcraft/model/package-summary.html        |  270 --
 .../org/nlpcraft/model/package-tree.html           |  186 --
 .../org/nlpcraft/model/package-use.html            |  373 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  347 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  409 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  197 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  198 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  342 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  304 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  164 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2773 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.3.0/overview-frame.html        |   28 -
 docs/apis/javadoc-0.3.0/overview-summary.html      |  197 --
 docs/apis/javadoc-0.3.0/overview-tree.html         |  241 --
 docs/apis/javadoc-0.3.0/package-list               |    6 -
 .../javadoc-0.3.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.3.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.3.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.3.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.3.0/script.js                  |   30 -
 docs/apis/javadoc-0.3.0/serialized-form.html       |  380 ---
 docs/apis/javadoc-0.3.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.4.0/allclasses-frame.html      |   63 -
 docs/apis/javadoc-0.4.0/allclasses-noframe.html    |   63 -
 docs/apis/javadoc-0.4.0/constant-values.html       |  368 ---
 docs/apis/javadoc-0.4.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.4.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.4.0/index-all.html             | 2135 -------------
 docs/apis/javadoc-0.4.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  278 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  627 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.4.0/org/nlpcraft/model/NCModel.html  | 2269 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  288 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  376 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  537 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  531 ----
 .../javadoc-0.4.0/org/nlpcraft/model/NCToken.html  | 1212 --------
 .../org/nlpcraft/model/NCVariant.html              |  253 --
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  584 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1580 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  221 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  502 ----
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  294 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  282 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  870 ------
 .../org/nlpcraft/model/class-use/NCVariant.html    |  229 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  417 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  351 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  369 ---
 .../intent/NCIntentSolver.IntentCallback.html      |  209 --
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  417 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  351 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  417 ---
 .../model/intent/NCIntentSolver.Predicate.html     |  266 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  542 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  379 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  417 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  644 ----
 .../model/intent/NCIntentSolverContext.html        |  367 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../class-use/NCIntentSolver.IntentCallback.html   |  174 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.Predicate.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  229 --
 .../intent/class-use/NCIntentSolverContext.html    |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   43 -
 .../org/nlpcraft/model/intent/package-summary.html |  276 --
 .../org/nlpcraft/model/intent/package-tree.html    |  198 --
 .../org/nlpcraft/model/intent/package-use.html     |  237 --
 .../org/nlpcraft/model/package-frame.html          |   41 -
 .../org/nlpcraft/model/package-summary.html        |  264 --
 .../org/nlpcraft/model/package-tree.html           |  185 --
 .../org/nlpcraft/model/package-use.html            |  368 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  320 --
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  198 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  342 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  304 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  164 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2773 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.4.0/overview-frame.html        |   28 -
 docs/apis/javadoc-0.4.0/overview-summary.html      |  197 --
 docs/apis/javadoc-0.4.0/overview-tree.html         |  240 --
 docs/apis/javadoc-0.4.0/package-list               |    6 -
 .../javadoc-0.4.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.4.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.4.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.4.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.4.0/script.js                  |   30 -
 docs/apis/javadoc-0.4.0/serialized-form.html       |  380 ---
 docs/apis/javadoc-0.4.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.5.0/allclasses-frame.html      |   61 -
 docs/apis/javadoc-0.5.0/allclasses-noframe.html    |   61 -
 docs/apis/javadoc-0.5.0/constant-values.html       |  368 ---
 docs/apis/javadoc-0.5.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.5.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.5.0/index-all.html             | 2123 -------------
 docs/apis/javadoc-0.5.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  284 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  630 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.5.0/org/nlpcraft/model/NCModel.html  | 2269 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  288 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  376 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  531 ----
 .../javadoc-0.5.0/org/nlpcraft/model/NCToken.html  | 1224 --------
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  598 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1608 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  221 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  502 ----
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  294 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  888 ------
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  417 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  351 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  369 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  417 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  351 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  417 ---
 .../model/intent/NCIntentSolver.PREDICATE.html     |  266 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  551 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  379 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  417 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  636 ----
 .../model/intent/NCIntentSolverContext.html        |  369 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.PREDICATE.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  229 --
 .../intent/class-use/NCIntentSolverContext.html    |  174 --
 .../org/nlpcraft/model/intent/package-frame.html   |   42 -
 .../org/nlpcraft/model/intent/package-summary.html |  270 --
 .../org/nlpcraft/model/intent/package-tree.html    |  196 --
 .../org/nlpcraft/model/intent/package-use.html     |  237 --
 .../org/nlpcraft/model/package-frame.html          |   40 -
 .../org/nlpcraft/model/package-summary.html        |  258 --
 .../org/nlpcraft/model/package-tree.html           |  179 --
 .../org/nlpcraft/model/package-use.html            |  358 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  354 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  342 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  304 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  164 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2767 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.5.0/overview-frame.html        |   28 -
 docs/apis/javadoc-0.5.0/overview-summary.html      |  197 --
 docs/apis/javadoc-0.5.0/overview-tree.html         |  232 --
 docs/apis/javadoc-0.5.0/package-list               |    6 -
 .../javadoc-0.5.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.5.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.5.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.5.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.5.0/script.js                  |   30 -
 docs/apis/javadoc-0.5.0/serialized-form.html       |  380 ---
 docs/apis/javadoc-0.5.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.5.1/allclasses-frame.html      |   61 -
 docs/apis/javadoc-0.5.1/allclasses-noframe.html    |   61 -
 docs/apis/javadoc-0.5.1/constant-values.html       |  368 ---
 docs/apis/javadoc-0.5.1/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.5.1/help-doc.html              |  234 --
 docs/apis/javadoc-0.5.1/index-all.html             | 2123 -------------
 docs/apis/javadoc-0.5.1/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  284 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  630 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.5.1/org/nlpcraft/model/NCModel.html  | 2269 --------------
 .../org/nlpcraft/model/NCModelDescriptor.html      |  288 --
 .../org/nlpcraft/model/NCModelProvider.html        |  278 --
 .../org/nlpcraft/model/NCModelProviderAdapter.html |  376 ---
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  307 --
 .../org/nlpcraft/model/NCSentence.html             |  531 ----
 .../javadoc-0.5.1/org/nlpcraft/model/NCToken.html  | 1224 --------
 .../nlpcraft/model/builder/NCBuilderException.html |  305 --
 .../nlpcraft/model/builder/NCElementBuilder.html   |  598 ----
 .../org/nlpcraft/model/builder/NCModelBuilder.html | 1608 ----------
 .../model/builder/NCModelDescriptorBuilder.html    |  376 ---
 .../builder/class-use/NCBuilderException.html      |  221 --
 .../model/builder/class-use/NCElementBuilder.html  |  255 --
 .../model/builder/class-use/NCModelBuilder.html    |  502 ----
 .../class-use/NCModelDescriptorBuilder.html        |  200 --
 .../org/nlpcraft/model/builder/package-frame.html  |   27 -
 .../nlpcraft/model/builder/package-summary.html    |  187 --
 .../org/nlpcraft/model/builder/package-tree.html   |  157 -
 .../org/nlpcraft/model/builder/package-use.html    |  181 --
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  214 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  191 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  294 --
 .../model/class-use/NCModelDescriptor.html         |  233 --
 .../nlpcraft/model/class-use/NCModelProvider.html  |  173 --
 .../model/class-use/NCModelProviderAdapter.html    |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  199 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  241 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  200 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  888 ------
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  417 ---
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  351 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.ITEM.html |  369 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  417 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  351 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  417 ---
 .../model/intent/NCIntentSolver.PREDICATE.html     |  266 --
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  551 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  379 ---
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  417 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  417 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  636 ----
 .../model/intent/NCIntentSolverContext.html        |  369 ---
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.ITEM.html      |  186 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.PREDICATE.html |  292 --
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  203 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  229 --
 .../intent/class-use/NCIntentSolverContext.html    |  174 --
 .../org/nlpcraft/model/intent/package-frame.html   |   42 -
 .../org/nlpcraft/model/intent/package-summary.html |  270 --
 .../org/nlpcraft/model/intent/package-tree.html    |  196 --
 .../org/nlpcraft/model/intent/package-use.html     |  237 --
 .../org/nlpcraft/model/package-frame.html          |   40 -
 .../org/nlpcraft/model/package-summary.html        |  258 --
 .../org/nlpcraft/model/package-tree.html           |  179 --
 .../org/nlpcraft/model/package-use.html            |  358 ---
 .../org/nlpcraft/model/test/NCTestClient.html      |  354 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  342 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  304 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  164 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 2767 -----------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.5.1/overview-frame.html        |   28 -
 docs/apis/javadoc-0.5.1/overview-summary.html      |  197 --
 docs/apis/javadoc-0.5.1/overview-tree.html         |  232 --
 docs/apis/javadoc-0.5.1/package-list               |    6 -
 .../javadoc-0.5.1/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.5.1/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.5.1/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.5.1/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.5.1/script.js                  |   30 -
 docs/apis/javadoc-0.5.1/serialized-form.html       |  380 ---
 docs/apis/javadoc-0.5.1/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.6.0/allclasses-frame.html      |   58 -
 docs/apis/javadoc-0.6.0/allclasses-noframe.html    |   58 -
 docs/apis/javadoc-0.6.0/constant-values.html       |  312 --
 docs/apis/javadoc-0.6.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.6.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.6.0/index-all.html             | 1889 ------------
 docs/apis/javadoc-0.6.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  285 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  630 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.6.0/org/nlpcraft/model/NCModel.html  | 1832 -----------
 .../org/nlpcraft/model/NCModelAdapter.html         |  518 ----
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1420 ---------
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCSentence.html             |  531 ----
 .../javadoc-0.6.0/org/nlpcraft/model/NCToken.html  | 1423 ---------
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  210 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  242 --
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  173 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  248 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  204 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      | 1070 -------
 .../org/nlpcraft/model/intent/NCIntent.html        |  411 ---
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  436 ---
 .../model/intent/NCIntentSolver.COMBINATOR.html    |  267 --
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  403 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  437 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  403 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOT.html  |  385 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  657 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  583 ----
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  437 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  437 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  768 -----
 .../model/intent/NCIntentSolverContext.html        |  396 ---
 .../org/nlpcraft/model/intent/NCIntentTerm.html    |  274 --
 .../nlpcraft/model/intent/class-use/NCIntent.html  |  129 -
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.COMBINATOR.html       |  258 --
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.NOT.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  201 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  222 --
 .../intent/class-use/NCIntentSolverContext.html    |  181 --
 .../model/intent/class-use/NCIntentTerm.html       |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   47 -
 .../org/nlpcraft/model/intent/package-summary.html |  306 --
 .../org/nlpcraft/model/intent/package-tree.html    |  200 --
 .../org/nlpcraft/model/intent/package-use.html     |  209 --
 .../org/nlpcraft/model/package-frame.html          |   39 -
 .../org/nlpcraft/model/package-summary.html        |  252 --
 .../org/nlpcraft/model/package-tree.html           |  181 --
 .../org/nlpcraft/model/package-use.html            |  305 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  337 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  300 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  167 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 3175 --------------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.6.0/overview-frame.html        |   27 -
 docs/apis/javadoc-0.6.0/overview-summary.html      |  191 --
 docs/apis/javadoc-0.6.0/overview-tree.html         |  233 --
 docs/apis/javadoc-0.6.0/package-list               |    5 -
 .../javadoc-0.6.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.6.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.6.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.6.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.6.0/script.js                  |   30 -
 docs/apis/javadoc-0.6.0/serialized-form.html       |  306 --
 docs/apis/javadoc-0.6.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.7.0/allclasses-frame.html      |   65 -
 docs/apis/javadoc-0.7.0/allclasses-noframe.html    |   65 -
 docs/apis/javadoc-0.7.0/constant-values.html       |  340 ---
 docs/apis/javadoc-0.7.0/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.7.0/help-doc.html              |  234 --
 docs/apis/javadoc-0.7.0/index-all.html             | 2041 -------------
 docs/apis/javadoc-0.7.0/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  285 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  630 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.7.0/org/nlpcraft/model/NCModel.html  | 1858 ------------
 .../org/nlpcraft/model/NCModelAdapter.html         |  518 ----
 .../org/nlpcraft/model/NCModelFactory.html         |  278 --
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1420 ---------
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCSentence.html             |  551 ----
 .../javadoc-0.7.0/org/nlpcraft/model/NCToken.html  | 1461 ---------
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  210 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  337 ---
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../nlpcraft/model/class-use/NCModelFactory.html   |  199 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  173 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  248 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  204 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      | 1070 -------
 .../model/factories/basic/NCBasicModelFactory.html |  341 ---
 .../basic/class-use/NCBasicModelFactory.html       |  129 -
 .../model/factories/basic/package-frame.html       |   21 -
 .../model/factories/basic/package-summary.html     |  158 -
 .../model/factories/basic/package-tree.html        |  142 -
 .../model/factories/basic/package-use.html         |  129 -
 .../factories/spring/NCSpringModelFactory.html     |  410 ---
 .../spring/class-use/NCSpringModelFactory.html     |  129 -
 .../model/factories/spring/package-frame.html      |   21 -
 .../model/factories/spring/package-summary.html    |  158 -
 .../model/factories/spring/package-tree.html       |  142 -
 .../model/factories/spring/package-use.html        |  129 -
 .../org/nlpcraft/model/intent/NCIntent.html        |  417 ---
 .../org/nlpcraft/model/intent/NCIntentRef.html     |  285 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  436 ---
 .../model/intent/NCIntentSolver.COMBINATOR.html    |  267 --
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  403 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  437 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  403 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOT.html  |  385 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  657 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  583 ----
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  437 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  437 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  769 -----
 .../model/intent/NCIntentSolverContext.html        |  396 ---
 .../org/nlpcraft/model/intent/NCIntentTerm.html    |  266 --
 .../nlpcraft/model/intent/class-use/NCIntent.html  |  129 -
 .../model/intent/class-use/NCIntentRef.html        |  129 -
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.COMBINATOR.html       |  258 --
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.NOT.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  201 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  222 --
 .../intent/class-use/NCIntentSolverContext.html    |  181 --
 .../model/intent/class-use/NCIntentTerm.html       |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   48 -
 .../org/nlpcraft/model/intent/package-summary.html |  312 --
 .../org/nlpcraft/model/intent/package-tree.html    |  201 --
 .../org/nlpcraft/model/intent/package-use.html     |  209 --
 .../org/nlpcraft/model/package-frame.html          |   40 -
 .../org/nlpcraft/model/package-summary.html        |  258 --
 .../org/nlpcraft/model/package-tree.html           |  182 --
 .../org/nlpcraft/model/package-use.html            |  361 ---
 .../nlpcraft/model/parsing/NCCustomElement.html    |  284 --
 .../org/nlpcraft/model/parsing/NCCustomParser.html |  251 --
 .../org/nlpcraft/model/parsing/NCCustomWord.html   |  453 ---
 .../model/parsing/class-use/NCCustomElement.html   |  174 --
 .../model/parsing/class-use/NCCustomParser.html    |  173 --
 .../model/parsing/class-use/NCCustomWord.html      |  189 --
 .../org/nlpcraft/model/parsing/package-frame.html  |   23 -
 .../nlpcraft/model/parsing/package-summary.html    |  177 --
 .../org/nlpcraft/model/parsing/package-tree.html   |  140 -
 .../org/nlpcraft/model/parsing/package-use.html    |  194 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  337 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  300 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  167 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 3175 --------------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.7.0/overview-frame.html        |   30 -
 docs/apis/javadoc-0.7.0/overview-summary.html      |  209 --
 docs/apis/javadoc-0.7.0/overview-tree.html         |  243 --
 docs/apis/javadoc-0.7.0/package-list               |    8 -
 .../javadoc-0.7.0/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.7.0/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.7.0/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.7.0/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.7.0/script.js                  |   30 -
 docs/apis/javadoc-0.7.0/serialized-form.html       |  306 --
 docs/apis/javadoc-0.7.0/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.7.1/allclasses-frame.html      |   65 -
 docs/apis/javadoc-0.7.1/allclasses-noframe.html    |   65 -
 docs/apis/javadoc-0.7.1/constant-values.html       |  340 ---
 docs/apis/javadoc-0.7.1/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.7.1/help-doc.html              |  234 --
 docs/apis/javadoc-0.7.1/index-all.html             | 2041 -------------
 docs/apis/javadoc-0.7.1/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  285 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  633 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.7.1/org/nlpcraft/model/NCModel.html  | 1859 ------------
 .../org/nlpcraft/model/NCModelAdapter.html         |  518 ----
 .../org/nlpcraft/model/NCModelFactory.html         |  278 --
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1421 ---------
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCSentence.html             |  551 ----
 .../javadoc-0.7.1/org/nlpcraft/model/NCToken.html  | 1461 ---------
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  210 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  337 ---
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../nlpcraft/model/class-use/NCModelFactory.html   |  199 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  173 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  248 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  204 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      | 1070 -------
 .../model/factories/basic/NCBasicModelFactory.html |  366 ---
 .../basic/class-use/NCBasicModelFactory.html       |  129 -
 .../model/factories/basic/package-frame.html       |   21 -
 .../model/factories/basic/package-summary.html     |  158 -
 .../model/factories/basic/package-tree.html        |  142 -
 .../model/factories/basic/package-use.html         |  129 -
 .../factories/spring/NCSpringModelFactory.html     |  433 ---
 .../spring/class-use/NCSpringModelFactory.html     |  129 -
 .../model/factories/spring/package-frame.html      |   21 -
 .../model/factories/spring/package-summary.html    |  158 -
 .../model/factories/spring/package-tree.html       |  142 -
 .../model/factories/spring/package-use.html        |  129 -
 .../org/nlpcraft/model/intent/NCIntent.html        |  417 ---
 .../org/nlpcraft/model/intent/NCIntentRef.html     |  285 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  436 ---
 .../model/intent/NCIntentSolver.COMBINATOR.html    |  267 --
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  403 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  437 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  403 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOT.html  |  385 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  657 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  583 ----
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  437 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  437 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  769 -----
 .../model/intent/NCIntentSolverContext.html        |  396 ---
 .../org/nlpcraft/model/intent/NCIntentTerm.html    |  266 --
 .../nlpcraft/model/intent/class-use/NCIntent.html  |  129 -
 .../model/intent/class-use/NCIntentRef.html        |  129 -
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.COMBINATOR.html       |  258 --
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.NOT.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  201 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  222 --
 .../intent/class-use/NCIntentSolverContext.html    |  181 --
 .../model/intent/class-use/NCIntentTerm.html       |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   48 -
 .../org/nlpcraft/model/intent/package-summary.html |  312 --
 .../org/nlpcraft/model/intent/package-tree.html    |  201 --
 .../org/nlpcraft/model/intent/package-use.html     |  209 --
 .../org/nlpcraft/model/package-frame.html          |   40 -
 .../org/nlpcraft/model/package-summary.html        |  258 --
 .../org/nlpcraft/model/package-tree.html           |  182 --
 .../org/nlpcraft/model/package-use.html            |  361 ---
 .../nlpcraft/model/parsing/NCCustomElement.html    |  284 --
 .../org/nlpcraft/model/parsing/NCCustomParser.html |  251 --
 .../org/nlpcraft/model/parsing/NCCustomWord.html   |  453 ---
 .../model/parsing/class-use/NCCustomElement.html   |  174 --
 .../model/parsing/class-use/NCCustomParser.html    |  173 --
 .../model/parsing/class-use/NCCustomWord.html      |  189 --
 .../org/nlpcraft/model/parsing/package-frame.html  |   23 -
 .../nlpcraft/model/parsing/package-summary.html    |  177 --
 .../org/nlpcraft/model/parsing/package-tree.html   |  140 -
 .../org/nlpcraft/model/parsing/package-use.html    |  194 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  337 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  300 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  167 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 3175 --------------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.7.1/overview-frame.html        |   30 -
 docs/apis/javadoc-0.7.1/overview-summary.html      |  209 --
 docs/apis/javadoc-0.7.1/overview-tree.html         |  243 --
 docs/apis/javadoc-0.7.1/package-list               |    8 -
 .../javadoc-0.7.1/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.7.1/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.7.1/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.7.1/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.7.1/script.js                  |   30 -
 docs/apis/javadoc-0.7.1/serialized-form.html       |  306 --
 docs/apis/javadoc-0.7.1/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.7.2/allclasses-frame.html      |   65 -
 docs/apis/javadoc-0.7.2/allclasses-noframe.html    |   65 -
 docs/apis/javadoc-0.7.2/constant-values.html       |  340 ---
 docs/apis/javadoc-0.7.2/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.7.2/help-doc.html              |  234 --
 docs/apis/javadoc-0.7.2/index-all.html             | 2041 -------------
 docs/apis/javadoc-0.7.2/index.html                 |   76 -
 .../org/nlpcraft/model/NCConversationContext.html  |  285 --
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  633 ----
 .../org/nlpcraft/model/NCMetadata.html             |  651 ----
 .../javadoc-0.7.2/org/nlpcraft/model/NCModel.html  | 1859 ------------
 .../org/nlpcraft/model/NCModelAdapter.html         |  518 ----
 .../org/nlpcraft/model/NCModelFactory.html         |  278 --
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1421 ---------
 .../org/nlpcraft/model/NCProbeContext.html         |  345 ---
 .../org/nlpcraft/model/NCQueryContext.html         |  311 --
 .../org/nlpcraft/model/NCQueryResult.html          |  528 ----
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCSentence.html             |  551 ----
 .../javadoc-0.7.2/org/nlpcraft/model/NCToken.html  | 1461 ---------
 .../model/class-use/NCConversationContext.html     |  173 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCMetadata.html   |  210 --
 .../org/nlpcraft/model/class-use/NCModel.html      |  337 ---
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../nlpcraft/model/class-use/NCModelFactory.html   |  199 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../nlpcraft/model/class-use/NCProbeContext.html   |  173 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  248 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  280 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  204 --
 .../org/nlpcraft/model/class-use/NCSentence.html   |  173 --
 .../org/nlpcraft/model/class-use/NCToken.html      | 1070 -------
 .../model/factories/basic/NCBasicModelFactory.html |  366 ---
 .../basic/class-use/NCBasicModelFactory.html       |  129 -
 .../model/factories/basic/package-frame.html       |   21 -
 .../model/factories/basic/package-summary.html     |  158 -
 .../model/factories/basic/package-tree.html        |  142 -
 .../model/factories/basic/package-use.html         |  129 -
 .../factories/spring/NCSpringModelFactory.html     |  433 ---
 .../spring/class-use/NCSpringModelFactory.html     |  129 -
 .../model/factories/spring/package-frame.html      |   21 -
 .../model/factories/spring/package-summary.html    |  158 -
 .../model/factories/spring/package-tree.html       |  142 -
 .../model/factories/spring/package-use.html        |  129 -
 .../org/nlpcraft/model/intent/NCIntent.html        |  417 ---
 .../org/nlpcraft/model/intent/NCIntentRef.html     |  285 --
 .../org/nlpcraft/model/intent/NCIntentSkip.html    |  303 --
 .../nlpcraft/model/intent/NCIntentSolver.AND.html  |  436 ---
 .../model/intent/NCIntentSolver.COMBINATOR.html    |  267 --
 .../model/intent/NCIntentSolver.CONV_INTENT.html   |  403 ---
 .../model/intent/NCIntentSolver.INTENT.html        |  406 ---
 .../nlpcraft/model/intent/NCIntentSolver.NAND.html |  437 ---
 .../intent/NCIntentSolver.NON_CONV_INTENT.html     |  403 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOR.html  |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.NOT.html  |  385 ---
 .../nlpcraft/model/intent/NCIntentSolver.OR.html   |  436 ---
 .../nlpcraft/model/intent/NCIntentSolver.RULE.html |  657 ----
 .../nlpcraft/model/intent/NCIntentSolver.TERM.html |  583 ----
 .../nlpcraft/model/intent/NCIntentSolver.XNOR.html |  437 ---
 .../nlpcraft/model/intent/NCIntentSolver.XOR.html  |  437 ---
 .../org/nlpcraft/model/intent/NCIntentSolver.html  |  769 -----
 .../model/intent/NCIntentSolverContext.html        |  396 ---
 .../org/nlpcraft/model/intent/NCIntentTerm.html    |  266 --
 .../nlpcraft/model/intent/class-use/NCIntent.html  |  129 -
 .../model/intent/class-use/NCIntentRef.html        |  129 -
 .../model/intent/class-use/NCIntentSkip.html       |  129 -
 .../model/intent/class-use/NCIntentSolver.AND.html |  129 -
 .../class-use/NCIntentSolver.COMBINATOR.html       |  258 --
 .../class-use/NCIntentSolver.CONV_INTENT.html      |  129 -
 .../intent/class-use/NCIntentSolver.INTENT.html    |  210 --
 .../intent/class-use/NCIntentSolver.NAND.html      |  129 -
 .../class-use/NCIntentSolver.NON_CONV_INTENT.html  |  129 -
 .../model/intent/class-use/NCIntentSolver.NOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.NOT.html |  129 -
 .../model/intent/class-use/NCIntentSolver.OR.html  |  129 -
 .../intent/class-use/NCIntentSolver.RULE.html      |  129 -
 .../intent/class-use/NCIntentSolver.TERM.html      |  201 --
 .../intent/class-use/NCIntentSolver.XNOR.html      |  129 -
 .../model/intent/class-use/NCIntentSolver.XOR.html |  129 -
 .../model/intent/class-use/NCIntentSolver.html     |  222 --
 .../intent/class-use/NCIntentSolverContext.html    |  181 --
 .../model/intent/class-use/NCIntentTerm.html       |  129 -
 .../org/nlpcraft/model/intent/package-frame.html   |   48 -
 .../org/nlpcraft/model/intent/package-summary.html |  312 --
 .../org/nlpcraft/model/intent/package-tree.html    |  201 --
 .../org/nlpcraft/model/intent/package-use.html     |  209 --
 .../org/nlpcraft/model/package-frame.html          |   40 -
 .../org/nlpcraft/model/package-summary.html        |  258 --
 .../org/nlpcraft/model/package-tree.html           |  182 --
 .../org/nlpcraft/model/package-use.html            |  361 ---
 .../nlpcraft/model/parsing/NCCustomElement.html    |  284 --
 .../org/nlpcraft/model/parsing/NCCustomParser.html |  251 --
 .../org/nlpcraft/model/parsing/NCCustomWord.html   |  453 ---
 .../model/parsing/class-use/NCCustomElement.html   |  174 --
 .../model/parsing/class-use/NCCustomParser.html    |  173 --
 .../model/parsing/class-use/NCCustomWord.html      |  189 --
 .../org/nlpcraft/model/parsing/package-frame.html  |   23 -
 .../nlpcraft/model/parsing/package-summary.html    |  177 --
 .../org/nlpcraft/model/parsing/package-tree.html   |  140 -
 .../org/nlpcraft/model/parsing/package-use.html    |  194 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  528 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/model/tools/dump/NCDumpReader.html    |  337 ---
 .../nlpcraft/model/tools/dump/NCDumpWriter.html    |  300 --
 .../model/tools/dump/class-use/NCDumpReader.html   |  129 -
 .../model/tools/dump/class-use/NCDumpWriter.html   |  129 -
 .../nlpcraft/model/tools/dump/package-frame.html   |   22 -
 .../nlpcraft/model/tools/dump/package-summary.html |  167 -
 .../nlpcraft/model/tools/dump/package-tree.html    |  143 -
 .../org/nlpcraft/model/tools/dump/package-use.html |  129 -
 .../nlpcraft/model/utils/NCTokenSqlAdapter.html    |  263 --
 .../org/nlpcraft/model/utils/NCTokenUtils.html     | 3175 --------------------
 .../model/utils/class-use/NCTokenSqlAdapter.html   |  182 --
 .../model/utils/class-use/NCTokenUtils.html        |  129 -
 .../org/nlpcraft/model/utils/package-frame.html    |   25 -
 .../org/nlpcraft/model/utils/package-summary.html  |  175 --
 .../org/nlpcraft/model/utils/package-tree.html     |  146 -
 .../org/nlpcraft/model/utils/package-use.html      |  166 -
 docs/apis/javadoc-0.7.2/overview-frame.html        |   30 -
 docs/apis/javadoc-0.7.2/overview-summary.html      |  209 --
 docs/apis/javadoc-0.7.2/overview-tree.html         |  243 --
 docs/apis/javadoc-0.7.2/package-list               |    8 -
 .../javadoc-0.7.2/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.7.2/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.7.2/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.7.2/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.7.2/script.js                  |   30 -
 docs/apis/javadoc-0.7.2/serialized-form.html       |  306 --
 docs/apis/javadoc-0.7.2/stylesheet.css             |  700 -----
 docs/apis/javadoc-0.7.3/allclasses-frame.html      |   58 -
 docs/apis/javadoc-0.7.3/allclasses-noframe.html    |   58 -
 docs/apis/javadoc-0.7.3/constant-values.html       |  347 ---
 docs/apis/javadoc-0.7.3/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.7.3/help-doc.html              |  234 --
 docs/apis/javadoc-0.7.3/index-all.html             | 1384 ---------
 docs/apis/javadoc-0.7.3/index.html                 |   76 -
 .../org/nlpcraft/model/NCCompany.html              |  378 ---
 .../org/nlpcraft/model/NCConversation.html         |  308 --
 .../org/nlpcraft/model/NCCustomElement.html        |  290 --
 .../org/nlpcraft/model/NCCustomParser.html         |  263 --
 .../org/nlpcraft/model/NCCustomWord.html           |  516 ----
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  581 ----
 .../javadoc-0.7.3/org/nlpcraft/model/NCIntent.html |  242 --
 .../org/nlpcraft/model/NCIntentContext.html        |  409 ---
 .../org/nlpcraft/model/NCIntentRef.html            |  241 --
 .../org/nlpcraft/model/NCIntentSkip.html           |  310 --
 .../org/nlpcraft/model/NCIntentTerm.html           |  235 --
 .../javadoc-0.7.3/org/nlpcraft/model/NCModel.html  |  460 ---
 .../org/nlpcraft/model/NCModelAdapter.html         |  454 ---
 .../org/nlpcraft/model/NCModelFactory.html         |  281 --
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1469 ---------
 .../org/nlpcraft/model/NCModelView.html            | 1703 -----------
 .../org/nlpcraft/model/NCProbeLifecycle.html       |  299 --
 .../org/nlpcraft/model/NCQueryContext.html         |  356 ---
 .../org/nlpcraft/model/NCQueryResult.html          |  554 ----
 .../org/nlpcraft/model/NCQueryState.html           |  389 ---
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCRequest.html              |  391 ---
 .../javadoc-0.7.3/org/nlpcraft/model/NCToken.html  |  578 ----
 .../javadoc-0.7.3/org/nlpcraft/model/NCUser.html   |  378 ---
 .../org/nlpcraft/model/class-use/NCCompany.html    |  173 --
 .../nlpcraft/model/class-use/NCConversation.html   |  173 --
 .../nlpcraft/model/class-use/NCCustomElement.html  |  196 --
 .../nlpcraft/model/class-use/NCCustomParser.html   |  173 --
 .../org/nlpcraft/model/class-use/NCCustomWord.html |  193 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCIntent.html     |  129 -
 .../nlpcraft/model/class-use/NCIntentContext.html  |  129 -
 .../org/nlpcraft/model/class-use/NCIntentRef.html  |  129 -
 .../org/nlpcraft/model/class-use/NCIntentSkip.html |  129 -
 .../org/nlpcraft/model/class-use/NCIntentTerm.html |  129 -
 .../org/nlpcraft/model/class-use/NCModel.html      |  283 --
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../nlpcraft/model/class-use/NCModelFactory.html   |  199 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../org/nlpcraft/model/class-use/NCModelView.html  |  228 --
 .../nlpcraft/model/class-use/NCProbeLifecycle.html |  203 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  204 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  231 --
 .../org/nlpcraft/model/class-use/NCQueryState.html |  198 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  180 --
 .../org/nlpcraft/model/class-use/NCRequest.html    |  192 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  258 --
 .../org/nlpcraft/model/class-use/NCUser.html       |  173 --
 .../model/factories/basic/NCBasicModelFactory.html |  372 ---
 .../basic/class-use/NCBasicModelFactory.html       |  129 -
 .../model/factories/basic/package-frame.html       |   21 -
 .../model/factories/basic/package-summary.html     |  158 -
 .../model/factories/basic/package-tree.html        |  142 -
 .../model/factories/basic/package-use.html         |  129 -
 .../factories/spring/NCSpringModelFactory.html     |  440 ---
 .../spring/class-use/NCSpringModelFactory.html     |  129 -
 .../model/factories/spring/package-frame.html      |   21 -
 .../model/factories/spring/package-summary.html    |  158 -
 .../model/factories/spring/package-tree.html       |  142 -
 .../model/factories/spring/package-use.html        |  129 -
 .../model/opencensus/NCBaseTraceExporter.html      |  309 --
 .../model/opencensus/NCJaegerExporter.html         |  317 --
 .../model/opencensus/NCPrometheusExporter.html     |  327 --
 .../opencensus/NCStackdriverStatsExporter.html     |  303 --
 .../opencensus/NCStackdriverTraceExporter.html     |  317 --
 .../model/opencensus/NCZipkinExporter.html         |  317 --
 .../opencensus/class-use/NCBaseTraceExporter.html  |  185 --
 .../opencensus/class-use/NCJaegerExporter.html     |  129 -
 .../opencensus/class-use/NCPrometheusExporter.html |  129 -
 .../class-use/NCStackdriverStatsExporter.html      |  129 -
 .../class-use/NCStackdriverTraceExporter.html      |  129 -
 .../opencensus/class-use/NCZipkinExporter.html     |  129 -
 .../nlpcraft/model/opencensus/package-frame.html   |   26 -
 .../nlpcraft/model/opencensus/package-summary.html |  188 --
 .../nlpcraft/model/opencensus/package-tree.html    |  150 -
 .../org/nlpcraft/model/opencensus/package-use.html |  166 -
 .../org/nlpcraft/model/package-frame.html          |   57 -
 .../org/nlpcraft/model/package-summary.html        |  346 ---
 .../org/nlpcraft/model/package-tree.html           |  205 --
 .../org/nlpcraft/model/package-use.html            |  325 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  550 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/probe/embedded/NCEmbeddedProbe.html   |  454 ---
 .../nlpcraft/probe/embedded/NCEmbeddedResult.html  |  500 ---
 .../probe/embedded/class-use/NCEmbeddedProbe.html  |  129 -
 .../probe/embedded/class-use/NCEmbeddedResult.html |  179 --
 .../org/nlpcraft/probe/embedded/package-frame.html |   25 -
 .../nlpcraft/probe/embedded/package-summary.html   |  176 --
 .../org/nlpcraft/probe/embedded/package-tree.html  |  146 -
 .../org/nlpcraft/probe/embedded/package-use.html   |  166 -
 docs/apis/javadoc-0.7.3/overview-frame.html        |   28 -
 docs/apis/javadoc-0.7.3/overview-summary.html      |  197 --
 docs/apis/javadoc-0.7.3/overview-tree.html         |  227 --
 docs/apis/javadoc-0.7.3/package-list               |    6 -
 .../javadoc-0.7.3/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.7.3/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.7.3/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.7.3/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.7.3/script.js                  |   30 -
 docs/apis/javadoc-0.7.3/serialized-form.html       |  181 --
 docs/apis/javadoc-0.7.3/stylesheet.css             |  697 -----
 docs/apis/javadoc-0.8.1/allclasses-frame.html      |   58 -
 docs/apis/javadoc-0.8.1/allclasses-noframe.html    |   58 -
 docs/apis/javadoc-0.8.1/constant-values.html       |  347 ---
 docs/apis/javadoc-0.8.1/deprecated-list.html       |  129 -
 docs/apis/javadoc-0.8.1/help-doc.html              |  234 --
 docs/apis/javadoc-0.8.1/index-all.html             | 1384 ---------
 docs/apis/javadoc-0.8.1/index.html                 |   76 -
 .../org/nlpcraft/model/NCCompany.html              |  378 ---
 .../org/nlpcraft/model/NCConversation.html         |  308 --
 .../org/nlpcraft/model/NCCustomElement.html        |  290 --
 .../org/nlpcraft/model/NCCustomParser.html         |  263 --
 .../org/nlpcraft/model/NCCustomWord.html           |  516 ----
 .../org/nlpcraft/model/NCElement.NCValue.html      |  267 --
 .../org/nlpcraft/model/NCElement.html              |  581 ----
 .../javadoc-0.8.1/org/nlpcraft/model/NCIntent.html |  242 --
 .../org/nlpcraft/model/NCIntentContext.html        |  409 ---
 .../org/nlpcraft/model/NCIntentRef.html            |  241 --
 .../org/nlpcraft/model/NCIntentSkip.html           |  310 --
 .../org/nlpcraft/model/NCIntentTerm.html           |  235 --
 .../javadoc-0.8.1/org/nlpcraft/model/NCModel.html  |  460 ---
 .../org/nlpcraft/model/NCModelAdapter.html         |  454 ---
 .../org/nlpcraft/model/NCModelFactory.html         |  281 --
 .../org/nlpcraft/model/NCModelFileAdapter.html     | 1469 ---------
 .../org/nlpcraft/model/NCModelView.html            | 1703 -----------
 .../org/nlpcraft/model/NCProbeLifecycle.html       |  299 --
 .../org/nlpcraft/model/NCQueryContext.html         |  356 ---
 .../org/nlpcraft/model/NCQueryResult.html          |  554 ----
 .../org/nlpcraft/model/NCQueryState.html           |  389 ---
 .../org/nlpcraft/model/NCRejection.html            |  308 --
 .../org/nlpcraft/model/NCRequest.html              |  391 ---
 .../javadoc-0.8.1/org/nlpcraft/model/NCToken.html  |  578 ----
 .../javadoc-0.8.1/org/nlpcraft/model/NCUser.html   |  378 ---
 .../org/nlpcraft/model/class-use/NCCompany.html    |  173 --
 .../nlpcraft/model/class-use/NCConversation.html   |  173 --
 .../nlpcraft/model/class-use/NCCustomElement.html  |  196 --
 .../nlpcraft/model/class-use/NCCustomParser.html   |  173 --
 .../org/nlpcraft/model/class-use/NCCustomWord.html |  193 --
 .../model/class-use/NCElement.NCValue.html         |  173 --
 .../org/nlpcraft/model/class-use/NCElement.html    |  177 --
 .../org/nlpcraft/model/class-use/NCIntent.html     |  129 -
 .../nlpcraft/model/class-use/NCIntentContext.html  |  129 -
 .../org/nlpcraft/model/class-use/NCIntentRef.html  |  129 -
 .../org/nlpcraft/model/class-use/NCIntentSkip.html |  129 -
 .../org/nlpcraft/model/class-use/NCIntentTerm.html |  129 -
 .../org/nlpcraft/model/class-use/NCModel.html      |  283 --
 .../nlpcraft/model/class-use/NCModelAdapter.html   |  173 --
 .../nlpcraft/model/class-use/NCModelFactory.html   |  199 --
 .../model/class-use/NCModelFileAdapter.html        |  129 -
 .../org/nlpcraft/model/class-use/NCModelView.html  |  228 --
 .../nlpcraft/model/class-use/NCProbeLifecycle.html |  203 --
 .../nlpcraft/model/class-use/NCQueryContext.html   |  204 --
 .../nlpcraft/model/class-use/NCQueryResult.html    |  231 --
 .../org/nlpcraft/model/class-use/NCQueryState.html |  198 --
 .../org/nlpcraft/model/class-use/NCRejection.html  |  180 --
 .../org/nlpcraft/model/class-use/NCRequest.html    |  192 --
 .../org/nlpcraft/model/class-use/NCToken.html      |  258 --
 .../org/nlpcraft/model/class-use/NCUser.html       |  173 --
 .../model/factories/basic/NCBasicModelFactory.html |  372 ---
 .../basic/class-use/NCBasicModelFactory.html       |  129 -
 .../model/factories/basic/package-frame.html       |   21 -
 .../model/factories/basic/package-summary.html     |  158 -
 .../model/factories/basic/package-tree.html        |  142 -
 .../model/factories/basic/package-use.html         |  129 -
 .../factories/spring/NCSpringModelFactory.html     |  440 ---
 .../spring/class-use/NCSpringModelFactory.html     |  129 -
 .../model/factories/spring/package-frame.html      |   21 -
 .../model/factories/spring/package-summary.html    |  158 -
 .../model/factories/spring/package-tree.html       |  142 -
 .../model/factories/spring/package-use.html        |  129 -
 .../model/opencensus/NCBaseTraceExporter.html      |  309 --
 .../model/opencensus/NCJaegerExporter.html         |  317 --
 .../model/opencensus/NCPrometheusExporter.html     |  327 --
 .../opencensus/NCStackdriverStatsExporter.html     |  303 --
 .../opencensus/NCStackdriverTraceExporter.html     |  317 --
 .../model/opencensus/NCZipkinExporter.html         |  317 --
 .../opencensus/class-use/NCBaseTraceExporter.html  |  185 --
 .../opencensus/class-use/NCJaegerExporter.html     |  129 -
 .../opencensus/class-use/NCPrometheusExporter.html |  129 -
 .../class-use/NCStackdriverStatsExporter.html      |  129 -
 .../class-use/NCStackdriverTraceExporter.html      |  129 -
 .../opencensus/class-use/NCZipkinExporter.html     |  129 -
 .../nlpcraft/model/opencensus/package-frame.html   |   26 -
 .../nlpcraft/model/opencensus/package-summary.html |  188 --
 .../nlpcraft/model/opencensus/package-tree.html    |  150 -
 .../org/nlpcraft/model/opencensus/package-use.html |  166 -
 .../org/nlpcraft/model/package-frame.html          |   57 -
 .../org/nlpcraft/model/package-summary.html        |  346 ---
 .../org/nlpcraft/model/package-tree.html           |  205 --
 .../org/nlpcraft/model/package-use.html            |  325 --
 .../org/nlpcraft/model/test/NCTestClient.html      |  348 ---
 .../nlpcraft/model/test/NCTestClientBuilder.html   |  550 ----
 .../nlpcraft/model/test/NCTestClientException.html |  233 --
 .../org/nlpcraft/model/test/NCTestResult.html      |  389 ---
 .../model/test/class-use/NCTestClient.html         |  173 --
 .../model/test/class-use/NCTestClientBuilder.html  |  204 --
 .../test/class-use/NCTestClientException.html      |  191 --
 .../model/test/class-use/NCTestResult.html         |  173 --
 .../org/nlpcraft/model/test/package-frame.html     |   30 -
 .../org/nlpcraft/model/test/package-summary.html   |  232 --
 .../org/nlpcraft/model/test/package-tree.html      |  160 -
 .../org/nlpcraft/model/test/package-use.html       |  181 --
 .../nlpcraft/probe/embedded/NCEmbeddedProbe.html   |  454 ---
 .../nlpcraft/probe/embedded/NCEmbeddedResult.html  |  500 ---
 .../probe/embedded/class-use/NCEmbeddedProbe.html  |  129 -
 .../probe/embedded/class-use/NCEmbeddedResult.html |  179 --
 .../org/nlpcraft/probe/embedded/package-frame.html |   25 -
 .../nlpcraft/probe/embedded/package-summary.html   |  176 --
 .../org/nlpcraft/probe/embedded/package-tree.html  |  146 -
 .../org/nlpcraft/probe/embedded/package-use.html   |  166 -
 docs/apis/javadoc-0.8.1/overview-frame.html        |   28 -
 docs/apis/javadoc-0.8.1/overview-summary.html      |  197 --
 docs/apis/javadoc-0.8.1/overview-tree.html         |  227 --
 docs/apis/javadoc-0.8.1/package-list               |    6 -
 .../javadoc-0.8.1/resources/sh/scripts/XRegExp.js  |  652 ----
 .../resources/sh/scripts/shAutoloader.js           |  114 -
 .../resources/sh/scripts/shBrushAS3.js             |   43 -
 .../resources/sh/scripts/shBrushAppleScript.js     |   59 -
 .../resources/sh/scripts/shBrushBash.js            |   43 -
 .../resources/sh/scripts/shBrushCSharp.js          |   49 -
 .../resources/sh/scripts/shBrushColdFusion.js      |   84 -
 .../resources/sh/scripts/shBrushCpp.js             |   81 -
 .../resources/sh/scripts/shBrushCss.js             |   75 -
 .../resources/sh/scripts/shBrushDelphi.js          |   39 -
 .../resources/sh/scripts/shBrushDiff.js            |   25 -
 .../resources/sh/scripts/shBrushErlang.js          |   36 -
 .../resources/sh/scripts/shBrushGroovy.js          |   51 -
 .../resources/sh/scripts/shBrushJScript.js         |   36 -
 .../resources/sh/scripts/shBrushJava.js            |   41 -
 .../resources/sh/scripts/shBrushJavaFX.js          |   42 -
 .../resources/sh/scripts/shBrushPerl.js            |   56 -
 .../resources/sh/scripts/shBrushPhp.js             |   72 -
 .../resources/sh/scripts/shBrushPlain.js           |   17 -
 .../resources/sh/scripts/shBrushPowerShell.js      |   58 -
 .../resources/sh/scripts/shBrushPython.js          |   48 -
 .../resources/sh/scripts/shBrushRuby.js            |   39 -
 .../resources/sh/scripts/shBrushSass.js            |   78 -
 .../resources/sh/scripts/shBrushScala.js           |   35 -
 .../resources/sh/scripts/shBrushSql.js             |   50 -
 .../resources/sh/scripts/shBrushVb.js              |   40 -
 .../resources/sh/scripts/shBrushXml.js             |   53 -
 .../javadoc-0.8.1/resources/sh/scripts/shCore.js   | 1702 -----------
 .../javadoc-0.8.1/resources/sh/scripts/shLegacy.js |  141 -
 .../javadoc-0.8.1/resources/sh/styles/shCore.css   |  210 --
 .../resources/sh/styles/shCoreDataLingvo.css       |  312 --
 .../resources/sh/styles/shCoreDefault.css          |  312 --
 .../resources/sh/styles/shCoreDjango.css           |  315 --
 .../resources/sh/styles/shCoreEclipse.css          |  323 --
 .../resources/sh/styles/shCoreEmacs.css            |  308 --
 .../resources/sh/styles/shCoreFadeToGrey.css       |  312 --
 .../resources/sh/styles/shCoreMDUltra.css          |  308 --
 .../resources/sh/styles/shCoreMidnight.css         |  308 --
 .../resources/sh/styles/shCoreRDark.css            |  308 --
 .../resources/sh/styles/shThemeDataLingvo.css      |  101 -
 .../resources/sh/styles/shThemeDefault.css         |  101 -
 .../resources/sh/styles/shThemeDjango.css          |  104 -
 .../resources/sh/styles/shThemeEclipse.css         |  112 -
 .../resources/sh/styles/shThemeEmacs.css           |   97 -
 .../resources/sh/styles/shThemeFadeToGrey.css      |  101 -
 .../resources/sh/styles/shThemeMDUltra.css         |   97 -
 .../resources/sh/styles/shThemeMidnight.css        |   97 -
 .../resources/sh/styles/shThemeRDark.css           |   97 -
 docs/apis/javadoc-0.8.1/script.js                  |   30 -
 docs/apis/javadoc-0.8.1/serialized-form.html       |  181 --
 docs/apis/javadoc-0.8.1/stylesheet.css             |  697 -----
 docs/apis/javadoc-0.8.2/stylesheet.css             |   38 +-
 docs/apis/latest/stylesheet.css                    |   38 +-
 docs/assets/css/style.scss                         |   39 +-
 docs/basic-concepts.html                           |   39 +-
 docs/blogs.html                                    |   39 +-
 ...ightswitch_with_natural_language_interface.html |  281 --
 ...-memory-maintaining-conversational-context.html |  381 ---
 .../why_natural_language_interface_is_hard.html    |  210 --
 ...\321\201\321\202\320\265\320\271_nlpcraft.html" |  295 --
 ...6\320\264\320\265\320\273\320\265\320\271.html" |  269 --
 docs/data-model.html                               |   43 +-
 docs/docs.html                                     |   39 +-
 docs/download.html                                 |   66 +-
 docs/examples/alarm_clock.html                     |   12 +-
 docs/examples/light_switch.html                    |   12 +-
 docs/examples/weather_bot.html                     |   12 +-
 docs/first-example.html                            |   39 +-
 docs/fonts/stylesheet.css                          |   21 +-
 docs/getting-started.html                          |   55 +-
 docs/index.html                                    |   54 +-
 docs/installation.html                             |   39 +-
 docs/integrations.html                             |   39 +-
 docs/intent-matching.html                          |   51 +-
 docs/legal.html                                    |  255 --
 docs/metrics-and-tracing.html                      |   39 +-
 docs/release-notes-0.1.0.html                      |   46 -
 docs/release-notes-0.2.0.html                      |   69 -
 docs/release-notes-0.3.0.html                      |   53 -
 docs/release-notes-0.4.0.html                      |   67 -
 docs/release-notes-0.5.0.html                      |   80 -
 docs/release-notes-0.5.1.html                      |   38 -
 docs/release-notes-0.6.0.html                      |  268 --
 docs/release-notes-0.7.0.html                      |  105 -
 docs/release-notes-0.7.1.html                      |   39 -
 docs/release-notes-0.7.2.html                      |   39 -
 docs/release-notes-0.7.3.html                      |  134 -
 docs/release-notes-0.8.1.html                      |   42 -
 docs/release-notes-0.8.2.html                      |    8 +-
 docs/server-and-probe.html                         |   73 +-
 docs/use-cases.html                                |   39 +-
 docs/using-rest.html                               |   45 +-
 javadoc/stylesheet.css                             |   38 +-
 openapi/README.md                                  |   14 +-
 openapi/nlpcraft_swagger.yml                       |    6 +-
 pom.xml                                            |   45 +-
 sql/mysql/database.sql                             |   38 +-
 sql/mysql/drop_schema.sql                          |   38 +-
 sql/mysql/schema.sql                               |   42 +-
 sql/oracle/database.sql                            |   38 +-
 sql/oracle/drop_schema.sql                         |   38 +-
 sql/oracle/schema.sql                              |   42 +-
 sql/postgres/database.sh                           |   41 +-
 sql/postgres/drop_schema.sql                       |   38 +-
 sql/postgres/schema.sql                            |   42 +-
 src/main/scala/org/nlpcraft/examples/README.md     |    9 +-
 .../scala/org/nlpcraft/examples/alarm/README.md    |   10 +-
 .../scala/org/nlpcraft/examples/echo/README.md     |   10 +-
 .../org/nlpcraft/examples/helloworld/README.md     |   10 +-
 .../org/nlpcraft/examples/lightswitch/README.md    |   10 +-
 .../scala/org/nlpcraft/examples/phone/README.md    |   10 +-
 .../scala/org/nlpcraft/examples/time/README.md     |   10 +-
 .../scala/org/nlpcraft/examples/weather/README.md  |   10 +-
 2167 files changed, 752 insertions(+), 563987 deletions(-)


[incubator-nlpcraft] 09/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 1eebd1ff2553cbfb8624f1603f36d2ec73d24c55
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 19:42:56 2020 +0300

    WIP.
---
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 27 ++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index eaae459..5396ae3 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -35,11 +35,17 @@ import scala.collection.{Map, Seq, mutable}
   * Sort enricher.
   */
 object NCSortEnricher extends NCProbeEnricher {
+    // Single words.
     private final val SORT =
         Seq("sort", "rank", "classify", "order", "arrange", "organize", "segment", "shuffle").map(NCNlpCoreManager.stem)
 
+    // Single words.
+    // Cannot be same as in SORT.
     private final val BY: Seq[String] = Seq("by", "on", "with").map(NCNlpCoreManager.stem)
 
+    // Multiple words.
+    // Cannot be same as in SORT and BY.
+    // Some words from chunks can be the same as SORT but cannot be same as BY.
     private final val ORDER = {
         val p = NCMacroParser()
 
@@ -57,6 +63,7 @@ object NCSortEnricher extends NCProbeEnricher {
 
     private final val TOK_ID = "nlpcraft:sort"
 
+    // TODO: DROP it.
     private final val SORT_TYPES = Seq(
         "nlpcraft:continent",
         "nlpcraft:subcontinent",
@@ -69,18 +76,20 @@ object NCSortEnricher extends NCProbeEnricher {
         "nlpcraft:num"
     )
 
+    // Elemens: SORT, BY, ORDER, x.
     // Note that SORT, BY, ORDER - are sets of words (not single words)
+    // x - means one or multiple words. x must be at least one for each line, maximum two.
     private final val SEQS =
         Seq(
-            s"x SORT BY x ORDER",
-            s"x SORT BY x",
-            s"SORT x BY x",
-            s"x SORT",
-            s"SORT x ORDER BY x",
-            s"SORT x",
-            s"ORDER SORT x BY x",
-            s"ORDER SORT x",
-            s"SORT x BY ORDER"
+            "x SORT BY x ORDER",
+            "x SORT BY x",
+            "SORT x BY x",
+            "x SORT",
+            "SORT x ORDER BY x",
+            "SORT x",
+            "ORDER SORT x BY x",
+            "ORDER SORT x",
+            "SORT x BY ORDER"
         )
 
     case class NoteData(note: String, indexes: Seq[Int])


[incubator-nlpcraft] 06/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit aa60ed85acdf7b0f4da84eebf6d438d0158511d6
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 15:54:10 2020 +0300

    WIP.
---
 .../nlp/enrichers/post/NCPostEnrichProcessor.scala     | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
index 998607f..e9fc986 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
@@ -228,13 +228,10 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
         unionStops(ns, notNlpTypes, history, idCache)
 
         val res =
-            Seq(
-                "nlpcraft:aggregation",
-                "nlpcraft:relation",
-                "nlpcraft:limit"
-            ).forall(t ⇒ fixIndexesReferences(t, ns, history) &&
+            Seq("nlpcraft:aggregation", "nlpcraft:relation", "nlpcraft:limit").
+                forall(t ⇒ fixIndexesReferences(t, ns, history)) &&
             fixIndexesReferencesList("nlpcraft:sort", "subjIndexes", "subjNotes", ns, history) &&
-            fixIndexesReferencesList("nlpcraft:sort", "byIndexes", "byNotes", ns, history))
+            fixIndexesReferencesList("nlpcraft:sort", "byIndexes", "byNotes", ns, history)
 
         if (res)
             // Validation (all indexes calculated well)
@@ -271,6 +268,7 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
                 }
             }).distinct
 
+
         /**
         Example:
              1. Sentence 'maximum x' (single element related function)
@@ -286,7 +284,7 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
           */
 
         types.size match {
-            case 0 ⇒ throw new AssertionError("Unexpected empty types")
+            case 0 ⇒ throw new AssertionError(s"Unexpected empty types [notesType=$notesType]")
             case 1 ⇒ types.head == notesType
             case _ ⇒
                 // Equal elements should be processed together with function element.
@@ -359,16 +357,14 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
                     val idxs: Seq[Seq[Int]] = n.data[java.util.List[java.util.List[Int]]](idxsField).asScala.map(_.asScala)
                     var fixed = idxs
 
-                    history.foreach { case (idxOld, idxNew) ⇒ fixed = fixed.map(_.map(i ⇒ if (i == idxOld) idxNew else i)) }
-
-                    fixed = fixed.distinct
+                    history.foreach { case (idxOld, idxNew) ⇒ fixed = fixed.map(_.map(i ⇒ if (i == idxOld) idxNew else i).distinct) }
 
                     if (idxs != fixed) {
                         n += idxsField → fixed.map(_.asJava).asJava.asInstanceOf[java.io.Serializable]
 
                         def x(seq: Seq[Seq[Int]]): String = s"[${seq.map(p ⇒ s"[${p.mkString(",")}]").mkString(", ")}]"
 
-                        logger.trace(s"`$noteType` note `indexes` fixed [old=${x(idxs)}}, new=${x(fixed)}]")
+                        logger.info(s"`$noteType` note `indexes` fixed [old=${x(idxs)}}, new=${x(fixed)}]")
                     }
                 case None ⇒ // No-op.
             }


[incubator-nlpcraft] 08/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 27573d89c8df267a7c3622553e34cbe4bd608918
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 19:30:50 2020 +0300

    WIP.
---
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 37 +++++++++++++++-------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 282736b..eaae459 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -196,21 +196,25 @@ object NCSortEnricher extends NCProbeEnricher {
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
         case class KeyWord(tokens: Seq[NCNlpSentenceToken], synonymIndex: Int) {
             // Added for debug reasons.
-            override def toString = tokens.map(_.origText).mkString(" ")
+            override def toString = s"${tokens.map(_.origText).mkString(" ")} [${tokens.map(_.index).mkString(",")}]"
         }
 
         def get0(keyStems: Seq[String], toks: Seq[NCNlpSentenceToken]): Option[KeyWord] = {
             require(keyStems.nonEmpty)
 
-            val maxWords = keyStems.map(_.count(_ == ' ')).max + 1
+            if (toks.nonEmpty) {
+                val maxWords = keyStems.map(_.count(_ == ' ')).max + 1
 
-            (1 to maxWords).reverse.flatMap(i ⇒
-                toks.sliding(i).
-                    map(toks ⇒ toks.map(_.stem).mkString(" ") → toks).toMap.
-                    flatMap { case (stem, stemToks) ⇒
-                        if (keyStems.contains(stem)) Some(KeyWord(stemToks, keyStems.indexOf(stem))) else None
-                    }.toStream.headOption
-            ).toStream.headOption
+                (1 to maxWords).reverse.flatMap(i ⇒
+                    toks.sliding(i).
+                        map(toks ⇒ toks.map(_.stem).mkString(" ") → toks).toMap.
+                        flatMap { case (stem, stemToks) ⇒
+                            if (keyStems.contains(stem)) Some(KeyWord(stemToks, keyStems.indexOf(stem))) else None
+                        }.toStream.headOption
+                ).toStream.headOption
+            }
+            else
+                None
         }
 
         case class KeyWordsHolder(sort: KeyWord, by: Option[KeyWord], order: Option[KeyWord]) {
@@ -237,11 +241,20 @@ object NCSortEnricher extends NCProbeEnricher {
                 case Some(sort) ⇒
                     val orderOpt = get0(ORDER.unzip._1, toks)
 
-                    def mkHolder: Option[KeyWordsHolder] = Some(KeyWordsHolder(sort, get0(BY, toks), orderOpt))
+                    def mkHolder(sort: KeyWord): Option[KeyWordsHolder] = Some(KeyWordsHolder(sort, get0(BY, toks), orderOpt))
 
                     orderOpt match {
-                        case Some(order) ⇒ if (order.tokens.intersect(sort.tokens).isEmpty) mkHolder else None
-                        case None ⇒ mkHolder
+                        case Some(order) ⇒
+                            // ORDER and SORT can contains same words (See validation method.)
+                            if (order.tokens.intersect(sort.tokens).isEmpty)
+                                mkHolder(sort)
+                            else {
+                                get0(SORT, toks.filter(t ⇒ !order.tokens.contains(t))) match {
+                                    case Some(newSort) ⇒ mkHolder(newSort)
+                                    case None ⇒ None
+                                }
+                            }
+                        case None ⇒ mkHolder(sort)
                     }
                 case None ⇒ None
             }


[incubator-nlpcraft] 04/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit c73bf59544ded0fbf80f820d174bba52cb30c79f
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Thu Mar 12 16:38:04 2020 +0300

    WIP.
---
 .../nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala  |  24 ++++-
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 108 ++++++++++++---------
 2 files changed, 83 insertions(+), 49 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
index c632c2e..d2b1a4a 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
@@ -53,6 +53,8 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
             Set.empty
         else {
             def getCommon(sortedToks: Seq[NCNlpSentenceToken]): Set[String] = {
+                require(sortedToks.nonEmpty)
+
                 val h = sortedToks.head
                 val l = sortedToks.last
 
@@ -64,12 +66,16 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
                 notes.filter(!_.isNlp).filter(n ⇒ h.index == n.tokenFrom && l.index == n.tokenTo).map(_.noteType).toSet
             }
 
-            val sortedToks = toks.sortBy(_.index)
+            var sortedToks = toks.sortBy(_.index)
 
             var res = getCommon(sortedToks)
 
-            if (res.isEmpty)
-                res = getCommon(sortedToks.filter(!_.isStopWord))
+            if (res.isEmpty) {
+                sortedToks = sortedToks.filter(!_.isStopWord)
+
+                if (sortedToks.nonEmpty)
+                    res = getCommon(sortedToks)
+            }
 
             if (res.isEmpty) Set.empty else res
         }
@@ -83,7 +89,10 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
       */
     protected def hasReference(typ: String, refNoteName: String, refNoteVal: String, matched: Seq[NCNlpSentenceToken]): Boolean =
         matched.forall(t ⇒
-            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n(refNoteName).asInstanceOf[String] == refNoteVal)
+            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n.get(refNoteName) match {
+                case Some(s) ⇒ s.asInstanceOf[String] == refNoteVal
+                case None ⇒ false
+            })
         )
 
     /**
@@ -95,7 +104,12 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
       */
     protected def hasReferences(typ: String, refNoteName: String, refNoteVals: Seq[String], matched: Seq[NCNlpSentenceToken]): Boolean =
         matched.forall(t ⇒
-            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n(refNoteName).asInstanceOf[java.util.List[String]].asScala == refNoteVals)
+            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒
+                n.get(refNoteName) match {
+                    case Some(s) ⇒ s.asInstanceOf[java.util.List[String]].asScala == refNoteVals
+                    case None ⇒ false
+                }
+            )
         )
 
     /**
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 4351213..ad426b5 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -129,6 +129,19 @@ object NCSortEnricher extends NCProbeEnricher {
     }
 
     /**
+      * Return flag which indicates are token contiguous or not.
+      *
+      * @param toks Tokens.
+      * @param tok1Idx First token index.
+      * @param tok2Idx Second token index.
+      */
+    private def contiguous(toks: Seq[NCNlpSentenceToken], tok1Idx: Int, tok2Idx: Int): Boolean = {
+        val between = toks.filter(t ⇒ t.index > tok1Idx && t.index < tok2Idx)
+
+        between.isEmpty || between.forall(_.isStopWord)
+    }
+
+    /**
       * [Token] -> [NoteData]
       * [Token(A, B), Token(A), Token(C, D), Token(C, D, X), Token(Z)] ⇒
       * [ [A (0, 1), C (2, 3), Z (4)], [A (0, 1), D (2, 3), Z (4) ] ]
@@ -136,30 +149,23 @@ object NCSortEnricher extends NCProbeEnricher {
       * @param toks
       */
     private def split(toks: Seq[NCNlpSentenceToken]): Seq[Seq[NoteData]] = {
-        val all: Seq[NoteData] = toks.
-            flatten.
-            filter(!_.isNlp).
-            map(n ⇒ NoteData(n.noteType, n.tokenFrom to n.tokenTo)).
-            sortBy(_.indexes.head)
+        val all =
+            toks.flatten.filter(!_.isNlp).map(n ⇒ NoteData(n.noteType, n.tokenFrom to n.tokenTo)).sortBy(_.indexes.head).distinct
 
         if (all.nonEmpty) {
-            val first = all.head.indexes.head
-            val last = all.last.indexes.last
-
             val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
 
             def fill(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
                 seq += nd
 
                 all.
-                    filter(p ⇒ nd.indexes.last < p.indexes.head  && {
-                        val between = toks.slice(nd.indexes.last, p.indexes.head - 1)
-
-                        between.isEmpty || between.forall(_.isStopWord)
-                    }).
+                    filter(p ⇒ nd.indexes.last < p.indexes.head && contiguous(toks, nd.indexes.last, p.indexes.head)).
                     foreach(fill(_, mutable.ArrayBuffer.empty[NoteData] ++ seq.clone()))
 
-                if (seq.nonEmpty && seq.head.indexes.head == first && seq.last.indexes.last == last)
+                if (seq.nonEmpty &&
+                    seq.head.indexes.head == all.head.indexes.head &&
+                    seq.last.indexes.last == all.last.indexes.last
+                )
                     res += seq
             }
 
@@ -171,6 +177,10 @@ object NCSortEnricher extends NCProbeEnricher {
             Seq.empty
     }
 
+    /**
+      *
+      * @param toks
+      */
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
         case class KeyWord(tokens: Seq[NCNlpSentenceToken], synonymIndex: Int) {
             // Added for tests reasons.
@@ -219,37 +229,47 @@ object NCSortEnricher extends NCProbeEnricher {
         hOpt match {
             case Some(h) ⇒
                 val others = toks.filter(t ⇒ !h.all.contains(t))
-                val othersWithoutStops = others.filter(!_.isStopWord)
-
-                if (
-                    othersWithoutStops.nonEmpty &&
-                    othersWithoutStops.forall(t ⇒ t.exists(n ⇒ n.isUser || SORT_TYPES.contains(n.noteType))) &&
-                    SEQS.contains(
-                        // It removes duplicates (`SORT x x ORDER x x x` converts to `SORT x ORDER x`)
-                        toks.map(t ⇒
-                            h.getKeyWordType(t).getOrElse("x")).
-                            foldLeft("")((x, y) ⇒ if (x.endsWith(y)) x else s"$x $y").trim
-                    )
-                ) {
-                    val subj = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
-                    val by = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
-
-                    others.foreach(t ⇒ (if (subj.isEmpty || subj.last.index + 1 == t.index) subj else by) += t)
-
-                    require(subj.nonEmpty)
-
-                    Some(
-                        Match(
-                            asc = h.order match {
-                                case Some(order) ⇒ Some(ORDER(order.synonymIndex)._2)
-                                case None ⇒ None
-                            },
-                            main = h.sort.tokens,
-                            stop = h.byTokens ++ h.orderTokens,
-                            subjSeq = split(subj),
-                            bySeq = split(by)
+
+                if (others.nonEmpty) {
+                    val othersRefs = others.filter(t ⇒ t.exists(n ⇒ n.isUser || SORT_TYPES.contains(n.noteType)))
+
+                    if (
+                        othersRefs.nonEmpty &&
+                        others.filter(p ⇒ !othersRefs.contains(p)).forall(_.isStopWord) &&
+                        SEQS.contains(
+                            // It removes duplicates (`SORT x x ORDER x x x` converts to `SORT x ORDER x`)
+                            toks.map(t ⇒
+                                h.getKeyWordType(t).getOrElse("x")).
+                                foldLeft("")((x, y) ⇒ if (x.endsWith(y)) x else s"$x $y").trim
+                        )
+                    ) {
+                        val subj = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
+                        val by = mutable.ArrayBuffer.empty[NCNlpSentenceToken]
+
+                        others.foreach(t ⇒
+                            if (subj.isEmpty || by.isEmpty && contiguous(others, subj.last.index, t.index))
+                                subj += t
+                            else
+                                by += t
+                        )
+
+                        require(subj.nonEmpty)
+
+                        Some(
+                            Match(
+                                asc = h.order match {
+                                    case Some(order) ⇒ Some(ORDER(order.synonymIndex)._2)
+                                    case None ⇒ None
+                                },
+                                main = h.sort.tokens,
+                                stop = h.byTokens ++ h.orderTokens,
+                                subjSeq = split(subj),
+                                bySeq = split(by)
+                            )
                         )
-                    )
+                    }
+                    else
+                        None
                 }
                 else
                     None


[incubator-nlpcraft] 10/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit b7fca7ba1e1745106188947e9d1eae9083915dba
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 21:38:41 2020 +0300

    WIP.
---
 .../org/nlpcraft/model/impl/NCTokenLogger.scala    | 23 ++++++++--------------
 .../nlp/enrichers/post/NCPostEnrichProcessor.scala | 11 +++++++----
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 19 +++++++++++-------
 3 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala b/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
index 2968839..1de7497 100644
--- a/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
+++ b/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
@@ -405,8 +405,8 @@ object NCTokenLogger extends LazyLogging {
                 opt
             }).mkString("|")
 
-            def getIndexes: String = {
-                val idxs: java.util.List[String] = get("indexes")
+            def getIndexes(name: String): String = {
+                val idxs: java.util.List[String] = get(name)
 
                 idxs.asScala.mkString(", ")
             }
@@ -456,23 +456,18 @@ object NCTokenLogger extends LazyLogging {
                             val t = mkString("type")
                             val note = mkString("note")
 
-                            s"type=$t, indexes=[$getIndexes], note=$note"
+                            s"type=$t, indexes=[${getIndexes("indexes")}], note=$note"
 
                         case "nlpcraft:relation" ⇒
                             val t = mkString("type")
                             val note = mkString("note")
 
-                            s"type=$t, indexes=[$getIndexes], note=$note"
+                            s"type=$t, indexes=[${getIndexes("indexes")}], note=$note"
 
                         case "nlpcraft:sort" ⇒
-                            def n2s(l: java.util.List[String]): String = l.asScala.mkString(", ")
-                            def i2s(l: java.util.List[java.util.List[Int]]): String =
-                                l.asScala.map(_.asScala).map(p ⇒ s"[${p.mkString(", ")}]").mkString(", ")
+                            def x(l: java.util.List[String]): String = l.asScala.mkString(", ")
 
-                            val subjNotes: java.util.List[String] = get("subjnotes")
-                            val subjIndexes: java.util.List[java.util.List[Int]] = get("subjindexes")
-
-                            var s = s"subjNotes=${n2s(subjNotes)}, subjIndexes=[${i2s(subjIndexes)}]"
+                            var s = s"subjNotes=${x(get("subjnotes"))}, subjIndexes=[${getIndexes("subjindexes")}]"
 
                             if (has("asc"))
                                 s = s"$s, asc=${get("asc")}"
@@ -481,9 +476,7 @@ object NCTokenLogger extends LazyLogging {
 
                             byNotesOpt match {
                                 case Some(byNotes) ⇒
-                                    val byIndexes: java.util.List[java.util.List[Int]] = get("byindexes")
-
-                                    s = s"$s, byNotes=${n2s(byNotes)}, byIndexes=[${i2s(byIndexes)}]"
+                                    s = s"$s, byNotes=${x(byNotes)}, byIndexes=[${getIndexes("byindexes")}]"
                                 case None ⇒ // No-op.
                             }
 
@@ -492,7 +485,7 @@ object NCTokenLogger extends LazyLogging {
                             val limit = mkDouble3("limit")
                             val note = mkString("note")
 
-                            var s = s"limit=$limit, indexes=[$getIndexes], note=$note"
+                            var s = s"limit=$limit, indexes=[${getIndexes("indexes")}], note=$note"
 
                             if (has("asc"))
                                 s = s"$s, asc=${get("asc")}"
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
index e9fc986..4cca19e 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
@@ -360,25 +360,28 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
                     history.foreach { case (idxOld, idxNew) ⇒ fixed = fixed.map(_.map(i ⇒ if (i == idxOld) idxNew else i).distinct) }
 
                     if (idxs != fixed) {
-                        n += idxsField → fixed.map(_.asJava).asJava.asInstanceOf[java.io.Serializable]
+                        fixed.foreach(p ⇒ require(p.size == 1))
+
+                        // Fix double dimension array to one dimension.
+                        n += idxsField → fixed.map(_.head).asJava.asInstanceOf[java.io.Serializable]
 
                         def x(seq: Seq[Seq[Int]]): String = s"[${seq.map(p ⇒ s"[${p.mkString(",")}]").mkString(", ")}]"
 
-                        logger.info(s"`$noteType` note `indexes` fixed [old=${x(idxs)}}, new=${x(fixed)}]")
+                        logger.trace(s"`$noteType` note `indexes` fixed [old=${x(idxs)}}, new=${x(fixed)}]")
                     }
                 case None ⇒ // No-op.
             }
         )
 
         ns.flatMap(_.getNotes(noteType)).forall(rel ⇒
-            rel.dataOpt[java.util.List[java.util.List[Int]]](idxsField) match {
+            rel.dataOpt[java.util.List[Int]](idxsField) match {
                 case Some(idxsList) ⇒
                     val notesTypes = rel.data[util.List[String]](noteField)
 
                     require(idxsList.size() == notesTypes.size())
 
                     idxsList.asScala.zip(notesTypes.asScala).forall {
-                        case (idxs, notesType) ⇒ checkRelation(ns, idxs.asScala, notesType, rel.id)
+                        case (idxs, notesType) ⇒ checkRelation(ns, Seq(idxs), notesType, rel.id)
                     }
                 case None ⇒ true
             }
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 5396ae3..59628c6 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -61,6 +61,8 @@ object NCSortEnricher extends NCProbeEnricher {
         ).flatMap { case (txt, asc) ⇒ p.expand(txt).map(p ⇒ NCNlpCoreManager.stem(p) → asc ) }
     }
 
+    private val STEM_AND = NCNlpCoreManager.stem("and")
+
     private final val TOK_ID = "nlpcraft:sort"
 
     // TODO: DROP it.
@@ -159,7 +161,9 @@ object NCSortEnricher extends NCProbeEnricher {
       */
     private def split(toks: Seq[NCNlpSentenceToken]): Seq[Seq[NoteData]] = {
         val all =
-            toks.flatten.filter(!_.isNlp).map(n ⇒ NoteData(n.noteType, n.tokenFrom to n.tokenTo)).sortBy(_.indexes.head).distinct
+            toks.flatten.
+                filter(!_.isNlp).map(n ⇒ NoteData(n.noteType, n.tokenFrom to n.tokenTo)).
+                sortBy(_.indexes.head).distinct
 
         if (all.nonEmpty) {
             val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
@@ -173,7 +177,7 @@ object NCSortEnricher extends NCProbeEnricher {
             def contiguous(tok1Idx: Int, tok2Idx: Int): Boolean = {
                 val between = toks.filter(t ⇒ t.index > tok1Idx && t.index < tok2Idx)
 
-                between.isEmpty || between.forall(_.isStopWord)
+                between.isEmpty || between.forall(p ⇒ p.isStopWord || p.stem == STEM_AND)
             }
 
             def fill(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
@@ -204,14 +208,16 @@ object NCSortEnricher extends NCProbeEnricher {
       */
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
         case class KeyWord(tokens: Seq[NCNlpSentenceToken], synonymIndex: Int) {
+            require(tokens.nonEmpty)
+
             // Added for debug reasons.
             override def toString = s"${tokens.map(_.origText).mkString(" ")} [${tokens.map(_.index).mkString(",")}]"
         }
 
-        def get0(keyStems: Seq[String], toks: Seq[NCNlpSentenceToken]): Option[KeyWord] = {
-            require(keyStems.nonEmpty)
-
+        def get0(keyStems: Seq[String], toks: Seq[NCNlpSentenceToken]): Option[KeyWord] =
             if (toks.nonEmpty) {
+                require(keyStems.nonEmpty)
+
                 val maxWords = keyStems.map(_.count(_ == ' ')).max + 1
 
                 (1 to maxWords).reverse.flatMap(i ⇒
@@ -224,7 +230,6 @@ object NCSortEnricher extends NCProbeEnricher {
             }
             else
                 None
-        }
 
         case class KeyWordsHolder(sort: KeyWord, by: Option[KeyWord], order: Option[KeyWord]) {
             lazy val byTokens = by.toSeq.flatMap(_.tokens)
@@ -277,7 +282,7 @@ object NCSortEnricher extends NCProbeEnricher {
 
                     if (
                         othersRefs.nonEmpty &&
-                        others.filter(p ⇒ !othersRefs.contains(p)).forall(_.isStopWord) &&
+                        others.filter(p ⇒ !othersRefs.contains(p)).forall(p ⇒ p.isStopWord || p.stem == STEM_AND) &&
                         SEQS.contains(
                             // It removes duplicates (`SORT x x ORDER x x x` converts to `SORT x ORDER x`)
                             toks.map(t ⇒


[incubator-nlpcraft] 07/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 177669c062f9d1d26d6c9444fdea2367b2c69c43
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 17:39:10 2020 +0300

    WIP.
---
 .../common/nlp/core/NCNlpCoreManager.scala         |  4 +-
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 68 +++++++++++++---------
 2 files changed, 41 insertions(+), 31 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/common/nlp/core/NCNlpCoreManager.scala b/src/main/scala/org/nlpcraft/common/nlp/core/NCNlpCoreManager.scala
index b9dfa1f..87e5203 100644
--- a/src/main/scala/org/nlpcraft/common/nlp/core/NCNlpCoreManager.scala
+++ b/src/main/scala/org/nlpcraft/common/nlp/core/NCNlpCoreManager.scala
@@ -72,7 +72,7 @@ object NCNlpCoreManager extends NCService {
       */
     def stem(words: String): String = {
         val seq = tokenizer.tokenize(words).map(p ⇒ p → NCNlpPorterStemmer.stem(p.token))
-     
+
         seq.zipWithIndex.map { case ((tok, stem), idx) ⇒
             idx match {
                 case 0 ⇒ stem
@@ -80,7 +80,7 @@ object NCNlpCoreManager extends NCService {
                 case _ ⇒ if (seq(idx - 1)._1.to + 1 < tok.from) s" $stem"
                 else stem
             }
-        }.mkString("")
+        }.mkString(" ")
     }
 
     /**
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 6ea5fb0..282736b 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -52,7 +52,7 @@ object NCSortEnricher extends NCProbeEnricher {
             "desc" → false,
             "{in|by|from} {top down|descending} {order|way|fashion|*}" → false,
             "{in|by|from} {bottom up|ascending} {order|way|fashion|*}" → true
-        ).flatMap { case (txt, asc) ⇒ p.expand(txt).map(p ⇒ NCNlpCoreManager.stem(p) → asc) }
+        ).flatMap { case (txt, asc) ⇒ p.expand(txt).map(p ⇒ NCNlpCoreManager.stem(p) → asc ) }
     }
 
     private final val TOK_ID = "nlpcraft:sort"
@@ -112,20 +112,24 @@ object NCSortEnricher extends NCProbeEnricher {
       *
       */
     private def validate() {
+        // Not duplicated.
         require(SORT.size + BY.size + ORDER.size == (SORT ++ BY ++ ORDER.unzip._1).distinct.size)
 
-        val seq1 = SORT.flatMap(_.split(" "))
-        val seq2 = BY.flatMap(_.split(" "))
-        val seq3 = ORDER.map(_._1).flatMap(_.split(" "))
+        // Single words.
+        require(!SORT.exists(_.contains(" ")))
+        require(!BY.exists(_.contains(" ")))
 
-        require(seq1.size == seq1.distinct.size)
-        require(seq2.size == seq2.distinct.size)
-        require(seq3.size == seq3.distinct.size)
+        // Different words.
+        require(SORT.intersect(BY).isEmpty)
+        require(SORT.intersect(ORDER.unzip._1).isEmpty)
+        require(BY.intersect(ORDER.unzip._1).isEmpty)
 
-        require(seq1.intersect(seq2).isEmpty)
-        require(seq1.intersect(seq3).isEmpty)
-        require(seq2.intersect(seq3).isEmpty)
+        val ordersSeq: Seq[Seq[String]] = ORDER.unzip._1.map(_.split(" ").toSeq)
 
+        // ORDER doens't contains words fron BY (It can contains words from SORT)
+        require(!BY.exists(p ⇒ ordersSeq.contains(p)))
+
+        // Right order of keywords and references.
         SEQS.map(_.split(" ")).foreach(seq ⇒ {
             require(seq.forall(p ⇒ p == "SORT" || p == "ORDER" || p == "BY" || p == "x"))
 
@@ -139,23 +143,9 @@ object NCSortEnricher extends NCProbeEnricher {
     }
 
     /**
-      * Return flag which indicates are token contiguous or not.
-      *
-      * @param toks Tokens.
-      * @param tok1Idx First token index.
-      * @param tok2Idx Second token index.
-      */
-    private def contiguous(toks: Seq[NCNlpSentenceToken], tok1Idx: Int, tok2Idx: Int): Boolean = {
-        val between = toks.filter(t ⇒ t.index > tok1Idx && t.index < tok2Idx)
-
-        between.isEmpty || between.forall(_.isStopWord)
-    }
-
-    /**
       * [Token] -> [NoteData]
       * [Token(A, B), Token(A), Token(C, D), Token(C, D, X), Token(Z)] ⇒
       * [ [A (0, 1), C (2, 3), Z (4)], [A (0, 1), D (2, 3), Z (4) ] ]
-      *
       * @param toks
       */
     private def split(toks: Seq[NCNlpSentenceToken]): Seq[Seq[NoteData]] = {
@@ -165,11 +155,23 @@ object NCSortEnricher extends NCProbeEnricher {
         if (all.nonEmpty) {
             val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
 
+            /**
+              * Return flag which indicates are token contiguous or not.
+              *
+              * @param tok1Idx First token index.
+              * @param tok2Idx Second token index.
+              */
+            def contiguous(tok1Idx: Int, tok2Idx: Int): Boolean = {
+                val between = toks.filter(t ⇒ t.index > tok1Idx && t.index < tok2Idx)
+
+                between.isEmpty || between.forall(_.isStopWord)
+            }
+
             def fill(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
                 seq += nd
 
                 all.
-                    filter(p ⇒ nd.indexes.last < p.indexes.head && contiguous(toks, nd.indexes.last, p.indexes.head)).
+                    filter(p ⇒ nd.indexes.last < p.indexes.head && contiguous(nd.indexes.last, p.indexes.head)).
                     foreach(fill(_, mutable.ArrayBuffer.empty[NoteData] ++ seq.clone()))
 
                 if (seq.nonEmpty &&
@@ -193,7 +195,7 @@ object NCSortEnricher extends NCProbeEnricher {
       */
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
         case class KeyWord(tokens: Seq[NCNlpSentenceToken], synonymIndex: Int) {
-            // Added for tests reasons.
+            // Added for debug reasons.
             override def toString = tokens.map(_.origText).mkString(" ")
         }
 
@@ -226,13 +228,21 @@ object NCSortEnricher extends NCProbeEnricher {
                 else
                     None
 
-            // Added for tests reasons.
-            override def toString = s"Sort: $sort, by: ${by.toSeq.mkString(",")}, order: ${order.toSeq.mkString(",")}"
+            // Added for debug reasons.
+            override def toString = s"Sort: [$sort], by: [${by.toSeq.mkString(",")}], order: [${order.toSeq.mkString(",")}]"
         }
 
         val hOpt: Option[KeyWordsHolder] =
             get0(SORT, toks) match {
-                case Some(sort) ⇒ Some(KeyWordsHolder(sort, get0(BY, toks), get0(ORDER.unzip._1, toks)))
+                case Some(sort) ⇒
+                    val orderOpt = get0(ORDER.unzip._1, toks)
+
+                    def mkHolder: Option[KeyWordsHolder] = Some(KeyWordsHolder(sort, get0(BY, toks), orderOpt))
+
+                    orderOpt match {
+                        case Some(order) ⇒ if (order.tokens.intersect(sort.tokens).isEmpty) mkHolder else None
+                        case None ⇒ mkHolder
+                    }
                 case None ⇒ None
             }
 


[incubator-nlpcraft] 11/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 1970603c7a7f49bc4935daa2d71b59af6b1f34ea
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Fri Mar 13 21:54:09 2020 +0300

    WIP.
---
 .../aggregation/NCAggregationEnricher.scala        | 24 +++-------------------
 .../mgrs/nlp/enrichers/limit/NCLimitEnricher.scala | 12 +----------
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 15 +-------------
 3 files changed, 5 insertions(+), 46 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
index 6fa6a2a..b9f4afd 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
@@ -42,18 +42,6 @@ object NCAggregationEnricher extends NCProbeEnricher {
     )
     private final val TOK_ID = "nlpcraft:aggregation"
 
-    private final val AGGR_TYPES = Seq(
-        "nlpcraft:continent",
-        "nlpcraft:subcontinent",
-        "nlpcraft:country",
-        "nlpcraft:metro",
-        "nlpcraft:region",
-        "nlpcraft:city",
-        "nlpcraft:coordinate",
-        "nlpcraft:date",
-        "nlpcraft:num"
-    )
-
     @volatile private var FUNCS: Map[String, String] = _
 
     /**
@@ -123,23 +111,17 @@ object NCAggregationEnricher extends NCProbeEnricher {
 
     /**
       *
-      * @param n
-      */
-    private def isRefCandidate(n: NCNlpSentenceNote): Boolean = n.isUser || AGGR_TYPES.contains(n.noteType)
-
-    /**
-      *
       * @param toks
       */
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
-        val matchedCands = toks.takeWhile(!_.exists(isRefCandidate))
+        val matchedCands = toks.takeWhile(!_.exists(_.isUser))
 
         def try0(stem: String): Option[Match] =
             FUNCS.get(stem) match {
                 case Some(funcType) ⇒
                     val afterMatched = toks.drop(matchedCands.length)
-                    val refCands = afterMatched.filter(_.exists(isRefCandidate))
-                    val commonNotes = getCommonNotes(refCands, Some(isRefCandidate))
+                    val refCands = afterMatched.filter(_.exists(_.isUser))
+                    val commonNotes = getCommonNotes(refCands, Some((n: NCNlpSentenceNote) ⇒ n.isUser))
 
                     val ok =
                         commonNotes.nonEmpty &&
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
index bcde957..8d739c7 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
@@ -45,16 +45,6 @@ object NCLimitEnricher extends NCProbeEnricher {
 
     private final val TOK_ID = "nlpcraft:limit"
 
-    private final val LIMIT_TYPES = Seq(
-        "nlpcraft:continent",
-        "nlpcraft:subcontinent",
-        "nlpcraft:country",
-        "nlpcraft:metro",
-        "nlpcraft:region",
-        "nlpcraft:city",
-        "nlpcraft:date"
-    )
-
     /**
       * Group of neighbouring tokens. All of them numbers or all of the not.
       *
@@ -249,7 +239,7 @@ object NCLimitEnricher extends NCProbeEnricher {
         groupsMap: Map[Seq[NCNlpSentenceToken], GroupsHolder],
         toks: Seq[NCNlpSentenceToken]
     ): Option[Match] = {
-        val refCands = toks.filter(t ⇒ t.exists(n ⇒ n.isUser || LIMIT_TYPES.contains(n.noteType)))
+        val refCands = toks.filter(_.exists(_.isUser))
         val commonNotes = getCommonNotes(refCands)
 
         if (commonNotes.nonEmpty) {
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 59628c6..973fb9c 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -65,19 +65,6 @@ object NCSortEnricher extends NCProbeEnricher {
 
     private final val TOK_ID = "nlpcraft:sort"
 
-    // TODO: DROP it.
-    private final val SORT_TYPES = Seq(
-        "nlpcraft:continent",
-        "nlpcraft:subcontinent",
-        "nlpcraft:country",
-        "nlpcraft:metro",
-        "nlpcraft:region",
-        "nlpcraft:city",
-        "nlpcraft:coordinate",
-        "nlpcraft:date",
-        "nlpcraft:num"
-    )
-
     // Elemens: SORT, BY, ORDER, x.
     // Note that SORT, BY, ORDER - are sets of words (not single words)
     // x - means one or multiple words. x must be at least one for each line, maximum two.
@@ -278,7 +265,7 @@ object NCSortEnricher extends NCProbeEnricher {
                 val others = toks.filter(t ⇒ !h.all.contains(t))
 
                 if (others.nonEmpty) {
-                    val othersRefs = others.filter(t ⇒ t.exists(n ⇒ n.isUser || SORT_TYPES.contains(n.noteType)))
+                    val othersRefs = others.filter(_.exists(_.isUser))
 
                     if (
                         othersRefs.nonEmpty &&


[incubator-nlpcraft] 02/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit b53b17cd9aa9adc2376f0f0b7a87173caa31893d
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Thu Mar 12 12:36:33 2020 +0300

    WIP.
---
 .../org/nlpcraft/model/impl/NCTokenLogger.scala    |  24 +++-
 .../nlp/enrichers/post/NCPostEnrichProcessor.scala | 145 +++++++++++++++------
 2 files changed, 124 insertions(+), 45 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala b/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
index e6b603f..2968839 100644
--- a/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
+++ b/src/main/scala/org/nlpcraft/model/impl/NCTokenLogger.scala
@@ -465,11 +465,29 @@ object NCTokenLogger extends LazyLogging {
                             s"type=$t, indexes=[$getIndexes], note=$note"
 
                         case "nlpcraft:sort" ⇒
-                            val asc: Boolean = get("asc")
-                            val note = mkString("note")
+                            def n2s(l: java.util.List[String]): String = l.asScala.mkString(", ")
+                            def i2s(l: java.util.List[java.util.List[Int]]): String =
+                                l.asScala.map(_.asScala).map(p ⇒ s"[${p.mkString(", ")}]").mkString(", ")
+
+                            val subjNotes: java.util.List[String] = get("subjnotes")
+                            val subjIndexes: java.util.List[java.util.List[Int]] = get("subjindexes")
+
+                            var s = s"subjNotes=${n2s(subjNotes)}, subjIndexes=[${i2s(subjIndexes)}]"
+
+                            if (has("asc"))
+                                s = s"$s, asc=${get("asc")}"
 
-                            s"asc=$asc, indexes=[$getIndexes], note=$note"
+                            val byNotesOpt: Option[java.util.List[String]] = getOpt("bynotes")
 
+                            byNotesOpt match {
+                                case Some(byNotes) ⇒
+                                    val byIndexes: java.util.List[java.util.List[Int]] = get("byindexes")
+
+                                    s = s"$s, byNotes=${n2s(byNotes)}, byIndexes=[${i2s(byIndexes)}]"
+                                case None ⇒ // No-op.
+                            }
+
+                            s
                         case "nlpcraft:limit" ⇒
                             val limit = mkDouble3("limit")
                             val note = mkString("note")
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
index 6d71975..b41ce7b 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/post/NCPostEnrichProcessor.scala
@@ -231,9 +231,10 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
             Seq(
                 "nlpcraft:aggregation",
                 "nlpcraft:relation",
-                "nlpcraft:sort",
                 "nlpcraft:limit"
-            ).forall(t ⇒ fixIndexesReferences(t, ns, history))
+            ).forall(t ⇒ fixIndexesReferences(t, ns, history) &&
+            fixIndexesReferencesList("nlpcraft:limit", "subjIndexes", "subjNotes", ns, history) &&
+            fixIndexesReferencesList("nlpcraft:limit", "byIndexes", "byNotes", ns, history))
 
         if (res)
             // Validation (all indexes calculated well)
@@ -251,7 +252,57 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
     }
 
     /**
+      *
+      * @param ns
+      * @param idxs
+      * @param notesType
+      * @param id
+      * @return
+      */
+    private def checkRelation(ns: NCNlpSentence, idxs: Seq[Int], notesType: String, id: String): Boolean = {
+        val types =
+            idxs.flatMap(idx ⇒ {
+                val types = ns(idx).map(p ⇒ p).filter(!_.isNlp).map(_.noteType)
+
+                types.size match {
+                    case 0 ⇒ None
+                    case 1 ⇒ Some(types.head)
+                    case _ ⇒ throw new AssertionError(s"Unexpected tokes: ${ns(idx)}")
+                }
+            }).distinct
+
+        /**
+        Example:
+             1. Sentence 'maximum x' (single element related function)
+              - maximum is aggregate function linked to date element.
+              - x defined as 2 elements: date and num.
+              So, the variant 'maximum x (as num)' should be excluded.
+
+              2. Sentence 'compare x and y' (multiple elements related function)
+              - compare is relation function linked to date element.
+              - x an y defined as 2 elements: date and num.
+              So, variants 'x (as num) and x (as date)'  and 'x (as date) and x (as num)'
+              should't be excluded, but invalid relation should be deleted for these combinations.
+          */
+
+        types.size match {
+            case 0 ⇒ throw new AssertionError("Unexpected empty types")
+            case 1 ⇒ types.head == notesType
+            case _ ⇒
+                // Equal elements should be processed together with function element.
+                if (types.size == 1)
+                    false
+                else {
+                    ns.removeNote(id)
+
+                    true
+                }
+        }
+    }
+
+    /**
       * Fixes notes with references to other notes indexes.
+      * Note that 'idxsField' is 'indexes' and 'noteField' is 'note' for all kind of references.
       *
       * @param noteType Note type.
       * @param ns Sentence.
@@ -262,7 +313,7 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
         ns.filter(_.isTypeOf(noteType)).foreach(tok ⇒
             tok.getNoteOpt(noteType, "indexes") match {
                 case Some(n) ⇒
-                    val idxs = n.data[java.util.List[Int]]("indexes").asScala
+                    val idxs: Seq[Int] = n.data[java.util.List[Int]]("indexes").asScala
                     var fixed = idxs
 
                     history.foreach { case (idxOld, idxNew) ⇒ fixed = fixed.map(i ⇒ if (i == idxOld) idxNew else i) }
@@ -280,48 +331,58 @@ object NCPostEnrichProcessor extends NCService with LazyLogging {
             }
         )
 
-        ns.flatMap(_.getNotes(noteType)).forall(p = rel ⇒ {
-            val idxs = rel.data[java.util.List[Int]]("indexes")
-            val notesType = rel.data[String]("note")
+        ns.flatMap(_.getNotes(noteType)).forall(
+            n ⇒ checkRelation(ns, n.data[java.util.List[Int]]("indexes").asScala, n.data[String]("note"), n.id)
+        )
+    }
+
+    /**
+      * Fixes notes with references list to other notes indexes.
+      *
+      * @param noteType Note type.
+      * @param idxsField Indexes field.
+      * @param noteField Note field.
+      * @param ns Sentence.
+      * @param history Indexes transformation history.
+      * @return Valid flag.
+      */
+    private def fixIndexesReferencesList(
+        noteType: String,
+        idxsField: String,
+        noteField: String,
+        ns: NCNlpSentence,
+        history: Seq[(Int, Int)]
+    ): Boolean = {
+        ns.filter(_.isTypeOf(noteType)).foreach(tok ⇒
+            tok.getNoteOpt(noteType, idxsField) match {
+                case Some(n) ⇒
+                    val idxs: Seq[Seq[Int]] = n.data[java.util.List[java.util.List[Int]]](idxsField).asScala.map(_.asScala)
+                    var fixed = idxs
+
+                    history.foreach { case (idxOld, idxNew) ⇒ fixed = fixed.map(_.map(i ⇒ if (i == idxOld) idxNew else i)) }
 
-                    val types =
-                        idxs.asScala.flatMap(idx ⇒ {
-                            val types = ns(idx).map(p ⇒ p).filter(!_.isNlp).map(_.noteType)
+                    fixed = fixed.distinct
 
-                            types.size match {
-                                case 0 ⇒ None
-                                case 1 ⇒ Some(types.head)
-                                case _ ⇒ throw new AssertionError(s"Unexpected tokes: ${ns(idx)}")
-                            }
-                        }).distinct
-
-                    /**
-                    Example:
-                     1. Sentence 'maximum x' (single element related function)
-                      - maximum is aggregate function linked to date element.
-                      - x defined as 2 elements: date and num.
-                      So, the variant 'maximum x (as num)' should be excluded.
-
-                      2. Sentence 'compare x and y' (multiple elements related function)
-                      - compare is relation function linked to date element.
-                      - x an y defined as 2 elements: date and num.
-                      So, variants 'x (as num) and x (as date)'  and 'x (as date) and x (as num)'
-                      should't be excluded, but invalid relation should be deleted for these combinations.
-                      */
-
-                    types.size match {
-                        case 0 ⇒ throw new AssertionError("Unexpected empty types")
-                        case 1 ⇒ types.head == notesType
-                        case _ ⇒
-                            // Equal elements should be processed together with function element.
-                            if (types.size == 1)
-                                false
-                            else {
-                                ns.removeNote(rel.id)
-
-                                true
-                            }
+                    if (idxs != fixed) {
+                        n += idxsField → fixed.map(_.asJava).asJava.asInstanceOf[java.io.Serializable]
+
+                        def x(seq: Seq[Seq[Int]]): String = s"[${seq.map(p ⇒ s"[${p.mkString(",")}]").mkString(", ")}]"
+
+                        logger.trace(s"`$noteType` note `indexes` fixed [old=${x(idxs)}}, new=${x(fixed)}]")
                     }
+                case None ⇒ // No-op.
+            }
+        )
+
+        ns.flatMap(_.getNotes(noteType)).forall(rel ⇒ {
+            val idxsList: util.List[util.List[Int]] = rel.data[java.util.List[java.util.List[Int]]](idxsField)
+            val notesTypes = rel.data[util.List[String]](noteField)
+
+            require(idxsList.size() == notesTypes.size())
+
+            idxsList.asScala.zip(notesTypes.asScala).forall {
+                case (idxs, notesType) ⇒ checkRelation(ns, idxs.asScala, notesType, rel.id)
+            }
         })
     }
 


[incubator-nlpcraft] 01/13: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 17776cd96fe6ace895839b7b38c7737c7f0c509c
Author: Sergey Kamov <se...@apache.org>
AuthorDate: Wed Mar 11 18:34:15 2020 +0300

    WIP.
---
 .../nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala  |  21 ++-
 .../aggregation/NCAggregationEnricher.scala        |   2 +-
 .../mgrs/nlp/enrichers/limit/NCLimitEnricher.scala |   2 +-
 .../enrichers/relation/NCRelationEnricher.scala    |   2 +-
 .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala   | 157 +++++++++++----------
 5 files changed, 103 insertions(+), 81 deletions(-)

diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
index 0c6ca9e..c632c2e 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/NCProbeEnricher.scala
@@ -27,6 +27,8 @@ import org.nlpcraft.probe.mgrs.NCModelDecorator
 
 import scala.collection.{Map, Seq}
 import scala.language.implicitConversions
+import scala.collection.JavaConverters._
+
 /**
  * Base class for NLP enricher.
  */
@@ -75,12 +77,25 @@ abstract class NCProbeEnricher extends NCService with LazyLogging {
     /**
       *
       * @param typ
-      * @param refNote
+      * @param refNoteName
+      * @param refNoteVal
+      * @param matched
+      */
+    protected def hasReference(typ: String, refNoteName: String, refNoteVal: String, matched: Seq[NCNlpSentenceToken]): Boolean =
+        matched.forall(t ⇒
+            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n(refNoteName).asInstanceOf[String] == refNoteVal)
+        )
+
+    /**
+      *
+      * @param typ
+      * @param refNoteName
+      * @param refNoteVals
       * @param matched
       */
-    protected def isReference(typ: String, refNote: String, matched: Seq[NCNlpSentenceToken]): Boolean =
+    protected def hasReferences(typ: String, refNoteName: String, refNoteVals: Seq[String], matched: Seq[NCNlpSentenceToken]): Boolean =
         matched.forall(t ⇒
-            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n("note").asInstanceOf[String] == refNote)
+            t.isTypeOf(typ) && t.getNotes(typ).exists(n ⇒ n(refNoteName).asInstanceOf[java.util.List[String]].asScala == refNoteVals)
         )
 
     /**
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
index 2195363..6fa6a2a 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/aggregation/NCAggregationEnricher.scala
@@ -99,7 +99,7 @@ object NCAggregationEnricher extends NCProbeEnricher {
             for (toks ← ns.tokenMixWithStopWords() if areSuitableTokens(buf, toks))
                 tryToMatch(toks) match {
                     case Some(m) ⇒
-                        for (refNote ← m.refNotes if !isReference(TOK_ID, refNote, m.matched)) {
+                        for (refNote ← m.refNotes if !hasReference(TOK_ID, "note", refNote, m.matched)) {
                             val note = NCNlpSentenceNote(
                                 m.matched.map(_.index),
                                 TOK_ID,
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
index b57fcf3..bcde957 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala
@@ -210,7 +210,7 @@ object NCLimitEnricher extends NCProbeEnricher {
             for (toks ← ns.tokenMixWithStopWords().sortBy(p ⇒ (-p.size, -p.head.index)) if areSuitableTokens(buf, toks))
                 tryToMatch(numsMap, groupsMap, toks) match {
                     case Some(m) ⇒
-                        for (refNote ← m.refNotes if !isReference(TOK_ID, refNote, m.matched)) {
+                        for (refNote ← m.refNotes if !hasReference(TOK_ID, "note", refNote, m.matched)) {
                             val note = NCNlpSentenceNote(
                                 m.matched.map(_.index),
                                 TOK_ID,
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala
index 0613a51..2284766 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala
@@ -129,7 +129,7 @@ object NCRelationEnricher extends NCProbeEnricher {
             for (toks ← ns.tokenMixWithStopWords() if areSuitableTokens(buf, toks))
                 tryToMatch(toks) match {
                     case Some(m) ⇒
-                        for (refNote ← m.refNotes if !isReference(TOK_ID, refNote, Seq(m.matched.head))) {
+                        for (refNote ← m.refNotes if !hasReference(TOK_ID, "note", refNote, Seq(m.matched.head))) {
                             val note = NCNlpSentenceNote(
                                 Seq(m.matchedHead.index),
                                 TOK_ID,
diff --git a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
index 7e9de2c..8678c7d 100644
--- a/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
+++ b/src/main/scala/org/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala
@@ -28,6 +28,7 @@ import org.nlpcraft.probe.mgrs.NCModelDecorator
 import org.nlpcraft.probe.mgrs.nlp.NCProbeEnricher
 
 import scala.collection.JavaConverters._
+import scala.collection.mutable.ArrayBuffer
 import scala.collection.{Map, Seq, mutable}
 
 /**
@@ -103,10 +104,13 @@ object NCSortEnricher extends NCProbeEnricher {
         asc: Option[Boolean],
         main: Seq[NCNlpSentenceToken],
         stop: Seq[NCNlpSentenceToken],
-        subj: Seq[Seq[NoteData]],
-        by: Seq[Seq[NoteData]]
+        subjSeq: Seq[Seq[NoteData]],
+        bySeq: Seq[Seq[NoteData]]
     ) {
-        lazy val all = main ++ stop
+        require(main.nonEmpty)
+        require(subjSeq.nonEmpty)
+
+        lazy val all: Seq[NCNlpSentenceToken] = main ++ stop
     }
 
     override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒
@@ -121,38 +125,32 @@ object NCSortEnricher extends NCProbeEnricher {
     // [Token(A, B), Token(A), Token(C, D), Token(C, D, X), Token(Z)] ⇒
     // [[A (0, 1), C (2, 3), Z (4)], [A (0, 1), D (2, 3), Z (4)]]
     private def split(toks: Seq[NCNlpSentenceToken]): Seq[Seq[NoteData]] = {
-        val all = toks.
+        val all: Seq[NoteData] = toks.
             flatten.
-            filter(n ⇒ !n.isNlp).
+            filter(!_.isNlp).
             map(n ⇒ NoteData(n.noteType, n.tokenFrom to n.tokenTo)).
             sortBy(_.indexes.head)
 
-        val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
-        val used = mutable.ArrayBuffer.empty[NoteData]
+        if (all.nonEmpty) {
+            val res = mutable.ArrayBuffer.empty[Seq[NoteData]]
 
-        def go(seq: mutable.ArrayBuffer[NoteData], nd: NoteData): Boolean =
-            if (!used.contains(nd)) {
-                if (seq.isEmpty) {
-                    if (nd.indexes.head == 0) {
-                        seq += nd
-                        used += nd
+            def go(nd: NoteData, seq: mutable.ArrayBuffer[NoteData] = mutable.ArrayBuffer.empty[NoteData]): Unit = {
+                seq += nd
 
-                        all.find(nd ⇒ !used.contains(nd)) match {
-                            case Some(next) ⇒ go(seq, next)
-                            case None ⇒ false
-                        }
-                    }
-                    else
-                        false
-                }
-                else {
-                    false
-                }
+                all.
+                    filter(p ⇒ p.indexes.head == nd.indexes.last + 1).
+                    foreach(go(_, mutable.ArrayBuffer.empty[NoteData] ++ seq.clone()))
+
+                if (seq.nonEmpty && seq.head.indexes.head == toks.head.index && seq.last.indexes.last == toks.last.index)
+                    res += seq
             }
-            else
-                false
 
-        res
+            go(all.head)
+
+            res
+        }
+        else
+            Seq.empty
     }
 
     private def tryToMatch(toks: Seq[NCNlpSentenceToken]): Option[Match] = {
@@ -200,6 +198,7 @@ object NCSortEnricher extends NCProbeEnricher {
                 case None ⇒ None
             }
 
+
         hOpt match {
             case Some(h) ⇒
                 val others = toks.filter(t ⇒ !h.all.contains(t))
@@ -222,19 +221,16 @@ object NCSortEnricher extends NCProbeEnricher {
 
                     require(subj.nonEmpty)
 
-                    val asc =
-                        h.order match {
-                            case Some(order) ⇒ Some(ORDER(order.synonymIndex)._2)
-                            case None ⇒ None
-                        }
-
                     Some(
                         Match(
-                            asc = asc,
+                            asc = h.order match {
+                                case Some(order) ⇒ Some(ORDER(order.synonymIndex)._2)
+                                case None ⇒ None
+                            },
                             main = h.sort.tokens,
                             stop = h.byTokens ++ h.orderTokens,
-                            subj = split(subj),
-                            by = split(by)
+                            subjSeq = split(subj),
+                            bySeq = split(by)
                         )
                     )
                 }
@@ -244,9 +240,9 @@ object NCSortEnricher extends NCProbeEnricher {
         }
     }
 
-//    def suitable(m: Match, notes: Seq[String], refName: String): Boolean =
-//        notes.forall(note ⇒ !isReference(TOK_ID, refName, note, m.all))
-//
+    // TODO:
+    private def suitable(m: Match, notes: Seq[String], refName: String): Boolean =
+        !hasReferences(TOK_ID, refName, notes, m.main)
 
     override def enrich(mdl: NCModelDecorator, ns: NCNlpSentence, senMeta: Map[String, Serializable], parent: Span): Boolean =
         startScopedSpan("enrich", parent,
@@ -256,42 +252,53 @@ object NCSortEnricher extends NCProbeEnricher {
             val buf = mutable.Buffer.empty[Set[NCNlpSentenceToken]]
             var changed: Boolean = false
 
-//            for (toks ← ns.tokenMixWithStopWords() if areSuitableTokens(buf, toks))
-//                tryToMatch(toks) match {
-//                    case Some(m)
-////                        if suitable(m, m.subj.map(_.note), "subjNotes") &&
-////                        (m.by.isEmpty || suitable(m, m.by.map(_.note), "byNotes")) ⇒
-//                        ⇒
-//                        val params = mutable.ArrayBuffer.empty[(String, Any)]
-//
-//                        m.asc match {
-//                            case Some(asc) ⇒ params += "asc" → asc
-//                            case None ⇒ // No-op.
-//                        }
-//
-//                        def addNotes(seq: Seq[NoteData], notesName: String, idxsName: String): Unit = {
-//                            params += notesName → seq.map(_.note).asJava
-//                            params += idxsName → seq.map(_.indexes.asJava).asJava
-//                        }
-//
-//                        addNotes(m.subj, "subjNotes", "subjIndexes")
-//
-//                        if (m.by.nonEmpty)
-//                            addNotes(m.by, "byNotes", "byIndexes")
-//
-//                        val note = NCNlpSentenceNote(m.main.map(_.index), TOK_ID, params :_*)
-//
-//                        m.main.foreach(_.add(note))
-//                        m.stop.foreach(_.addStopReason(note))
-//
-//                        changed = true
-//
-//                    case None ⇒ // No-op.
-//
-//                if (changed)
-//                    buf += toks.toSet
-//            }
+            for (toks ← ns.tokenMixWithStopWords() if areSuitableTokens(buf, toks))
+                tryToMatch(toks) match {
+                    case Some(m) ⇒
+                        for (subj ← m.subjSeq if suitable(m, subj.map(_.note), "subjNotes")) {
+                            def addNotes(
+                                params: ArrayBuffer[(String, Any)],
+                                seq: Seq[NoteData],
+                                notesName: String,
+                                idxsName: String
+                            ): ArrayBuffer[(String, Any)] = {
+                                params += notesName → seq.map(_.note).asJava
+                                params += idxsName → seq.map(_.indexes.asJava).asJava
+
+                                params
+                            }
+
+                            def mkParams(): ArrayBuffer[(String, Any)] = {
+                                val params = mutable.ArrayBuffer.empty[(String, Any)]
+
+                                if (m.asc.isDefined)
+                                    params += "asc" → m.asc.get
+
+                                addNotes(params, subj, "subjNotes", "subjIndexes")
+                            }
+
+                            def mkNote(params: ArrayBuffer[(String, Any)]): Unit = {
+                                val note = NCNlpSentenceNote(m.main.map(_.index), TOK_ID, params:_*)
+
+                                m.main.foreach(_.add(note))
+                                m.stop.foreach(_.addStopReason(note))
+
+                                changed = true
+                            }
+
+                            if (m.bySeq.nonEmpty)
+                                for (by ← m.bySeq if suitable(m, by.map(_.note), "byNotes"))
+                                    mkNote(addNotes(mkParams(), by, "byNotes", "byIndexes"))
+                            else
+                                mkNote(mkParams())
+                        }
+
+                    case None ⇒ // No-op.
+
+                if (changed)
+                    buf += toks.toSet
+            }
 
             changed
         }
-}
+}
\ No newline at end of file