URI方案
Ink Model 规范定义了使用 Uniform Resource Identifiers (URI)指代一级墨水树参考节点 InkModel's 的方式,或根据RFC 3986.
URI Scheme 中的指南指定方案,
根据其在@@@中的定义,规范使用了下 列项目:RFC 3986:
- scheme
- authority
- path
- segment
- unreserved characters
- pchar
- pct-encoded characters
- fragment
Ink Model 规范提供一个特定 URI 方案,使用下列语法,标识 InkModel 节点和其他元素:
- URI = "uim:" [ //authority ] [path] [#fragment]
- authority = 跳过
- path = 1 *(“/"段)
- segment = 1 *(字符串指针)
- fragment = 可选
说明:
URI's authority 分量被跳过。 根据@@@,下表中的所有路径定义都被认为是路径-无根的 RFC 3986.
路径分量可以包含百分比编码的 URI 的段开始*(在 RFC 3986 中定义,第 2.1 节:https://tools.ietf.org/html/rfc3986#section-2.1* ,唯一标识@@@Ink Model. 当跳过 InkModel's 标识段时,在 Ink Model 级别上,将使用 URI 作为本地节点引用,URI 将被当做本地节点 URI.
重要事项: 实现时必须编码实体的 URIs,它属于序列化的模型,只有本地形式(使用本地 URIs)。
节点的 Ink Model
Path:
<pct-encoded InkModel URI/>node/<node-id>
Fragment: n/a
Description: URI,包含在 Ink Model.
<pct-encoded InkModel URI>
段包含百分比编码的 URI of an InkModel.。该段是可选的。<node-id>
段包含一个 > > InkNode 标识符,作为 GUID 字符串值进行编码。实例: 假设有一个GUID 5454710e-608d-4eee-9552-680f3349ab3e的 InkNode,包含在主墨水树中,或 InkNode 的 InkModel(_URI
https://example.com/inkmodel/9b67babb-a2a3-491b-96ce-71c820ce0c64_
, (provided by the providerhttps://example.com/
).URI)的视图(在 InkModel's 范围中)(local ID): uim:node/5454710e-608d-4eee-9552-680f3349ab3e
URI(InkNode)(全局唯一): uim:https%3A%2F%2Fexample.com%2Finkmodel%2F9b67babb-a2a3-491b-96ce-71c820ce0c64/node/5454710e-608d-4eee-9552-680f3349ab3e
具名实体定义的
Path:
<pct-encoded InkModel URI/>ne/<ne-id>
Fragment: n/a
Description: URI,通常用于给特定 InkModel 节点的知识进行分组。
<pct-encoded InkModel URI>
段包含百分比编码的 URI of an InkModel.。该段是可选的。<ne-id>
段包含具名实体定义的标识符。
基于 MD5-hash 的唯一标识符生成算法
根据所述的算法,可基于标签生成唯一标识符(编码为字符串值)和一组分量。
所支持的分量类型包括:
- 整数
- 浮点数
- 字符串
- 定义为密钥-值对的属性列表,对的密钥和值被认为是字符串类型。
算法以下文的伪代码方式表示。 所述的方法取一个标签值和一个分量列表作为参数,生成唯一的 8 字节数组的 MD5 hash 值。
METHOD generateMD5Hash(tag, components): RETURNS byte[8]
SET buffer = new StringBuffer()
buffer.write(tag)
buffer.write("对于每种分量类型,上述伪代码片段中使用的\n")
FOREACH component OF components
IF (component is defined)
buffer.write(component.convertToString())
buffer.write("\n")
RETURN MD5_HASH(buffer.toString())
convertToString()
方法 应按照以下方式实现:
-
Integer number -
convertToString()
返回整数的字符串表达 -
Floating-point number -
convertToString()
返回浮点数的字符串表示,使用固定小数点表示法,小数点后保留4位数字 -
String -
convertToString()
返回字符串值 -
List of properties -
convertToString()
伪代码实现:
METHOD convertToString(properties): RETURNS string
SET buffer = new StringBuffer()
properties = SORT(properties) // sort the properties list by ascending alphabetical name order
FOREACH pair OF properties
buffer.write(pair.name)
buffer.write("\n")
buffer.write(pair.value)
buffer.write("\n")
RETURN buffer.toString()
词汇表
传感器通道类型
下表描述了一组常见的传感器通道类型,定义为URI,用于区分不同的传感器特征。
URI | 描述 |
---|---|
will://input/3.0/channel/X | 存储在表面或3D空间中的x坐标的传感器通道。 |
will://input/3.0/channel/Y | 存储在表面或3D空间中的y坐标的传感器通道。 |
will://input/3.0/channel/Z | 存储在3D空间中的z坐标的传感器通道。 |
will://input/3.0/channel/Timestamp | 存储与前一个样本的时间差的传感器通道。 |
will://input/3.0/channel/Pressure | 存储在笔尖上施加的压力的传感器通道。 |
will://input/3.0/channel/RadiusX | 存储触摸事件的x半径的传感器通道。 |
will://input/3.0/channel/RadiusY | 存储触摸事件的y半径的传感器通道。 |
will://input/3.0/channel/Azimuth | 存储笔设备的方位角的传感器通道。 |
will://input/3.0/channel/Altitude | 存储笔设备的海拔角的传感器通道。 |
will://input/3.0/channel/Rotation | 存储笔设备的筒体旋转的传感器通道。 |
核心元素
下表描述了一组被定义为URI的 WILL 核心元素类型。
URI | 描述 |
---|---|
will://core/3.0/core/Path | 墨水笔画 |
will://core/3.0/core/Sensordata | 传感器数据 |
will://core/3.0/core/Brush | 笔刷 |
常见墨水模型视图
下表描述了一组已知的 InkModel 视图。
URI | 描述 |
---|---|
will://views/3.0/HWR | 目前由语义墨水服务提供。 |
will://views/3.0/NER | 目前由语义墨水服务提供。 |
备注 该部分仍处于实验阶段,所列的定义可能会发生变化。
语义
下表描述了一组类型和实体,用于将本体知识定义存储到墨水模型的知识图中。
URI | 描述 |
---|---|
will://semantic/3.0/hasNamedEntityDefinition | 保存具名实体识别(NER)结果的专有实体定义的谓语。 |
will://semantic/3.0/hasSource | 知识图谱来源的谓语。 |
will://semantic/3.0/hasUri | 知识图谱中 URI 的谓语。 |
will://semantic/3.0/hasAbstract | 描述实体简短摘要的谓语。 |
will://semantic/3.0/hasImage | 描述语义实体的图像的谓语。 |
will://semantic/3.0/hasThumb | 概念类型缩略图的谓语。 |
will://semantic/3.0/hasArticle | 指向语义实体的文章的 URL 的谓语。 |
will://semantic/3.0/hasType | 描述概念类型的谓语。 |
will://semantic/3.0/hasCategory | 语义实体类别的谓语。 |
will://semantic/3.0/hasLabel | 语义实体的标签的谓语。 |
will://semantic/3.0/is | 手写识别最佳数学方法的谓语。 |
will://semantic/3.0/hasAlt | 替代识别结果的谓语。 |
will://semantic/3.0/hasBBox | 识别字边界框的谓语。 |
will://semantic/3.0/hasRelevantConcept | 如果 NER 找到多种类型,相关概念类型的谓语。 |
说明 本节仍处于实验状态,所列的定义可能会发生变化。
内容分割
下表介绍了类型和实体列表,它们用于描述内容分段时墨水模型的结构。
URI | 描述 |
---|---|
will://segmentation/3.0/TextRegion | 定义包含文本的较大区域。 |
will://segmentation/3.0/Paragraph | 将文本行分组成段落。 |
will://segmentation/3.0/TextLine | 将单词分组成文本行。 |
will://segmentation/3.0/Word | 将墨水笔画分组成单词。 |
will://segmentation/3.0/Phrase | 在逻辑上将单词分组成单元。 |
will://segmentation/3.0/LineBreak | 定义换行符。 |
will://segmentation/3.0/MathBlock | 将墨水笔画分组成数学公式。 |
will://segmentation/3.0/Shape | 将墨水笔画分组成形状。 |
备注 该部分仍处于实验阶段,所列的定义可能会发生变化。