blob: 6abab922cbedc8a2c3ee1cd7cf85044926640649 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.2) on Tue May 25 13:08:06 PDT 2021 -->
<title>NCElement (Apache NLPCraft 0.8.0)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-05-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="NCElement (Apache NLPCraft 0.8.0)";
}
}
catch(err) {
}
//-->
var data = {"i0":18,"i1":18,"i2":6,"i3":18,"i4":18,"i5":18,"i6":18,"i7":18,"i8":18,"i9":18,"i10":18};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav"><link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/XRegExp.js" type="text/javascript"></script> <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shCore.js" type="text/javascript"></script> <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shAutoloader.js" type="text/javascript"></script> <link href="https://nlpcraft.apache.org/javadoc/resources/sh/styles/shCoreNLPCraft.css" rel="stylesheet" type="text/css" title="Style"> <link href="https://nlpcraft.apache.org/javadoc/resources/sh/styles/shThemeNLPCraft.css" rel="stylesheet" type="text/css" title="Style"> <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> <script async defer src="https://buttons.github.io/buttons.js"></script>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NCElement.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">Apache NLPCraft <span style="font-size: 80%">0.8.0</span></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.nlpcraft.model</a></div>
<h2 title="Interface NCElement" class="title">Interface NCElement</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code><a href="NCMetadata.html" title="interface in org.apache.nlpcraft.model">NCMetadata</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">NCElement</span>
extends <a href="NCMetadata.html" title="interface in org.apache.nlpcraft.model">NCMetadata</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></pre>
<div class="block">Data model element.
<p>
Data model element defines a named entity that will be detected in the user input. A model element
typically is one or more individual words that have a consistent semantic meaning and typically denote
a real-world object, such as persons, locations, number, date and time, organizations, products, etc.
Such object can be abstract or have a physical existence.
<p>
Read full documentation in <a target=_ href="https://nlpcraft.apache.org/data-model.html">Data Model</a> section and review
<a target=_ href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/">examples</a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCCustomParser.html" title="interface in org.apache.nlpcraft.model"><code>NCCustomParser</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDescription()">getDescription</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets optional element description.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGroups()">getGroups</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the list of groups this elements belongs to.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getId()">getId</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets unique ID of this element.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>,&#8203;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMetadata()">getMetadata</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets optional user-defined element's metadata.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParentId()">getParentId</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets optional ID of the immediate parent element.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSynonyms()">getSynonyms</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the list of synonyms by which this model element will be recognized by.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="NCValueLoader.html" title="interface in org.apache.nlpcraft.model">NCValueLoader</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getValueLoader()">getValueLoader</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets optional dynamic value loader.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="NCValue.html" title="interface in org.apache.nlpcraft.model">NCValue</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getValues()">getValues</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets optional map of <a href="NCValue.html" title="interface in org.apache.nlpcraft.model"><code>values</code></a> for this element.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>default boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isMemberOf(java.lang.String)">isMemberOf</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;grp)</code></th>
<td class="colLast">
<div class="block">Shortcut method to test if this element is a member of given group.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang" class="externalLink">Boolean</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isPermutateSynonyms()">isPermutateSynonyms</a></span>()</code></th>
<td class="colLast">
<div class="block">Whether or not to permutate multi-word synonyms.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>default <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang" class="externalLink">Boolean</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSparse()">isSparse</a></span>()</code></th>
<td class="colLast">
<div class="block">Whether or not this element allows the non-stop words gaps in its multi-word synonyms.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.nlpcraft.model.NCMetadata">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.nlpcraft.model.<a href="NCMetadata.html" title="interface in org.apache.nlpcraft.model">NCMetadata</a></h3>
<code><a href="NCMetadata.html#meta(java.lang.String)">meta</a>, <a href="NCMetadata.html#meta(java.lang.String,T)">meta</a>, <a href="NCMetadata.html#metaOpt(java.lang.String)">metaOpt</a>, <a href="NCMetadata.html#metax(java.lang.String)">metax</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getId()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getId</h4>
<pre class="methodSignature"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;getId()</pre>
<div class="block">Gets unique ID of this element.
<p>
This unique ID should be human readable for simpler debugging and testing of the model.
Although element ID could be any arbitrary string it is highly recommended to have
element ID as a lower case string starting with some model prefix, followed by colon and
then the element's name. For example, some built-in NLPCraft IDs are: <code>nlpcraft:date</code>,
<code>nlpcraft:city</code>.
<p>
Few important notes:
<ul>
<li>Element IDs starting with <code>nlpcraft:</code> are reserved for built-in NLPCraft IDs.</li>
<li>
Element ID is an implicit synonym for that element.
Thus element ID can be used in the user input directly to clearly
disambiguate the element in the input sentence instead of relying on synonyms or other
ways of detection.
</li>
</ul>
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>id</code> property:
<pre class="brush: js, highlight: [3]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Unique ID of this element.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCToken.html#getId()"><code>NCToken.getId()</code></a></dd>
</dl>
</li>
</ul>
<a id="getGroups()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGroups</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&gt;&nbsp;getGroups()</pre>
<div class="block">Gets the list of groups this elements belongs to.
<p>
Model element can belong to one or more groups. By default, the element belongs to a single group whose group
ID is equal to its <a href="#getId()"><code>ID</code></a>. The proper grouping of the model elements is required for operation
of Short-Term-Memory (STM) in <a href="NCConversation.html" title="interface in org.apache.nlpcraft.model"><code>conversation</code></a> (if and when conversation
is used). Specifically, a token (i.e. found model element) that is part of the group set will override
other tokens from the same set or a its superset. In other words, tokens with a smaller group set
(more specific token) will override the tokens from a larger group set (more generic tokens).
<p>
Note that built-in tokens (including from 3rd party token providers) belong to a single group whose group
ID is equal to their IDs.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>groups</code> property:
<pre class="brush: js, highlight: [5]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"groups": ["group1", "group2"]
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>List of groups this element belongs to. By default, the model element belongs to one group
with ID equal to the element <a href="#getId()"><code>ID</code></a>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCConversation.html" title="interface in org.apache.nlpcraft.model"><code>NCConversation</code></a>,
<a href="#getId()"><code>getId()</code></a></dd>
</dl>
</li>
</ul>
<a id="isMemberOf(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isMemberOf</h4>
<pre class="methodSignature">default&nbsp;boolean&nbsp;isMemberOf&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;grp)</pre>
<div class="block">Shortcut method to test if this element is a member of given group. It is equivalent to:
<pre class="brush: java">
return getGroups().contains(grp);
</pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>grp</code> - Token group to test.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>True</code> if this element belongs to the given group, <code>false</code> otherwise.</dd>
</dl>
</li>
</ul>
<a id="getMetadata()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMetadata</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>,&#8203;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&gt;&nbsp;getMetadata()</pre>
<div class="block">Gets optional user-defined element's metadata. When a <a href="NCToken.html" title="interface in org.apache.nlpcraft.model"><code>token</code></a> for this element
is detected in the input this metadata is merged into <a href="NCMetadata.html#getMetadata()"><code>NCMetadata.getMetadata()</code></a> method returned metadata.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>description</code> property:
<pre class="brush: js, highlight: [8,9,10,11,12]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
],
"metadata": {
"str": "val1",
"num": 100,
"bool": false
}
}
]
</pre></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="NCMetadata.html#getMetadata()">getMetadata</a></code>&nbsp;in interface&nbsp;<code><a href="NCMetadata.html" title="interface in org.apache.nlpcraft.model">NCMetadata</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Element's metadata or empty collection if none provided. Default implementation return empty collection.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCMetadata.html#meta(java.lang.String)"><code>NCMetadata.meta(String)</code></a>,
<a href="NCMetadata.html#metaOpt(java.lang.String)"><code>NCMetadata.metaOpt(String)</code></a>,
<a href="NCMetadata.html#meta(java.lang.String,T)"><code>NCMetadata.meta(String, Object)</code></a></dd>
</dl>
</li>
</ul>
<a id="getDescription()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDescription</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;getDescription()</pre>
<div class="block">Gets optional element description.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>description</code> property:
<pre class="brush: js, highlight: [4]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Optional element description. Default implementation returns <code>null</code>.</dd>
</dl>
</li>
</ul>
<a id="getValues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValues</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="NCValue.html" title="interface in org.apache.nlpcraft.model">NCValue</a>&gt;&nbsp;getValues()</pre>
<div class="block">Gets optional map of <a href="NCValue.html" title="interface in org.apache.nlpcraft.model"><code>values</code></a> for this element.
<p>
Each element can generally be recognized either by one of its synonyms or values. Elements and their values
are analogous to types and instances of that type in programming languages. Each value
has a name and optional set of its own synonyms by which that value, and ultimately its element, can be
recognized by. Note that value name itself acts as an implicit synonym even when no additional synonyms added
for that value.
<p>
Consider this example. A model element <code>x:car</code> can have:
<ul>
<li>
Set of general synonyms:
<code>{transportation|transport|_} {vehicle|car|sedan|auto|automobile|suv|crossover|coupe|truck}</code>
</li>
<li>Set of values:
<ul>
<li><code>mercedes</code> with synonyms <code>(mercedes, mercedes-benz, mb, benz)</code></li>
<li><code>bmw</code> with synonyms <code>(bmw, bimmer)</code></li>
<li><code>chevrolet</code> with synonyms <code>(chevy, chevrolet)</code></li>
</ul>
</li>
</ul>
With that setup <code>x:car</code> element will be recognized by any of the following input sub-string:
<ul>
<li><code>transport car</code></li>
<li><code>benz</code></li>
<li><code>automobile</code></li>
<li><code>transport vehicle</code></li>
<li><code>sedan</code></li>
<li><code>chevy</code></li>
<li><code>bimmer</code></li>
<li><code>x:car</code></li>
</ul>
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>values</code> property:
<pre class="brush: js, highlight: [8,9,10,11,12,13]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
],
"values": [
{
"name": "name1",
"synonyms": ["syn1", "syn2"]
}
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Map of value's name and its synonyms or <code>null</code> if not defined.</dd>
</dl>
</li>
</ul>
<a id="getParentId()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParentId</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;getParentId()</pre>
<div class="block">Gets optional ID of the immediate parent element. Parent ID allows model elements to form into hierarchy.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>parentId</code> property:
<pre class="brush: js, highlight: [5]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"parentId": "parent",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Optional parent element ID, or <code>null</code> if not specified. Default implementation returns
<code>null</code>.</dd>
</dl>
</li>
</ul>
<a id="getSynonyms()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSynonyms</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&gt;&nbsp;getSynonyms()</pre>
<div class="block">Gets the list of synonyms by which this model element will be recognized by. Read more about
many different forms of synonyms in <a target=_ href="https://nlpcraft.apache.org/data-model.html">Data Model</a> section
and review <a target=_ href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/">examples</a>.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>synonyms</code> property:
<pre class="brush: js, highlight: [5,6,7]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
]
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>List of synonyms for this element. List is generally optional since element's ID acts
as an implicit synonym. Default implementation returns an empty list.</dd>
</dl>
</li>
</ul>
<a id="getValueLoader()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValueLoader</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="NCValueLoader.html" title="interface in org.apache.nlpcraft.model">NCValueLoader</a>&gt;&nbsp;getValueLoader()</pre>
<div class="block">Gets optional dynamic value loader. This loader will be used additionally to any
values defined in <a href="#getValues()"><code>getValues()</code></a> method. Default implementation returns <code>null</code>.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>valueLoader</code> property with value
of a fully qualified class name implementing <a href="NCValueLoader.html" title="interface in org.apache.nlpcraft.model"><code>NCValueLoader</code></a> interface. Note that
only one instance of the value loader will be created per model and given class name:
<pre class="brush: js, highlight: [14]">
"elements": [
{
"id": "phone:act",
"description": "Phone action.",
"synonyms": [
"{give|_} {call|phone|ring|dial|dial up|ping|contact}"
],
"values": [
{
"name": "name1",
"synonyms": ["syn1", "syn2"]
}
],
"valueLoader": "my.package.ValueLoader"
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Optional instance of dynamic value loader.</dd>
</dl>
</li>
</ul>
<a id="isPermutateSynonyms()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPermutateSynonyms</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang" class="externalLink">Boolean</a>&gt;&nbsp;isPermutateSynonyms()</pre>
<div class="block">Whether or not to permutate multi-word synonyms. Automatic multi-word synonyms permutations greatly
increase the total number of synonyms in the system and allows for better multi-word synonym detection.
For example, if permutation is allowed the synonym "a b c" will be automatically converted into a
sequence of synonyms of "a b c", "b a c", "a c b".
<p>
This property overrides the value from <a href="NCModelView.html#isPermutateSynonyms()"><code>NCModelView.isPermutateSynonyms()</code></a>.
One should use this property if model's value isn't applicable to this element.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>permutateSynonyms</code>:
<pre class="brush: js, highlight: [4]">
"elements": [
{
"id": "elem",
"permutateSynonyms": true,
...
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Optional synonym permutate property overriding model's one.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCModelView.html#isPermutateSynonyms()"><code>NCModelView.isPermutateSynonyms()</code></a></dd>
</dl>
</li>
</ul>
<a id="isSparse()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isSparse</h4>
<pre class="methodSignature">default&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html?is-external=true" title="class or interface in java.util" class="externalLink">Optional</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang" class="externalLink">Boolean</a>&gt;&nbsp;isSparse()</pre>
<div class="block">Whether or not this element allows the non-stop words gaps in its multi-word synonyms.
<p>
This property overrides the value from <a href="NCModelView.html#isSparse()"><code>NCModelView.isSparse()</code></a>.
One should use this property if model's value isn't applicable to this element.
<p>
<b>JSON</b>
<br>
If using JSON/YAML model presentation this is set by <code>sparse</code>:
<pre class="brush: js, highlight: [4]">
"elements": [
{
"id": "elem",
"sparse": true,
...
}
]
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Optional multi-word synonym sparsity property overriding model's one.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="NCModelView.html#isSparse()"><code>NCModelView.isSparse()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NCElement.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><span style="vertical-align: super">Apache NLPCraft <span style="font-size: 80%">0.8.0</span></span> <a style="vertical-align: super; margin-right: 10px" href="https://github.com/apache/incubator-nlpcraft" target="github"><i class="fa fa-github github-logo"></i></a> <a class="github-button" href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft-examples" data-icon="octicon-eye" aria-label="NLPCraft Examples">Examples</a> <a class="github-button" href="https://github.com/apache/incubator-nlpcraft" data-icon="octicon-star" aria-label="Star on GitHub">Star</a> <a class="github-button" href="https://github.com/apache/incubator-nlpcraft/fork" data-icon="octicon-repo-forked" aria-label="Fork on GitHub">Fork</a> <script type="text/javascript"> SyntaxHighlighter.defaults["auto-links"] = false; SyntaxHighlighter.defaults["tab-size"] = 2; SyntaxHighlighter.autoloader( 'java https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushJava.js', 'js jscript javascript https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushJScript.js', 'text plain https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushPlain.js', 'py python https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushPython.js', 'ruby rails ror rb https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushRuby.js', 'scala https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushScala.js', 'sql https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushSql.js', 'xml xhtml xslt html https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushXml.js' ); SyntaxHighlighter.all(); </script></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small><center> <br/> <span style="font-size: larger">Copyright &#169; 2021 Apache Software Foundation</span> <br/> <br/> <img src="https://www.apache.org/img/ASF20thAnniversary.jpg" height="64px" alt="ASF Logo"> </center></small></p>
</footer>
</body>
</html>