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

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


The following commit(s) were added to refs/heads/master by this push:
     new 03b7ba1  WIP.
03b7ba1 is described below

commit 03b7ba1f27d87622c3da48c926271aee52b1425b
Author: Aaron Radzinzski <aradzin...@datalingvo.com>
AuthorDate: Mon Apr 19 03:57:50 2021 +0300

    WIP.
---
 _data/idl-fns.yml                           |  17 ++
 ext/syntaxhighlighter/scripts/shBrushIdl.js |   2 +-
 intent-matching.html                        | 241 ++++++++++++++++++++++++++--
 3 files changed, 247 insertions(+), 13 deletions(-)

diff --git a/_data/idl-fns.yml b/_data/idl-fns.yml
index 155a6f1..8e660ce 100644
--- a/_data/idl-fns.yml
+++ b/_data/idl-fns.yml
@@ -15,6 +15,10 @@
 # limitations under the License.
 #
 
+#
+# IDL functions documentation.
+#
+
 fn-token:
   - name: tok_id
     sig: |
@@ -372,9 +376,21 @@ fn-token:
       @tok = if(is_empty(@parts), tok_this(), first(@parts))
 
 
+
 fn-datetime:
+
+fn-req:
+
+fn-user:
+
+fn-company:
+
 fn-math:
 
+fn-collections:
+
+fn-metadata:
+
 fn-other:
   - name: if
     sig: |
@@ -431,6 +447,7 @@ fn-other:
       @dflt = 'text'
       or_else(meta_model('some_prop'), @dflt)
 
+
 fn-text:
   - name: length
     sig: |
diff --git a/ext/syntaxhighlighter/scripts/shBrushIdl.js 
b/ext/syntaxhighlighter/scripts/shBrushIdl.js
index c2bde90..324d60b 100644
--- a/ext/syntaxhighlighter/scripts/shBrushIdl.js
+++ b/ext/syntaxhighlighter/scripts/shBrushIdl.js
@@ -10,7 +10,7 @@
         const keywords = 'flow fragment import intent meta ordered term';
         const literals = 'false null true';
         const symbols =        '[\\[\\]{}*@+?~=]+';
-        const fns = 'abs acos asin atan atn2 cbrt ceil comp_addr comp_city 
comp_country comp_id comp_name comp_postcode comp_region comp_website cos cosh 
count day_of_month day_of_week day_of_year degrees euler exp expm1 first floor 
get has has_all has_any hour hypot if is_alpha is_alphanum is_alphanumspace 
is_alphaspace is_empty is_num is_numspace is_whitespace json keys last length 
list log log10 log1p lowercase max meta_company meta_conv meta_frag meta_intent 
meta_model meta_part meta [...]
+        const fns = 'or_else abs acos asin atan atn2 cbrt ceil comp_addr 
comp_city comp_country comp_id comp_name comp_postcode comp_region comp_website 
cos cosh count day_of_month day_of_week day_of_year degrees euler exp expm1 
first floor get has has_all has_any hour hypot if is_alpha is_alphanum 
is_alphanumspace is_alphaspace is_empty is_num is_numspace is_whitespace json 
keys last length list log log10 log1p lowercase max meta_company meta_conv 
meta_frag meta_intent meta_model meta_p [...]
 
         this.regexList = [
             { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 
'comments' },        // One line comments.
diff --git a/intent-matching.html b/intent-matching.html
index fe4775b..7e93b8e 100644
--- a/intent-matching.html
+++ b/intent-matching.html
@@ -65,6 +65,41 @@ id: intent_matching
             intent=x term(a)~{tok_id() == 'my_elm'} term(b)={has(tok_groups(), 
"my_group")}
         </pre>
         <p>
+            IDL intent defines a match between the parsed input utterance, 
i.e. the collection of
+            <a class="not-code" target="javadoc" 
href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">tokens</a>,
+            and the user-define callback method. To accomplish that, IDL <a 
href="#idl_functions">functions</a> provide
+            access to the following information:
+        </p>
+        <ul>
+            <li>
+                Basic <a class="not-code" target="javadoc" 
href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">token properties</a> 
such as token ID,
+                group membership, aliases, token parent and ancestry hierarchy,
+                token's constituent part tokens, abstract flag, etc.
+            </li>
+            <li>
+                NLP <a class="not-code" target="javadoc" 
href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">token properties</a> 
- stem,
+                lemma, PoS tag, and variety of computed boolean flags
+                such as stop word, swear word, free word, known dictionary 
word,
+                bracketed, quoted, etc.
+            </li>
+            <li>
+                <a class="not-code" target="javadoc" 
href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">Information</a> about
+                how particular token was found in the input, i.e. its sparsity 
value, permutation
+                flag, synonym value, indices in the original text, etc.
+            </li>
+            <li>
+                Additional token metadata provided by NER providers. For 
example, for geographical token additional metadata
+                can provide population, postal codes, latitude and longitude 
coordinates, and other demographic information.
+            </li>
+            <li>
+                Additional metadata about user and company that made the input 
request like admin status, signup date,
+                first and last names, avatars, emails, company name, website, 
address, etc.
+            </li>
+            <li>
+                System information such as current date and time, OS 
properties, system and environmental variables.
+            </li>
+        </ul>
+        <p>
             You can review the formal
             <a target="github" 
href="https://github.com/apache/incubator-nlpcraft/blob/master/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIdl.g4";>ANTLR4
 grammar</a> for IDL,
             but here are the general properties of IDL:
@@ -109,8 +144,8 @@ id: intent_matching
             <li>
                 IDL is a lazily evaluated language, i.e. expressions are 
evaluated only when required during runtime. That
                 means that evaluated left-to-right logical AND and OR 
operators, for example, skip their right-part expressions if the left 
expression result is
-                determinative for the overall result - so called short-circuit 
evaluation. Some IDL functions like <code>if</code> also provide the similar
-                short-circuit evaluation.
+                determinative for the overall result - so called short-circuit 
evaluation. Some IDL functions like
+                <code>if</code> and <code>or_else</code> also provide the 
similar short-circuit evaluation.
             </li>
         </ul>
         <p>
@@ -133,13 +168,13 @@ id: intent_matching
                 <pre class="brush: idl">
                     intent=xa
                         flow="^(?:xx)(^:zz)*$"
-                        meta={'a': 42, 'b': {'Москва': [1, 2, 3]}}
-                        term(a)={month() >= 6 && !(tok_id()) != "z" && 
meta_model('a') == 100_500}[1,3]
+                        meta={'enabled': true}
+                        term(a)={month() >= 6 && !(tok_id()) != "z" && 
meta_intent('enabled') == true}[1,3]
                         term(b)~{
-                            @a = meta_model('a')
-                            @lst = list(1, 2, 3, 4)
+                            @tokId = tok_id()
+                            @usrTypes = meta_model('user_types')
 
-                            has_all(@lst, list(@a, 2))
+                            (tokId == 'order' || tokId == 'order_cancel') && 
has_all(@usrTypes, list(1, 2, 3))
                         }
 
                     intent=xb
@@ -219,7 +254,7 @@ id: intent_matching
                         </p>
                     </dd>
                     <dt>
-                        <code>meta={'a': 42, 'b': {'Москва': [1, 2, 
3]}}</code> <sup><small>line 3</small></sup>
+                        <code>meta={'enabled': true}</code> <sup><small>line 
3</small></sup>
                     </dt>
                     <dd>
                         <p>
@@ -233,11 +268,11 @@ id: intent_matching
                         </p>
                     </dd>
                     <dt>
-                        <code>term(a)={month() >= 6 && !(tok_id()) != "z" && 
meta_model('a') == 100_500}[1,3]</code> <sup><small>line 4</small></sup><br>
+                        <code>term(a)={month() >= 6 && !(tok_id()) != "z" && 
meta_intent('enabled') == true}[1,3]</code> <sup><small>line 4</small></sup><br>
                         <code>term(b)~{</code> <sup><small>line 
5</small></sup><br>
-                        <code style="padding-left: 20px">@a = 
meta_model('a')</code><br>
-                        <code style="padding-left: 20px">@lst = list(1, 2, 3, 
4)</code><br>
-                        <code style="padding-left: 20px">has_all(@lst, 
list(@a, 2))</code><br>
+                        <code style="padding-left: 20px">@tokId = 
tok_id()</code><br>
+                        <code style="padding-left: 20px">@usrTypes = 
meta_model('user_types')</code><br>
+                        <code style="padding-left: 20px">(tokId == 'order' || 
tokId == 'order_cancel') && has_all(@usrTypes, list(1, 2, 3))</code><br>
                         <code>}</code><br>
                         
<code>term(a)=/org.mypackage.MyClass#termMethod/?</code> <sup><small>line 
15</small></sup>
                     </dt>
@@ -680,18 +715,200 @@ id: intent_matching
                 </div>
             </div>
             <div class="tab-pane fade show" id="fn_math" role="tabpanel">
+                <div class="accordion" id="math_fns">
+                    {% for fn in site.data.idl-fns.fn-math %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#math_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_collection" role="tabpanel">
+                <div class="accordion" id="collections_fns">
+                    {% for fn in site.data.idl-fns.fn-collections %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#collections_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_metadata" role="tabpanel">
+                <div class="accordion" id="metadata_fns">
+                    {% for fn in site.data.idl-fns.fn-metadata %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#metadata_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_datetime" role="tabpanel">
+                <div class="accordion" id="datetime_fns">
+                    {% for fn in site.data.idl-fns.fn-datetime %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#datetime_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_req" role="tabpanel">
+                <div class="accordion" id="req_fns">
+                    {% for fn in site.data.idl-fns.fn-req %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#req_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_user" role="tabpanel">
+                <div class="accordion" id="user_fns">
+                    {% for fn in site.data.idl-fns.fn-user %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#user_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_company" role="tabpanel">
+                <div class="accordion" id="company_fns">
+                    {% for fn in site.data.idl-fns.fn-company %}
+                    <div class="card">
+                        <div class="card-header">
+                            <h2 class="mb-0">
+                                <button class="btn btn-link btn-block 
text-left" type="button" data-toggle="collapse" data-target="#fn_{{fn.name}}">
+                                    <span><code>{{fn.sig}}</code></span>
+                                    <span 
class="fn-short-desc">{{fn.synopsis}}</span>
+                                </button>
+                            </h2>
+                        </div>
+                        <div id="fn_{{fn.name}}" class="collapse" 
data-parent="#company_fns">
+                            <div class="card-body">
+                                <p class="fn-desc">
+                                    <em>Description:</em><br>
+                                    {{fn.desc}}
+                                </p>
+                                <p class="fn-usage">
+                                    <em>Usage:</em><br>
+                                </p>
+                                <pre class="brush:idl">{{fn.usage}}</pre>
+                            </div>
+                        </div>
+                    </div>
+                    {% endfor %}
+                </div>
             </div>
             <div class="tab-pane fade show" id="fn_other" role="tabpanel">
                 <div class="accordion" id="other_fns">

Reply via email to