ウィジェットとオペレータのディスクリプションを作成

Application Mashup (WireCloud) course @ https://fiware-academy.readthedocs.io/

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

イントロダクション

Presenter Notes

イントロダクション

WireCloud では、すべてのアプリケーション・マッシュアップ・コンポーネントは メタデータ情報を提供する config.xml ファイルを提供する必要があります。 さらに、すべてのコンポーネントは以下の情報を提供する必要があります。

  • vendor : マッシャブル・アプリケーション・コンポーネントのベンダー/ ディストリビュータのID。"/" 文字を含めることはできません
  • name : マッシャブル・アプリケーション・コンポーネントの名前。 "/" 文字 を含めることはできません
  • version : マッシャブル・アプリケーション・コンポーネントの現在の バージョン。ドットで区切られた数字の開始シーケンスを定義する必要が あります。さらに、ゼロは単独でしか使用できません。たとえば、0.1は 有効ですが03.2は無効です 。リリース番号に続いて、プレリリース・タグを 付けることができます。プレリリース・タグは、一連の文字です。a (アルファ), b (ベータ) または rc (リリース候補)の後に、数字が続きます。 プレリリース・タグを使用すると、バージョンは追加されたバージョンよりも 古いものと見なされます。つまり、リビジョン2.4はリビジョン2.4rc1よりも 新しいです。リビジョン2.4rc1は2.4b1または2.4a1よりも新しいです

Presenter Notes

イントロダクション

これらのツリー属性 (vendor, name and version) はリソースを一意に識別します。 そのため、WireCloud リソースのコレクション (ウィジェット、マッシュアップ、 オペレータなど) にそのような識別子を繰り返すことはできません。これらの属性に 加えて、すべてのリソースは、オプションで、以下の属性を提供できます。

  • title : マッシャブル・アプリケーション・コンポーネントのユーザ・ インターフェースで使われる名前。たとえば、マッシャブル・アプリケーション・ コンポーネントを一覧表示するときに使用されます。このフィールドは翻訳可能 であるため、マッシャブル・アプリケーション・コンポーネントを一意に識別する ためには使用されません。このフィールドは、ワークスペースに追加された ウィジェットのデフォルトのタイトルとしても使用されます。
  • authors : コンマで区切られた開発者のリスト。例えば :

    Álvaro Arranz, Aitor Magan
    

    E メールや URL を入力することもできます :

    Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)
    
  • contributors : コンマで区切られた貢献者のリスト。 authors フィールドと同じ形式

Presenter Notes

イントロダクション

  • email : サポートを受けるための E メールアドレス
  • license : マッシャブル・アプリケーション・コンポーネントに関連付けられている ライセンスの名前
  • description : マッシャブル・アプリケーション・コンポーネントの簡単な説明文
  • longdescription : マッシャブル・アプリケーション・コンポーネントを記述する マークダウン・ファイルへの相対パス
  • changelog : 各バージョンでマッシャブル・アプリケーション・コンポーネントに 加えられた変更を詳述したマークダウン・ファイルへの相対パス
  • image : カタログ用のマッシャブル・アプリケーション・コンポーネントイメージの 絶対 URL またはテンプレートの相対 URL。(170×80ピクセル)
  • smartphone : スマートフォンで使用する画像。(59×60ピクセル)
  • doc : マッシャブル・アプリケーション・コンポーネントのドキュメントの 絶対 URL またはテンプレートの相対 URL

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

XML

Presenter Notes

XML

XML を使用して記述されたマッシャブル・アプリケーション・コンポーネントは、 開発したいコンポーネントに応じて widget または operator と呼ばれるルート要素 に http://wirecloud.conwet.fi.upm.es/ns/macdescription/1 名前空間を使用する べきです。このルート要素には、リソースを識別する3つの属性 (vendor, name and version) が必要です。さらに、これは先に説明したように、 リソースに関するすべての基本情報を引き継ぐことになる別の要素 details を含むべきです。

Presenter Notes

XML

次のコードは、XML を使用したウィジェットの説明を示しています :

<?xml version='1.0' encoding='UTF-8'?>
<widget xmlns="http://wirecloud.conwet.fi.upm.es/ns/macdescription/1" vendor="CoNWeT" name="map-viewer" version="2.5.4">
    <details>
        <title>Map Viewer</title>
        <authors>Example &lt;user@example.com&gt;</authors>
        <email>user@example.com</email>
        <image>images/catalogue.png</image>
        <description>Place things on map! Explore the world, trace routes...</description>
        <longdescription>DESCRIPTION.md</longdescription>
        <license>AGPLv3+ w/linking exception</license>
        <licenseurl>http://www.gnu.org/licenses/agpl-3.0.html</licenseurl>
        <doc>doc/userguide.md</doc>
        <changelog>doc/changelog.md</changelog>
    </details>
    ...
</widget>

Presenter Notes

XML

そして、これが XML でのオペレータの記述です :

<?xml version='1.0' encoding='UTF-8'?>
<operator xmlns="http://wirecloud.conwet.fi.upm.es/ns/macdescription/1" vendor="CoNWeT" name="ngsi-source" version="3.0a2">
    <details>
        <title>Map Viewer</title>
        <homepage>https://github.com/wirecloud-fiware/ngsi-source</homepage>
        <authors>Example &lt;user@example.com&gt;</authors>
        <email>user@example.com</email>
        <image>images/catalogue.png</image>
        <description>Retrieve Orion Context Broker entities and their updates in real time.</description>
        <longdescription>DESCRIPTION.md</longdescription>
        <license>AGPLv3+ w/linking exception</license>
        <licenseurl>http://www.gnu.org/licenses/agpl-3.0.html</licenseurl>
        <doc>doc/userguide.md</doc>
        <changelog>doc/changelog.md</changelog>
    </details>
    ...
</operator>

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

RDF

Presenter Notes

RDF

XML フォーマットに加えて、ウィジェットとオペレータのディスクリプション (config.xml ファイル) は次の RDF 記法のうちの1つを使って書くこともできます : n3, turtle または rdf/xml。これらの RDF 表記法は、通常、WireCloud が提供する XML 表記法よりも複雑で、config.xml に追加のメタデータを追加したい場合には より適しています。WireCloud は、RDF を使用する他のシステムにコンポーネントの メタデータをエクスポートするために、この構文を使用します。 ただし、これはユーザからは見えません)。

できるだけ XML 表記を使用することをお勧めします。

Presenter Notes

RDF

config.xml ファイルに含める必要がある最初のものはすべての名前空間を ドキュメントの残りの部分で利用可能にするためのヘッダです。少なくとも WireCloud 名前空間 ("http://wirecloud.conwet.fi.upm.es/ns/widget") をインポートする必要がありますが、コードを書く作業を容易にするために 他の名前空間をインポートすることができます。次の行に例があります。 ご覧のとおり、WireCloud 名前空間は "wire" としてタグ付けされています。 さらに、他の名前空間もいくつかインポートされています (usdl-core, foaf, rdfs,...) :

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:usdl-core="http://www.linked-usdl.org/ns/usdl-core#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:wire="http://wirecloud.conwet.fi.upm.es/ns/widget#"
xmlns:vCard = "http://www.w3.org/2006/vcard/ns#"
xmlns:gr="http://purl.org/goodrelations/v1#">

Presenter Notes

RDF

turtle を使用すると :

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix usdl-core: <http://www.linked-usdl.org/ns/usdl-core#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix wire: <http://wirecloud.conwet.fi.upm.es/ns/widget#> .
@prefix vCard: <http://www.w3.org/2006/vcard/ns#> .
@prefix gr: <http://purl.org/goodrelations/v1#> .

Presenter Notes

RDF

RDF ヘッダを追加したら、次のステップは作成したいコンポーネントに応じて必要な ノードを追加することです : 作成したいコンポーネントによって、 wire:Operator または wire:Widget です。これがルート・ノードになるため、 ウィジェットまたはオペレータに関連付けられているすべてのメタデータは このノードの子孫になります。

リソースに関する基本情報は、次のノードを使用して追加する必要があります :

  • vendor: udsl-core:hasProvider
  • name: dcterms:title
  • version: usdl-core:versionInfo
  • description: dcterms:description
  • title: wire:displayName
  • author: dcterms:creator
  • email: vcard:addr
  • image: wire:hasImageUri
  • smartphoneimage: wire:hasiPhoneImageUri
  • doc: foaf:page

Presenter Notes

RDF

次のコードは、オペレータのディスクリプションの例を示しています :

<wire:Operator rdf:about="http://wirecloud.conwet.fi.upm.es/ns/widget#CoNWeT/entity-service/2.3.2">
    <usdl:hasProvider>
        <gr:BusinessEntity rdf:nodeID="Ne2a8644226d049239a5a9856bafcd7c6">
            <foaf:name>CoNWeT</foaf:name>
        </gr:BusinessEntity>
    </usdl:hasProvider>
    <wire:hasImageUri rdf:resource="images/catalogue.png"/>
    <wire:hasiPhoneImageUr rdf:resource="images/catalogue_mob.png"/>
    <wire:displayName>Entity Service</wire:displayName>
    <dcterms:title>entity-service</dcterms:title>
    <usdl:versionInfo>2.3.2</usdl:versionInfo>
    <dcterms:description>This operator permits us gather information about several entities (Lamp posts, AMMSs and Regulators) from any NGSI service.</dcterms:description>
    <foaf:page rdf:resource="docs/index.html"/>
    <dcterms:creator>
        <foaf:Person rdf:nodeID="Ne3468f9471d349908dd8e81167153ac8">
            <foaf:name>sblanco</foaf:name>
        </foaf:Person>
    </dcterms:creator>
    <vcard:addr>
        <vcard:Work rdf:nodeID="N6d57fc77a0e643138195f0db44b95fb2">
            <vcard:email>example@example.com</vcard:email>
        </vcard:Work>
    </vcard:addr>
</wire:Operator>

Presenter Notes

RDF

他の RDF フォーマットも使用できます (例 : n3) :

!n3
<http://wirecloud.conwet.fi.upm.es/ns/widget#CoNWeT/entity-service/2.3.2> a wire:Operator ;
dcterms:creator [ a foaf:Person ;
    foaf:name "example" ] ;
dcterms:description "This operator permits us gather information about several entities (Lamp posts, AMMSs and Regulators) from any NGSI service." ;
dcterms:title "entity-service" ;
wire:displayName "Entity Service" ;
wire:hasImageUri <images/catalogue.png> ;
usdl:hasProvider [ a gr:BusinessEntity ;
    foaf:name "CoNWeT" ] ;
usdl:versionInfo "2.3.2" ;
vcard:addr [ a vcard:Work ;
    vcard:email "example@example.com" ] ;
foaf:page <docs/display/wirecloud> .

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

エントリ・ポイント

Presenter Notes

エントリ・ポイント

ウィジェットとオペレータはよく似ていますが、同じではありません。オペレータには ビューがないため、両者には違いがあります。つまり、オペレータのディスクリプション は初期 HTML ドキュメントをエントリ・ポイントとして使用しません。代わりに、 オペレータは、それらの記述子ファイルで javascript ファイルのリストを定義します。

Presenter Notes

エントリ・ポイント

ウィジェット

ウィジェットを定義するために XML を使用する場合は、HTML エントリ・ポイントを 設定するために contents 要素を定義する必要があります。この要素は、 前述のとお、ルート要素 (widget) に含まれています :

<contents src="index.html"/>

RDF を使用してウィジェットを記述する場合は、HTML エントリ・ポイントを 設定するために要素 usdl:utilizedResource を設定する必要があります。 次のコードは N3 を使用した例です :

usdl:utilizedResource <index.html> ;

Presenter Notes

エントリ・ポイント

オペレータ

XML を使ってオペレータを開発した場合は、scripts 要素を使って実行される JS ファイルを定義しなければなりません。次のスニペットでわかるように、 この要素はルート要素 (operator) に含まれている必要があります :

<scripts>
    <script src="js/main.js"/>
    <script src="..."/>
</scripts>

Presenter Notes

エントリ・ポイント

オペレータ

オペレータの JS ファイルを RDF に設定するには、要素 usdl:utilizedResource を 設定し、各ファイルのインデックスを設定する必要があります。 これを行うには、次の例に従うことができます :

!n3
<http://wirecloud.conwet.fi.upm.es/ns/widget#CoNWeT/entity-service/2.3.2> a wire:Operator ;
    usdl:utilizedResource <js/main.js> ;
    ...

<js/main.js> a usdl:Resource ;
    wire:index "0" .

XML のような他の RDF フォーマットを使うこともできます :

!xml
<usdl:utilizedResource>
    <usdl:Resource rdf:about="js/main.js">
        <wire:index>0</wire:index>
    </usdl:Resource>
</usdl:utilizedResource>

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

サポートされているディスクリプション形式の切り替え

Presenter Notes

サポートされているディスクリプション形式の切り替え

WireCloud は自動的に マッシャブル・アプリケーション・コンポーネントの ディスクリプションのフォーマットを変換するためのツールを提供します。 変換する場合は、convert コマンドを使用できます。このツールを使用するには WireCloud がインストールされている必要があります。詳細については、 インストールおよび管理ガイドを参照してください。

$ wirecloud-admin convert [options] <source_widget_descriptor> [dest_file]

このコマンドでサポートされている最も重要なオプションは -d フラグです、 これは出力フォーマットを指定することを可能にします。現在、次のフォーマットを 使うことができます : xml, rdf および old_xml。また、使用するフレーバーまたは RDF を指定できる --rdf-format オプションもあります。たとえば、 ディスクリプションの RDF (n3) バージョンを取得したい場合は、 次のコマンドを実行できます :

$ wirecloud-admin convert -d rdf --rdf-format n3 config.n3

Presenter Notes

サポートされているディスクリプション形式の切り替え

これは新しいディスクリプションを標準出力に出力します。結果をファイルに保存する には、[dest_file] 引数を使用してください。次の例では、config.ttl ディスクリプション・ファイルを RDF/turtle から xml に変換して、 config.xmlファイルを作成します :

$ wirecloud-admin convert -d xml config.ttl config.xml

help コマンドを使用して、convert コマンドに関する詳細情報をいつでも入手できます :

$ wirecloud-admin help convert

Presenter Notes

ウィジェットとオペレータのディスクリプションを作成

Presenter Notes

以下のチュートリアルでは、ウィジェットまたはオペレータを作成するためのガイドを します。これらのチュートリアルは config.xml ファイルに追加できる他の設定を 含みます。しかし、これらのドキュメントの構造を理解するための最良の方法は いくつかの例を見ることです。

github にはウィジェットやオペレータがいくつかあります :

Presenter Notes

Thanks!

Presenter Notes