Ink Model URIスキーム
Ink Model仕様は、RFC 3986.
URI Scheme
のガイドラインに準拠したスキームを指定することにより、Uniform Resource Identifiers (URI)を使用してInkModel'sのプライマリインクツリーのノードやビューを参照する方法を定義しています。
仕様では、@@@で定義されている次の用語が使用されています。RFC 3986:
- scheme
- authority
- path
- segment
- unreserved characters
- pchar
- pct-encoded characters
- fragment
Ink Model仕様は、次の構文を使用してInkModelのノードや他の要素を特定するための固有のURIスキームを定めています。
- 
URI = "uim:" [ //authority ] [path] [#fragment] 
- 
authority = skipped 
- 
path = 1 * ( "/" segment ) 
- 
segment = 1 * ( pchar ) 
- 
fragment = optional メモ: URI's authorityの部分は省略されます。 下の表内のすべてのパス定義は、@@@に従って path-rootless とみなされます。RFC 3986. 
パスの部分は、@@@を一意に識別するパーセントエンコードされたURI_(RFC 3986、Section 2.1:https://tools.ietf.org/html/rfc3986#section-2.1_ に定義)を含むセグメントから開始する場合があります。Ink Model. InkModel'sの識別セグメントが省略される場合は、URIがInk Modelレベルでのローカルノード参照に使用され、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>セグメントには、GUID 文字列値としてエンコードされる > > InkNode 識別子が含まれます。例: > _GUID 5454710e-608d-4eee-9552-680f3349ab3e_の InkNode があり、メインインクツリーまたは@@@のInkModelビューに含まれていると仮定します。_URI
https://example.com/inkmodel/9b67babb-a2a3-491b-96ce-71c820ce0c64_, (プロバイダーによって提供されますhttps://example.com/).URI InkModel'sの範囲の InkNode の@@@(local ID): uim:node/5454710e-608d-4eee-9552-680f3349ab3e
URIInkNode の@@@ (グローバルに一意): uim:https%3A%2F%2Fexample.com%2Finkmodel%2F9b67babb-a2a3-491b-96ce-71c820ce0c64/node/5454710e-608d-4eee-9552-680f3349ab3e
Named entities
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ベースのユニーク ID 生成アルゴリズム
このアルゴリズムでは、(文字列値としてエンコードされる)タグや一連の要素に基づいて一意の識別子を生成することができます。
サポートする要素タイプは次のとおりです。
- 整数
- 浮動小数点数
- 文字列
- キーと値のペアとして定義された属性のリスト。ペアのキーと値は文字列タイプとみなされます。
アルゴリズムは下の擬似コードで表現されます。 記載されているメソッドは引数としてタグ値と要素のリストを取得し、一意の MD5 ハッシュを 8 バイトの配列として生成します。
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()は、浮動小数点数の文字列表現を返します。小数点以下の桁数は、10進法で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空間内のY座標を格納するセンサーチャネル。 | 
| 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ビュー
以下の表は、既知のInkModelビューのリストを説明しています。
| URI | 説明 | 
|---|---|
| will://views/3.0/HWR | 現在はSemantic Ink Servicesによって提供されています。 | 
| will://views/3.0/NER | 現在はSemantic Ink Servicesによって提供されています。 | 
備考 このセクションはまだ実験的な状態にあり、掲載されている定義は変更される可能性があります。
セマンティクス
以下の表は、インクモデルの知識グラフにオントロジー知識定義を格納するために使用されるタイプとエンティティのリストを説明しています。
| URI | 説明 | 
|---|---|
| will://semantic/3.0/hasNamedEntityDefinition | 固有表現抽出(NER)の結果を保存する専用エンティティを定義する述語。 | 
| will://semantic/3.0/hasSource | Knowledge Graph のソースを示す述語。 | 
| will://semantic/3.0/hasUri | Knowledge Graph 内の 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 が複数の概念タイプを発見した場合の関連する概念タイプを示す述語。 | 
メモ 本セクションはまだ実験段階であり、記載された定義は変更される可能性があります。
Content Segmentation
下の表には、コンテンツ分割に関してインクモデルの構造を記述する場合に使用される タイプとエンティティのリストを記載します。
| 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 | 第1の点を記述する属性。 | 
| will://shapes/3.0/attr/pt2 | 第2の点を記述する属性。 | 
| will://shapes/3.0/attr/pt3 | 第3の点を記述する属性。 | 
| 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 | φ角度を記述する属性。 | 
| will://shapes/3.0/attr/startAngle | 開始角度を記述する属性。 | 
| will://shapes/3.0/attr/sweepAngle | スウィープ角度を記述する属性。 | 
メモ 本セクションはまだ実験段階であり、記載された定義は変更される可能性があります。