Skip to main content

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 provider https://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将墨水笔画分组成形状。

备注 该部分仍处于实验阶段,所列的定义可能会发生变化。

形状

下表描述了一组类型和实体,涉及形状识别和定义。

URI描述
will://shapes/3.0/Rectangle将墨水笔画分组成矩形。
will://shapes/3.0/Circle将墨水笔画分组成圆形。
will://shapes/3.0/Ellipse将墨水笔画分组成椭圆形。
will://shapes/3.0/Triangle将墨水笔画分组成三角形。
will://shapes/3.0/Doodle将墨水笔画分组成涂鸦。
will://shapes/3.0/Arc将墨水笔画分组成弧线。
will://shapes/3.0/Line将墨水笔画分组成直线。
will://shapes/3.0/Polygon将墨水笔画分组成多边形。
will://shapes/3.0/Parallelogram将墨水笔画分组成平行四边形。
will://shapes/3.0/Rhombus将墨水笔画分组成菱形。
will://shapes/3.0/attr/points描述一组点的属性。
will://shapes/3.0/attr/pt描述单个点的属性。
will://shapes/3.0/attr/pt1描述第一个点的属性。
will://shapes/3.0/attr/pt2描述第二个点的属性。
will://shapes/3.0/attr/pt3描述第三个点的属性。
will://shapes/3.0/attr/radius描述半径的属性。
will://shapes/3.0/attr/radiusX描述半径 x 的属性。
will://shapes/3.0/attr/radiusY描述半径 y 的属性。
will://shapes/3.0/attr/rect描述矩形的属性。
will://shapes/3.0/attr/centerPoint描述中心点的属性。
will://shapes/3.0/attr/angle描述角度的属性。
will://shapes/3.0/attr/phiAngle描述 phi 角的属性。
will://shapes/3.0/attr/startAngle描述起始角的属性。
will://shapes/3.0/attr/sweepAngle描述扫描角的属性。

说明 本节仍处于实验状态,所列的定义可能会发生变化。