RDFa について勉強してみた。


##RDFa?
htmlをマークアップするための方法の１つとして，RDFaがあります。（他にmicrodataとmicroformatsという２大巨人がいます。）個人的には，書き方が簡便で，大手の検索エンジンが採用すると公言しているmicrodataを支援していました。私たちが開発している創薬・疾患研究のための生命科学分野のデータベースの横断検索サービス [Sagace](http://sagace.nibio.go.jp/index.html) では，microdataを使ってマークアップしているサイトの結果をよりよく表示するというサービスを提供しています。[Sagace:マークアップ方法](http://sagace.nibio.go.jp/press/metadata/markup/) 。というわけでmicrodataを超プッシュしていたのですが，最近，RDFa Liteというやっちゃが現れ，書き方は，microdata並に簡単だし，外部のボキャブラリも使いやすいので，もしかしたらRDFa Liteの方が良いかもしれないということがあり，乙女心は揺れております。（詳細は，後で書きます）
RDFa Liteについてはあらかた理解していたのですが，じゃあ，RDFa Core(もともとはこれがRDFaだったのですが，RDFa Liteと区別するために，こう呼んでるみたいです。）と比べて何が違うのさ，ということを知らなかったので（遅いって？ごめんよ。だってそんなに使わないと思ったんだもん。でも，古文を理解するみたいに大事なこともあるかも。）RDFa について調べてみました。

手っ取り早く理解するには，コードを見ようぜ，というわけで，
ここのhtmlを追ってみました。[http://www.w3.org/TR/rdfa-syntax/#s_Syntax_overview](http://www.w3.org/TR/rdfa-syntax/#s_Syntax_overview)

以下雑記です。もしかしたら，誰かの役に立つ解説もあるかもしれない。
けど，ほんとただのメモです。分かりにくいところがあったら，@maoringoまで聞いてください。

## RDF Attributes Examplesの雑多な解説

もとのhtmlを…

```html
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Page 7</title>
    <meta name="author" content="Mark Birbeck" />
    <link rel="prev" href="page6.html" />
    <link rel="next" href="page8.html" />
  </head>
  <body>...</body>
</html>
```
RDFa でマークアップしてみたよ。

```html
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>My home-page</title>
    <meta property="http://purl.org/dc/terms/creator" content="Mark Birbeck" />
    <link rel="http://xmlns.com/foaf/0.1/topic" href="http://www.example.com/#us" />
  </head>
  <body>...</body>
</html>
```

propertyを付け加えて，語彙の指定をしている。
link（関連する別のファイル）についても，その説明とURIを追加して書いている。

prefixを追加して，本文の表示を簡単にすることも出来る。

```html
<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="foaf: http://xmlns.com/foaf/0.1/
          dc: http://purl.org/dc/terms/"
  >
  <head>
    <title>My home-page</title>
    <meta property="dc:creator" content="Mark Birbeck" />
    <link rel="foaf:topic" href="http://www.example.com/#us" />
  </head>
  <body>...</body>
</html>
```

リンク内にprefixを入れてrelを使ってpredicateを書き，そのobjectをhref内に書くのもあり。ちなみに。relがそのまんまの矢印でー＞revがreverseで逆側の矢印＜ーということらしい。そして，このrelとrevはどこでも使えるらしい。

```html
This document is licensed under the 
<a prefix="cc: http://creativecommons.org/ns#"
   rel="cc:license"
   href="http://creativecommons.org/licenses/by-nc-nd/3.0/"
   >Creative Commons By-NC-ND License</a>.
```

propertyもrelと同様に使えるが，もともとは，propertyの場合は，文字列をObjectとすることを対象としており，relは他のソースのオブジェクトでURIであることを前提としていたらしい。でも，いくつかこれに関して議論している人の投稿を見た限り，どっちでもいーよーと書いていた。参考 : [In RDFa, difference between property=“” & rel=“”, and resource=“” & about=“”?](http://stackoverflow.com/questions/16873611/in-rdfa-difference-between-property-rel-and-resource-about)

日付など，正式なフォーマットで書いておいたほうが，メタデータとしては良いけれど，実際の表記は，自然言語の方が読みやすいよね〜という場合にはcontentが使えて，データタイプ（その日付データの書き方は何のボキャブラリを使ったのかを示す，RDFでいうと^xsd:dateTime　という感じかな？）もdatatypeで記述できる。

```html
<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="xsd: http://www.w3.org/2001/XMLSchema#
          dc: http://purl.org/dc/terms/"
  >
  <head><title>My Home Page</title></head>
  <body>
    <h1 property="dc:title">My home-page</h1>
    <p>Last modified: <span property="dc:modified"
            content="2015-09-16T16:00:00-05:00"
            datatype="xsd:dateTime">16 September 2015</span>.</p>
  </body>
</html>
```

subjectの内容を明示して決められるabout属性。

```html
<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="bibo: http://purl.org/ontology/bibo/
          dc: http://purl.org/dc/terms/"
  >
  <head>
    <title>Books by Marco Pierre White</title>
  </head>
  <body>
    I think White's book
    '<span about="urn:ISBN:0091808189" 
           property="dc:title">Canteen Cuisine</span>'
    is well worth getting since although it's quite advanced stuff, he
    makes it pretty easy to follow. You might also like
    <span 
     about="urn:ISBN:1596913614" 
     property="dc:description"
     >White's autobiography</span>.
  </body>
</html>
```
マークアップしたいオブジェクトに対する直接のpredicateの他に，Subjectからそれが何の種類であるかを示すpredicateとして，aboutが使えるらしい。

```html
<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="bibo: http://purl.org/ontology/bibo/
          dc: http://purl.org/dc/terms/"
  >
  <head>
    <title>Books by Marco Pierre White</title>
  </head>
  <body>
    I think White's book
    '<span about="urn:ISBN:0091808189" typeof="bibo:Book"
           property="dc:title">Canteen Cuisine</span>'
    is well worth getting since although it's quite advanced stuff, he
    makes it pretty easy to follow. You might also like
    <span 
     about="urn:ISBN:1596913614"
     typeof="bibo:Book"
     property="dc:description"
     >White's autobiography</span>.
  </body>
</html>
```

こんな書き方も出来て，場合によってはCURIE(short for Compact URI)よりもフルのIRIsの方が便利だよね，ということらしい。

```html
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Books by Marco Pierre White</title>
  </head>
  <body>
    I think White's book
    '<span
     about="urn:ISBN:0091808189"
     typeof="http://purl.org/ontology/bibo/Book"
     property="http://purl.org/dc/terms/title"
     >Canteen Cuisine</span>'
    is well worth getting since although it's quite advanced stuff, he
    makes it pretty easy to follow. You might also like
    <span
     about="urn:ISBN:1596913614"
     typeof="http://purl.org/ontology/bibo/Book"
     property="http://purl.org/dc/terms/description"
     >White's autobiography</span>.
  </body>
</html>
```
vocabを使うと，prefixと異なり，デフォルトの語彙を設定できる。

```html
<div vocab="http://xmlns.com/foaf/0.1/" about="#me">
   My name is <span property="name">John Doe</span> and my blog is called
   <a rel="homepage" href="http://example.org/blog/">Understanding Semantics</a>.
</div>
```
##まとめ
[参照:http://www.w3.org/TR/rdfa-syntax/#A-rel](http://www.w3.org/TR/rdfa-syntax/#A-rel)

* Syntax attributes: @prefix, @vocab.
* Subject attributes: @about.
* Predicate attributes: @property, @rel, @rev.
* Resource attributes: @resource, @href, @src.
* Literal attributes: @datatype, @content, @xml:lang or @lang.
* Macro attributes: @typeof, @inlist.

個人的には，表記に揺れがあり，ややこしいRDFa Coreはやはり，あまりオススメできません。ただ，RDFa Liteに対して，RDFa Coreが大体，包含関係にあるということがわかったので，安心しました。

###補足
あたくしlink属性についてよく知らなかったの…・というわけで。

### Linkについて
><LINK>タグはその文書ファイルと関連する別の文書ファイルを指定し、 その関係を定義するもので、<HEAD>～</HEAD>間で使用します。

参考：[★HTMLタグリファレンス|＜LINK＞･････関連する文書ファイルを指定する](http://www.htmq.com/html/link.shtml)

```html
<head>	 
<title>文書番号002</title>	 
<link rel="index" href="../index.htm">	←indexページとの関係
<link rel="contents" href="mokuji.htm">	←目次ページ
<link rel="search" href="kensaku.html">	←検索ページ
<link rel="help" href="help.html">	←ヘルプページ
<link rel="prev" href="001.htm">	←前のページ
<link rel="next" href="003.htm">	←次のページ
</head>
```