dmn标准-FEEL数据类型
数据类型的语义
FEEL 数据类型在下面的小节中描述。 数据类型的含义包括:
1、从字面形式(在某些情况下是字符串)映射到语义域中的值
2、属于数据类型的一组语义域值的精确定义,以及它们的操作。 每个数据类型描述一组(可能是无限的)值。 下面定义的数据类型的集合是不相交的。
我们使用斜体表示文字和黑体表示语义域中的值。
1.5.3.1 Number(数字)
FEEL数字基于IEEE754-2008十进制128格式,34位小数的精度和舍入最近的邻居,领带有利于偶数邻居。 数字是XMLSche ma类型精度十进制的限制,相当于具有数学上下文十进制128的Java大十进制。
语法规则37定义了字面数字。 字面由基本10位数字和可选的小数点组成。 不支持INF、+INF和NaN文字。 不区分-0和0。 数字(从,分组分隔符,十进制分隔符)内置函数支持更丰富的文字格式..E.g.
FEEL(number("1.000.000,01", ".", ",")) = 1000000.01.
FEEL不支持字面上的科学符号. E.,1.2e3不是有效的FEEL语法。 使用1.2*10*3代替。
在语义域中,一个FEEL数表示为一对整数(p,s),使得p是携带精度信息的有符号34位整数,s是标度,在范围[−6111.6176]中。 每对表示p/10s。 为了指示数值,我们编写值(p,s)。 E.g. 价值(100,2)=1。 如果精度不受关注,我们可以将值写为简单的1。 请注意,许多不同的对具有相同的值。 例如,值(1,0)=值(10,1)=值(100,2)。
没有价值的不是数字,正无限,或负无限。 用NULL代替。
1.5.3.2 String(字符串)
语法规则35将文字字符串定义为双引号字符序列,例如“abc”。
文字字符串“abc”被映射到语义域,作为三个Unicode字符a、b和c的序列,写为“abc”。
1.5.3.3 Boolean(布尔值)
布尔文字由语法规则36给出。 语义域中的值是真的和假的。
1.5.3.4 Time(时间)
FEEL没有时间文字,尽管我们使用粗体的时间文字来表示语义域中的值。 时间可以使用字符串文字和内置函数time() 来表示.. 。
语义域的时间是 XML Schema time 类型的值。 它可以用一个小时、分钟、秒的数字序列来表示,也可以用一个可选的时间偏移来表示。 如果指定了时间偏移,包括时间偏移=零时,则时间值具有UTC表单,并且与具有UTC表单的所有时间值相当。 如果没有指定时间偏移,则该时间被解释为某一地点的一天中的本地时间,其与UTC时间的关系取决于该地点的时区规则,并且可能每天变化。 正如XMLSche ma第2部分Datatypes中所描述的那样,一天值的本地时间有时只与UTC时间值相媲美。
时间t也可以表示为午夜以来的秒数。 我们把这个写成valuet(t)。E.g,,valuet(01:01:01) = 3661.
valuet 函数是一对一的,但它的范围仅限于[0.86400].. 所以,它有一个 valuet -1(x)返回:如果x在[0.86400]中,则x的相应时间值;
注:即valuet -1(x)总是实际应用于x模86400。
1.5.3.5 Date(日期)
FEEL没有日期文字,尽管它使用粗体日期文字来表示语义域中的值。 日期可以使用字符串文字和内置函数()日期来表示。 语义域中的日期是一个年、月、月、日的数字序列。 年份必须在范围内[-999,999,999..999,999]。
必要时,包括数值valuedt 函数,一个日期值被认为相当于一个日期时间一天的时间是UTC(00:00:00)的值。
1.5.3.6 date-time(日期和时间)
FEEL没有日期-时间文字,尽管它使用粗体日期-时间文字来表示语义域中的值。 日期-时间可以使用字符串文字和内置函数()日期和时间来表示。
语义中的日期和时间是年份、月、日、小时、分钟、秒和从世界协调时间(U TC)偏移的可选时间序列。 年份必须在范围内[-999,999,999..999,999]。 如果有关联的时间偏移,包括零时,则日期-时间值具有UTC表单,并且与具有UTC表单的所有其他日期-时间值相当.. 如果没有相关的时间偏移,则根据该位置的时区规则,时间被视为一天中的一个本地时间。
注:将时区规则投射到未来可能只对短期日期-时间值是安全的。
1.5.3.7 days and time duration(天数和时间)
FEEL没有持续时间文本,尽管我们使用粗体持续时间文本来表示语义域中的值。持续时间可以使用字符串文字和内置函数duration()来表示。 字符串文字引号中字符的文字格式由XPath数据模型日时间持续时间数据类型的词汇空间定义。 语义域中的天数和时间持续时间是持续时间的天数、小时、分钟和秒的数字序列,归一化使这些数字之和最小化。 例如,FEEL(duration(“P0DT25H”)=P1DT1H。
1.5.3.8 years and months duration(年份和月份)
FEEL没有持续时间文本,尽管我们使用粗体持续时间文本来表示语义域中的值。 持续时间可以使用字符串文字和内置函数duration()来表示。 字符串文字引号中字符的文字格式由XPath数据模型年月持续时间数据类型的词汇空间定义。 语义域中的一年和几个月持续时间是持续时间的一对数字,归一化使这些数字的和最小化。 例如,FEEL(duration("P0Y13M")) = P1Y1M.
1.5.3.9 三元逻辑
像SQL和PMML一样,FEEL使用三元逻辑来实现真值。 在预测建模标记语言Predictive Modeling Markup Language中,使用D x D → D。
1.5.3.10 Context(上下文)
FEEL上下文是称为上下文项的(键、表达式)对的部分有序集合。 在语法中,键可以是名称或字符串。 键映射到语义域中的字符串。 这些字符串在上下文中是不同的。 域中的上下文使用带有字符串键的粗体FEEL语法来表示,例如。 { "key1" : expr1, "key2" : expr2, … }.
从上下文值表达式m中选择名为key1的条目的值的语法为m.key1。
如果key1不是合法名称,或者出于某种原因希望将密钥视为字符串,则允许使用以下语法:get value(m,“ key1”)。 从语义域、中的上下文m通过键选择值表示为m.key1或get value(m,“ key1”)
若要从上下文m中检索密钥列表、值对,可以使用以下内置函数:get entries(m).
例如,以下情况是 true:
上下文条目中的表达式可能不引用相同上下文条目的键,但可以引用相同上下文中先前上下文条目中的键(作为QNs)以及范围中的其他值(作为QNs)。
1.5.3.11 Ranges(范围)
FEEL支持一系列值的紧凑语法,在决策表测试单元和其他地方有用。 一个范围映射到语义域作为一个单一的可比值(数字、日期/时间/持续时间或字符串)或一对可比端点值和一个端点包含代码,该代码指示是否包含一个或两个端点。
范围语法支持文字和符号(symbolic )端点,但不支持任意表达式。 由于日期/时间/持续时间值没有文字语法,这些类型的范围必须使用符号端点。E.g. ,下面的上下文定义了一个范围的持续时间,命名为从一到两分钟,包括。
{
one min: duration("PT1M"), two min: duration("PT2M"), soon: [one min..two min]
}
相关教程
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-04
- 2020-04-03
- 2020-04-03
- 2020-04-03
- 2020-04-03
- 2020-03-31