クリエイティブ・コモンズのメタデータ

著作物のより広く柔軟な提供を目指した新しいライセンスを提案するクリエイティブ・コモンズは、そのライセンス内容のメタデータをRDFで記述できるようにしています。クリエイティブ・コモンズの定義する語彙とその用法を簡単に紹介します。

クリエイティブ・コモンズとは

クリエイティブ・コモンズ([Creative Commons]、以下C.C.と略記)は、知的創作物の“著作権”を尊重しつつ、その成果をより広く容易に利用するための新しい形を提唱する活動です。そのプロジェクトのひとつであるLicensing Project[CCLP]は、「一定の条件の下に創作物を自由に利用してよい」というライセンス(の組み合わせ)を用意し、作者が適当なライセンスを選択して自分の著作物に適用できるようにしています。

C.C.のライセンスは、(1)平易な文の要約とアイコンを使って誰にでも理解できるようにしたコモンズ型共有ライセンス“証書”(Commons Deed);(2)米国の法律に基づいた厳密なライセンス文書(Legal Code);(3)機械可読な形でライセンスを表現し、サーチエンジンなどが利用できるようにしたメタデータDigital Code);の3つで構成されています。この3番目のメタデータは、ライセンスの条件やオプションを表す語彙をRDFスキーマで定義し、この組み合わせでエージェントが理解できるライセンス条項を記述しようという新しい試みです。

C.C.ライセンスのオプション

C.C.のライセンスは、基本的にコンテンツの複製、配布、表示および公開を認めるとした上で、次の3つのオプションをどう扱うかを組み合わせて定義します[CCL-OPTIONS]

Attribution(クレジットの明示)
コンテンツのクレジット(出典)を示す必要があるかどうか
Commercial Use(商用利用)
コンテンツの商用利用を認めるかどうか(作者自身、および作者が別途許諾する場合の商用利用は除く)
Modification(原作に手を加えた作品)
原作に基づく派生作品(翻訳、編曲、映画化、模写、コラージュ、縮小版など)の作成・配布などを自由に認めるか、あるいはオリジナルと同じライセンス条件の下でのみ派生作品の作成・配布などを認めるか、あるいは一切の変更を認めないか

これらの組み合わせにより、あらかじめ定義されたCommons DeedやLegal Codeを利用して、自らの作品を公開することができます。たとえば

という条件の下に複製、配布などを認めるならば、Attribution-NonCommercial-ShareAlikeというタイプのライセンスとなり、クリエイティブ・コモンズが提供する“証書”などをそのまま利用できるわけです。

C.C.メタデータの語彙

C.C.のメタデータを記述するために、RDFのクラスとプロパティが定義されています[CCM-SCHEMA]。以下の語彙は、XML名前空間としてhttp://web.resource.org/cc/を用います。

C.C.のスキーマURIが、いつの間にか(2006年ごろ)http://creativecommons.org/ns#に変更されています。それに伴い、下記の語彙定義もいくつか追加、変更があるようですが、ここでは旧語彙のままにしておきます。それにしても、名前空間を変えるとは、別の語彙を新たに定義することに等しいわけで、厄介な話です。

基本クラスとインスタンス

基本クラスとそれを用いたインスタンスにより、ライセンス記述に必要な概念が定義されています。

基本クラス

クラス内容
Work著作権やライセンスを与える対象となる作品
Agent作品をつくる能力のあるもの:人間、組織、コンピュータなど
License作品を利用するに際しての要件、許可事項の組み合わせ
Permission認められる、もしくは望ましい(あるいは認められない、望ましくない)行為
Requirement利用者に対して要求される(あるいはされない)行為
Prohibition禁止する事項

許可できる事項:Permissionクラスのインスタンス

リソース内容
Reproduction複数の複製をつくること。C.C.のライセンスでは常に許可される
Distribution配布、公開および上演。C.C.のライセンスでは常に許可される
DerivativeWorks二次的な作品(原作の翻訳、編曲、映画化、模写、縮小版など)の作成及び配布

禁止できる事項:Prohibitionクラスのインスタンス

リソース内容
CommercialUse商用/営利目的で権利を行使すること

要求できる事項:Requirementクラスのインスタンス

リソース内容
Notice著作権およびライセンス表示を変更せずに記載すること
Attribution著作権保有者および/もしくは作者のクレジットを表示すること
ShareAlike二次的な作品も原作と同じ条件によってライセンスすること
SourceCode二次的な作品とともにソースコードも提供すること

特定のライセンス:Licenseクラスのインスタンス

リソース内容
PublicDomain著作権を保持せず、全てが制約なしに認められているもの

プロパティ

上で定義したクラス(のインスタンス)をライセンスに結びつけるためのプロパティが定義されています。

プロパティ働きdomainrange
licenseライセンスを保有しているWorkLicense
permits主語ライセンスの認める事項LicensePermission
requires主語ライセンスが要求する事項LicenseRequirement
prohibits主語ライセンスが禁止する事項LicenseProhibition
derivativeWork主語作品の二次著作物であるWorkWork

C.C.メタデータの記述

クリエイティブ・コモンズのライセンス・プロジェクトは、作品のメタデータに(1)Dublin Coreを用いた作品概要;(2)C.C.メタデータ語彙を用いたライセンスの概要;の2つを記述することを推奨しています[CC-IMPLEMENT]

ライセンス・プロジェクトのページ[CCLP]では、フォームで必要なオプションを選択するだけで、作品ページにCCアイコンを掲載するためのHTMLや、上記語彙を用いたメタデータを生成してくれます。ただしこのメタデータは、作品概要までは記述してくれませんから、その部分は作者が補うことになります。

ライセンスを作ったページでさらに'bonus'というセクションに進むと、フォームを使っていくつかの情報を記述したDCメタデータも生成してくれるようです。ただし、日付のフォーマットが不正確だったり、日本語はエスケープされてしまったりするので、できることなら自分で記述する方が良さそうです。

RDFコンテナ要素と名前空間宣言

最初にRDF要素の開始タグを記述し、そこで必要な名前空間を宣言します。ここでは、C.C.メタデータ語彙をデフォルトとし、RDF、DCをそれぞれrdf:dc:として記述します。

(例)

<rdf:RDF 
  xmlns="http://web.resource.org/cc/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/">

作品概要

基本的には通常のDCメタデータと同じですが、rdf:Description要素の代わりにC.C.のWork要素を用いて型付きノードとします。また、dc:creatordc:rightsプロパティを構造化するためにAgent要素ノードを加えることを推奨しています。

(例)

 <Work rdf:about="http://www.kanzaki.com/">
  <dc:title>The Web KANZAKI</dc:title>
  <dc:creator>
   <Agent>
    <dc:title>神崎正英</dc:title>
   </Agent>
  </dc:creator>
  <dc:date>1995-12-15</dc:date>
  <dc:rights>
   <Agent>
    <dc:title>KANZAKI Virtual Company, Inc.</dc:title>
   </Agent>
  </dc:rights>
  ...
  <license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/1.0/"/>
 </Work>

作品概要の最後に記述したlicenseプロパティで、この作品がどのタイプのライセンスを採用しているかを示します。この例ではURIの後半がby-nc-saとなっており、Attribution-NonCommercial-ShareAlike型のライセンスであることを意味しています。

ライセンスの概要

ライセンス定義はhttp://creativecommons.org/licenses/by-nc-sa/1.0/というURIで参照できるのですが、エージェントがその場でライセンス内容を確認できるよう、同じRDF内部に改めてLicense要素を記述し、上記の語彙を用いて概要を示します。

(例)

 <License rdf:about="http://creativecommons.org/licenses/by-nc-sa/1.0/">
  <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
  <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
  <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/>
  <requires rdf:resource="http://web.resource.org/cc/Notice"/>
  <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
  <requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
 </License>

</rdf:RDF>

ここでは(1)許可事項としてReproductionとDistribution(全てのC.C.ライセンスに共通)およびDerivativeWorks;(2)禁止事項としてCommercialUse;(3)要求項目としてNotice、Attribution、ShareAlike;を記述しています。これによって、最初の例で示したのと同じライセンス条件を明示しているわけです。

ここまでの例を連結することで、C.C.のライセンス・メタデータを表すRDFが出来上がります。

CCライセンスとX/HTML

CCのサイトの説明では、RDFをHTMLに結びつける手段として、(1)外部ファイルとして保存し、link要素で参照する、(2)head要素内に直接記述する、(3)body要素内に直接記述する、(4)HTML内にコメントとして(<!-- -->で囲んで)記述する、という4つの方法をあげ、その中で(4)のコメント方法を推奨しています[CC-EXT]。しかし(4)の方法は、「マシンが理解できるようにRDFとしてライセンスを提供する」という考え方と矛盾しており(コメントはHTML作者などの人間が読むためのものです)、適切とは言えません[CLARK]

X/HTMLにRDFを結びつける手段は、現在も議論中のなかなか難しい問題ではあります。現時点で推奨されている(HTMLの文法にも適合する)のは(1)のlink要素による方法です(Dublin Coreの場合を参照)が、文書型宣言を持たないXHTMLであれば、(2)(3)のRDFをXHTMLに直接埋め込む方法も可能であり、検討の価値があります。また、RSSなどの文書メタデータ(あるいは代替文書)に埋め込んでリンクするという(1)の変形も有望です。(4)はシンプルではありますが、ほとんど意味のない方法と言わざるを得ないでしょう。

CCのライセンスRDFのうち、実質的にそのライセンス形態を示しているのはlicense要素ですから、Dublin Coreを従来のHTMLに直接埋め込む方法の応用で、[RFC2731]に従って次のように書くことも可能です。

(例)

<link rel="schema.CC" href="http://web.resource.org/cc/" />
<meta name="CC.license" content="http://creativecommons.org/licenses/by-nc-sa/1.0/" />

多くの場合、アプリケーションは大文字のLicense要素に記述されたRDFを解釈するのではなく、小文字のlicense要素(プロパティ)のby-nc-saなどの文字列を参照してライセンスのタイプを識別することになるでしょうから、実はこれだけで必要な情報は伝えられるのです(URIを辿れば、その定義も参照できます…今のところやはりRDFはコメントアウトされていますが)。

新しい試みとしては、<a>要素のrel属性を利用して、C.C.ライセンスページへのリンクをメタデータにしてしまうという方法があります。2004年2月現在で、C.C.のライセンス生成ページを利用すると、次のようなロゴ埋め込みコードが得られます。

(例)

<a rel="license" href="http://creativecommons.org/licenses/nc-sa/2.0/jp/">
 <img alt="クリエイティブ・コモンズ・ライセンス"
   src="http://creativecommons.org/images/public/somerights2.gif" />
</a>

このように<a>要素のrel属性を利用してメタデータの意味づけを行う方法は「小文字のsemantic web」として知られており、ここからXSLTなどを使ってRDFを抽出することが可能です。

せっかくマシンが理解できるライセンスという画期的なアイデアを使おうというのですから、コメントに埋め込むなどというおかしな方法ではなく、きちんとエージェントに伝わる形でライセンスを記述したいものです。

[画面]mozCCはCCのRDFを見つけるとアイコンを表示したり、ライセンス内容を教えてくれる〔補足〕Mozillaの拡張ツールのひとつであるmozCC[MOZCC]は、文書内にC.C.ライセンスを記述したRDFを見つけると、ツールバーやステータスバーにアイコンを表示し、さらにそれをクリックするとそのRDFに記述されたプロパティなどを表示してくれます。C.C.の定義済ライセンスだけでなく、次に述べるC.C.語彙を用いた拡張でも大丈夫で、とても面白く期待が持てます。

ただ残念なことに、いまのところ何とコメントになった(<!-- -->内の)RDFしか正しく解析しないようです。XHTMLに直接埋め込んだRDFを解析させるには、変なトリックが必要になるので、これはぜひ改良して欲しいところ。使ってみて、作者に改善希望のメールを送りましょう ;-)

C.C.とGPL

C.C.はソフトウェアのライセンスはとりあえずGPLの領域としていたわけですが、2003年12月に、ブラジルでC.C.の枠組みでGPLを適用するというCC-GPLが始まりました。このライセンスのURIはhttp://creativecommons.org/licenses/GPL/2.0/とされ、定義は次のようになっています。

(例)

<License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
 <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
 <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
 <requires rdf:resource="http://web.resource.org/cc/Notice"/>
 <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
 <requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
 <requires rdf:resource="http://web.resource.org/cc/SourceCode"/>
</License>

Deedのページはポルトガル語で、どの程度利用できるものかどうかわかりませんが、少なくともメタデータの記述には使えそうです。CC-GPLに関するメモを参照してください。

C.C.メタデータ語彙を用いた拡張

※C.C.メタデータの語彙そのものについて知れば十分な方は、このセクションを読む必要はありません。これは、メタデータ一般を考えるためにC.C.の語彙を素材として利用した、ちょっとした応用編です。

C.C.のライセンスは、完成された作品の公開を念頭に置いているため、どのオプションでも必ずDistribution(再配布、公開)を認めることになっています。作品が広く流通できるようにという主旨に異存はないのですが、ウェブのようにどんどん書き換えを行って常に更新しているコンテンツの場合、ある時点でのコピーが別の場所で一人歩きしてしまうのは、あまり望ましくありません。

そこで当サイトでは、C.C.のライセンスに基づきつつ、“配布をオフラインに限る”という独自拡張を試みることにしました(実際は、キャッシュやアーカイブはOKとしていますが、単純化して考えます)。これはC.C.ライセンスには該当しないものの、定義にそのメタデータ語彙を使うことは可能です。どんな方法が可能か、応用例として検討します。

単純な拡張

まず、単純な拡張により当サイトのポリシーを定義してみましょう。ここでは、Permissionクラスの新たなインスタンスとしてOnline_DistributionOffline_Distributionを定義し、これらをpermitsprohibitsプロパティで記述します。

Online_DistributionOffline_Distributionが排他であることを示すowl:differentFromを用いるのでOWLの、またコメントを加えるためRDFSの名前空間を追加します。

(例)

  xmlns:owl="http://www.w3.org/2002/07/owl#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

by-nc-saLicense要素のDistribution部分をOnline_DistributionOffline_Distributionで置き換えます。ライセンスはもはやC.C.には該当しませんから、rdf:aboutでC.C.の定義を参照するのではなく、適当なIDを与えます。

(例)

 <License rdf:ID="CC_by-nc-sa_minus_OnlineDistribution">
  <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
  <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  <permits rdf:resource="#Offline_Distribution"/>
  <prohibits rdf:resource="#Online_Distribution"/>
  <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/>
  <requires rdf:resource="http://web.resource.org/cc/Notice"/>
  <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
  <requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
 </License>

Online_DistributionOffline_Distributionを定義します。

(例)

 <Permission rdf:ID="Offline_Distribution">
  <rdfs:comment>Distribution via offline media such as papers or disks</rdfs:comment>
 </Permission>

 <Permission rdf:ID="Online_Distribution">
  <rdfs:comment>Distribution via online media such as the Internet</rdfs:comment>
 </Permission>

C.C.のメタデータはRDFによるリソースの記述ですから、これ以外にもさまざまな語彙を用いた拡張が可能です。逆に、ほかのメタデータの中にこのライセンス情報を埋め込んで利用することもできます。あるいは、ライセンスの概要のみを独立したRDFとして用意し、通常のメタデータからrdf:aboutでURI参照しても構いません。より充実したメタデータの提供手段のひとつとして、この語彙の利用は検討の価値があるでしょう。

旧版で、Online_DistributionOffline_Distributionが重ならないことを示そうとしてowl:disjointWithを記述していましたが、これはクラスの外延が重ならないことを表すプロパティなので、不適切でした。

練習問題1

ここで定義したオンライン配布(Online_Distribution)などは、配布(Distribution)の下位概念なので、その関係を明確に示したいところです。しかし、C.C.ではDistributionは概念(クラス)としてでなく、Permissionクラスのインスタンスになっているので、厳密なロジックでは、直接はそういう拡張ができません。この関係を何とか示そうというのが、ここでの練習問題です

最初に、Distribution(配布)がPermissionという概念のインスタンスになっているということについて検討します。よく考えると、この関係は(少なくとも語彙として選ばれた英単語の意味からすると)ちょっと変ですね。もしPermissionというクラスを考えるなら、そのインスタンスは、個別の案件や行為に与える「許可」であって、行為がPermissionのインスタンスになるわけではありません()。

すっきりさせるために、これがどこか別の語彙セットで定めた、「行為としてのDistributionクラス」のインスタンスでもあると定義することにします。そうすれば、このC.C.語彙が“Distributionという行為に対するPermission”であることがはっきりします。改めてDistributionとは何であるかを定義していくのは骨が折れますから、ここはWordNetの語彙を拝借することにしましょう。C.C.のDistributionは次のように定義できます。

(例)

<Permission rdf:about="http://web.resource.org/cc/Distribution">
 <rdf:type rdf:resource="http://xmlns.com/wordnet/1.6/Distribution-2"/>
</Permission>

こうやってURI参照を使うことで、すでに別の所で定義されている語彙を拡張できてしまうというのは、ウェブ・オントロジーの柔軟で強力な(使い方によっては危険な)ところです。

一方、「行為としてのDistributionクラス」のサブクラスとして「オンライン配布クラス」を導き、Online_DistributionというPermissionはこのクラスのインスタンスでもあると定義すれば、Online_DistributionDistributionと関連があることを間接的にエージェントに伝えられます。「オンライン配布クラス」も、別の名前空間で定義しておく方がとりあえず都合がよいので、以下のようにしてみます。

(例)

<rdfs:Class rdf:about="http://www.kanzaki.com/info/ccl#Online_Distribution">
 <rdfs:subClassOf rdf:resource="http://xmlns.com/wordnet/1.6/Distribution-2"/>
</rdfs:Class>

<Permission rdf:ID="Online_Distribution">
 <rdfs:comment>Distribution via offline media such as papers or disks</rdfs:comment>
 <rdf:type rdf:resource="http://www.kanzaki.com/info/ccl#Online_Distribution"/>
</Permission>

Offline_Distributionについても、同様の手順でDistributionとの関連を示すことができます。

いずれにしても、「○○を認めている」ことを“Permissionクラスのインスタンス”として表現する方法は、「○○を禁止している」という場合には同じ○○を“Prohibitionクラスのインスタンス”として扱わなければならず、基本的な考え方に無理があるといえます。むしろ、プロパティpermitsprohibitsの値域をActionなどとし、DistributionなどをActionのインスタンスとすることで、ライセンスによってある行為(Action)が認められたり認められなかったりできるようにするのが、自然な考え方でしょう。

参考文献

[Creative Commons]
Creative Commons
<http://creativecommons.org/>
クリエイティブ・コモンズ・ジャパン(まず、各ライセンスの日本語訳から), , <http://www.creativecommons.jp/>
[CCLP]
Creative Commons - License Explained,
<http://creativecommons.org/learn/licenses/>
同ライセンス解説の日本語訳, 結城浩氏, <http://www.hyuki.com/trans/cc-licenses.html>
[CCL-OPTIONS]
Creative Commons - Choose License Options
<http://creativecommons.org/license/>
[CCM-SCHEMA]
Creative Commons Metadata RDF Schema
<http://creativecommons.org/learn/technology/metadata/schema.rdf>
[CC-IMPLEMENT]
Implementing Creative Commons Metadata
<http://creativecommons.org/learn/technology/metadata/implement>
[CC-EXT]
Extending Creative Commons Metadata,
<http://creativecommons.org/learn/technology/metadata/extend#html>
[CLARK]
Kendall Grant Clark, Creative Comments: On the Uses and Abuses of Markup, , XML.COM
<http://www.xml.com/pub/a/2003/01/15/creative.html>
[INETMAG2003]
先田千映, 白田秀彰, 神崎正英, クリエイティブコモンズとは, 『インターネットマガジン』2003年4月号, インプレス
<http://internet.impress.co.jp/im/pdf/cc.pdf>
[HOTWIRED]
土屋大洋, 真紀奈, 荒川靖弘, クリエイティブ・コモンズ・ジャパンほか, 日本の「クリエイティブ・コモンズ」の可能性―創造的な著作物の共有地を広げよう, , Matrix Vol.030, Hotwired Japan
<http://www.hotwired.co.jp/matrix/0311/001/>
[RFC2731]
J. Kunze, Encoding Dublin Core Metadata in HTML, , The Internet Society
<http://www.ietf.org/rfc/rfc2731.txt>
[MOZCC]
Nathan R. Yergler, mozCC -- twice as good as View Source, , Version 0.6.1
<http://www.yergler.net/projects/mozcc/>