title: a3profile

Acerola3Dファイルのプロファイル
========================================

Acerola3Dフォーマットに含まれる3Dデータや効果音
などの情報はZIPでひとかたまりにまとめられており，
プログラムに埋め込まれているわけではなく独立したものなので，
他のプログラムで手軽に再利用することができます．しかし，
その3Dオブジェクトが何の用途のために作成されているかを
明確に示し，満されている条件をはっきりさせることにより
さらに再利用性を高めることができます．

Acerola3Dでは，3Dオブジェクトの用途とそれが満す条件を
プロファイルという形で指定する方法を規定します．
このプロファイルはURIを識別子とすることで，誰もが自由に
作成することができ，かつ相互利用を促進することができる
ようにしています．

このプロファイルという仕組みはAcerola3Dファイルの必須項目
ではないので、これを指定しなくてもAcerola3Dファイルを公開したり
利用することはできますが、Acerola3Dフォーマットの3Dデータを
作成する際には是非考慮して下さい．

Acerola3Dプロファイルの目的
----------------------------------------

Acerola3Dプロファイルは次の目的を満すことができるように
考えられています．

* Acerola3Dフォーマットの3Dオブジェクトが満す条件を明示する
* Acerola3Dフォーマットのファイル中に，それのプロファイルを
  特定できる情報を記述する
* プロファイルの定義をネット上で簡単に得られるようにする
* プロファイルの親子関係を指定することができる
* このプロファイル情報を用いることにより，Acerola3Dフォーマット
  のファイルを機械的に処理して，条件に合致したファイルかどうか
  自動的に判定できるようにする

これらの項目について以下詳しく解説してゆきます．

条件の明示
----------------------------------------

プロファイルで明示される条件とは以下のような物が考えられます．

* そのAcerola3Dファイルの主な用途の概要
* 含まれるアクションの種類
* キャラクタのだいたいの大きさ
* それぞれのアクションのおおよその時間的長さ
* その他必要な項目

例えば，ロールプレイングゲームで使用するキャラクタとして，
歩くアクション，走るアクション，攻撃のアクション，魔法の
アクション，ダメージを受けた時のアクションが必要で，
表示の都合上たいたい1mから3mぐらいの身長のキャラクタが
必要だというような条件を明示します．

ある非常に限定された目的のためのプロファイルを指定する
には，BVHファイルを公開して，その公開したBVHフィアルを
用いてキャラクタを作成するように規定しても良いでしょう．
3DCGデザイナがそのプロファイルを読みこれに従ってAcerola3D
ファイルを作成した時に，何の変更も加えずに目的のプログラムで
利用することができれば，それは理想的なプロファイルであると
言えます．

このような条件は，基本的に自然言語で記述して後述するように
ウェブブラウザで読むことができるように公開することが推奨
されます．

さらに，セマンティックウェブの概念を導入したRDFによる情報の
記述方法も考察されており、現在試験的にオントロジーを公開しています。
ただし，まだ実験的な段階で一般的な語彙やオントロジーが考慮された
物にはなっていません．今後改善してゆく予定です．

* <http://acerola3d.sourceforge.jp/a3profile/0.2/schema.rdf>
* <http://acerola3d.sourceforge.jp/a3profile/0.2/schema.n3>

(schema.n3で作成してjenaでXMLのRDFに変換しています。)

また，実際にこのオントロジーを用いて実験的にプロファイルを
公開しています．それらのプロファイルは以下のURLで公開しています．

* <http://acerola3d.sourceforge.jp/a3profile/>

Acerola3Dファイルにおけるプロファイルの指定
----------------------------------------

Acerola3Dファイルに含まれるCATALOG.XMLファイルの中で
`<profile>`要素のuri属性を用いてプロファイルを識別するための
URIを指定できるようになっています．このURIを読み出すことに
より，該当する3Dオブジェクトがどのような目的で使用でき，どのような
条件を満しているかを特定することができます．

また，一つのAcerola3Dファイルが複数のプロファイルの条件を
満す場合には，複数の`<profile>`要素を用いて複数のプロファイルを
指定することができるものとします．

ここで使用されるURIは，後述するようにウェブページのURLを使用する
ことが推奨されます．

ネット上での公開
----------------------------------------

上述したように，Acerola3DのプロファイルはURIによって識別されます．
このURIは，プロファイルを作成する人が権利を持っているURIにすべきで，
例えばその人のウェブサイトののURLなどが良いと思います．

また，必須ではありませんがプロファイルを識別するためのURIの
文字列の最後に「.html」を加えることで得られるアドレスにアクセスすると，
そのプロファイルに関する説明がウェブページとして表示される
ようにすることを推奨します．

さらに「.html」ではなく「.rdf」という拡張子を加えて得られる
URIではRDF(Resource Description Framework)によるプロファイルの
厳密な定義が得られるようにすることが推奨されます。
そこで使用するべきオントロジー(語彙)は上述したURLで試験的に
公開しています。

### 例

格闘ゲームのキャラクタを表すAcerola3Dプロファイルがあるとします．
このとき，このプロファイルの識別子，プロファイルの自然言語による
説明のウェブページ，RDFによる定義は以下のようになります．

    識別子URI
      http://foo.bar.com/a3profile/KakutoGameCharacter
    プロファイルの説明ウェブページ
      http://foo.bar.com/a3profile/KakutoGameCharacter.html
    プロファイルを定義するRDF
      http://foo.bar.com/a3profile/KakutoGameCharacter.rdf

親子関係による階層構造の形成
----------------------------------------

二つのプロファイルの間には，親子関係を導入することが可能で，
これにより複数のプロファイルが階層構造を形作ることができる
ものとします．

二つのプロファイルの親子関係とは，一つのプロファイルの定義する条件
がもう一つのプロファイルの定義する条件に，完全に含まれる場合に
成り立つ関係で，含まれる方を親，含む方を子とします．別の言い方を
すれば，条件の緩い方が親で厳しい方が子です．

プロファイルの親子関係の例として，「4つ足動物」プロファイルと
「犬」プロファイルがあった時に「4つ足動物」が親，「犬」が子
という関係が考えられます．

そして，全てのプロファイルは以下のURIで示されるルートプロファイル
の子プロファイルであることが推奨されます．

* http://acerola3d.sourceforge.jp/a3profile/RootProfile

これに従うことにより，全てのプロファイルを統一的に扱う手続が
構築可能になります．

現在のところ，二つのプロファイルの間に親子関係があることを明示する
方法はプロファイルの説明のウェブページで自然言語で記述してもらう方法と
RDFによって記述方法が利用できます。

このような関係を定義する意義は，子のプロファイルの作成を容易に
することと，子のプロファイルの条件を満すファイルは親のプロファイルの
ファイルとしても利用できるために再利用性が向上するということです．

機械による自動判別
----------------------------------------

将来，このようなプロファイルの情報をプログラムが自動的に
判別して処理できるようにセマンティックウェブの概念を導入し
RDFによるメタ情報の記述方法を提供していきたいと考えています．
現在Acerola3Dの情報を記述するための試験的なオントロジを公開している
段階です。
