/
266.txt
161 lines (120 loc) · 9.33 KB
/
266.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
[7] [DFN[[[The Open Graph protocol]]]] ([DFN[[[OGP]]]]) は、 [[Facebook]] 社が定義する[[メタデータ]]の
[[HTML文書]]への埋め込みに関する仕様です。 [[Facebook]] の他、いくつかの [[SNS]]
などが一部に対応しています。2011年、2012年頃に流行っていました。
* 仕様書
[REFS[
- [1] [CITE[The Open Graph protocol]]
( ([TIME[2013-11-12 14:44:05 +09:00]] 版))
<http://ogp.me/>
- [27] [CITE@ja[Open Graph Reference Documentation]] ([TIME[2014-04-30 06:47:35 +09:00]] 版) <https://developers.facebook.com/docs/reference/opengraph>
- [31] [CITE@ja[Creating Custom Stories]] ([TIME[2014-04-30 07:56:21 +09:00]] 版) <https://developers.facebook.com/docs/opengraph/creating-custom-stories/>
]REFS]
[29] >>1 が仕様書らしきものですが、2012年11月から更新されていないようです。 >>27 や >>31 には >>1
に含まれていない拡張らしきものも含まれています。
>>18、>>20 に [[RDF Schema]] があり、そこには非推奨となったものも含まれています。
これらのいずれも含まれている内容が違っています。
;; [32] いずれにせよ現代的な精度の仕様書ではなく、リファレンス程度の品質のものです。
* RDFa との関係
[11] [[OGP]] は [[RDFa]] を使って [[HTML文書]]に[[メタデータ]]を埋め込む方法と、
その[[メタデータ]]の[[スキーマ]]を定義するものです。
[12] [[RDFa]] の支持者からは [[OGP]] は [[RDFa]] の成功例の筆頭として挙げられていますが、
実際には [[OGP]] は [[RDFa]] (や [[RDF]]) というよりは、独自のデータモデルを [[RDFa]]
風に記述するものと捉えた方がよさそうです。
[13] [CODE[[[og:]]]] などの[[名前空間接頭辞]]は、 [[RDFa 1.0]] 時代は宣言が必須でしたが、
実際には宣言なしで用いられることがありました。これは [[RDFa 1.1]] で追認されているようです。
;; [14] [[RDFa]] 仕様上は任意の[[名前空間接頭辞]]を使えるはずですが、実装によっては
[CODE[[[og:]]]] に固定されています。
[15] [[OGP]] では [CODE[[[og:image]]]] に対する [CODE[[[og:image:width]]]] のように[[特性名]]に
[CODE[[[:]]]] を含めた階層化を採用していますが、 [[RDFデータモデル]]として適当なモデリングが行われていません。
[CODE[[[og:image]]]] で表されている [[URL]] に対して入れ子に [CODE[width]]
を指定するような形がより “[[RDF]] らしい” 記述方法でしょう。 (記述と実装を単純化するために、
敢えて [[RDF]] らしい方法を採らなかったように見えます。)
[16] [[OGP]] には「[[配列]]」が存在します。 >>1 には次のような例が挙げられていて、
[CODE[width]] や [CODE[height]] はその直前の [CODE[[[og:image]]]] に適用されるとなっています。
[[RDF]] や [[RDFa]] としては、そのような解釈はできない (順序が失われる) はずです。
>
[PRE(XML example code)[
<meta property="og:image" content="http://example.com/rock.jpg" />
<meta property="og:image:width" content="300" />
<meta property="og:image:height" content="300" />
<meta property="og:image" content="http://example.com/rock2.jpg" />
<meta property="og:image" content="http://example.com/rock3.jpg" />
<meta property="og:image:height" content="1000" />
]PRE]
[17] 次のように [CODE@en[[[og:type]]]] には [[CURIE]] が使えるとされています [SRC[>>1]]。
[[RDFa]] は [CODE(HTMLa)@en[[[content]]]] [[属性]]を [[CURIE]] としておらず、ただの文字列として扱っていますから、
[[RDFa]] ベースの実装は [[RDFa]] としての処理をしてからその文字列が出現した[[要素]]を探し、
独自に[[名前空間接頭辞]]の解決をしなければなりません。なお [[OGP]] の [[RDF Schema]] [SRC[>>18]]
上は単なる [CODE[[[ogc:string]]]] とされており、 [[CURIE]] を使えるとはスキーマ上明記されていません。
>
[PRE(XML example code)[
<head prefix="my_namespace: http://example.com/ns#">
<meta property="og:type" content="my_namespace:my_type" />
]PRE]
[REFS[
- [34] [CITE@ja[Facebook以外のSNSでのOGPに関する話 : 初心者によるブログの勉強のためのブログ]] ([TIME[2014-04-30 08:36:47 +09:00]] 版) <http://blog.livedoor.jp/kamikaze_cyclone/archives/18972340.html>
]REFS]
>GREEのサイトの例では、xmlns:og="http://opengraphprotocol.org/schema/" xmlns:gr="http://gree.jp/ns" の二つの名前空間を用いておりました。xmlns:ogに記載されたURIが他と異なり、サイトによってはxmlns:ogを二つとも書いているところもありました。これは衝突にならないのか? また、URIが異なるのは問題ないのか? といった事が勉強不足で分かりませんでした。
[35] というように、実際上も[[名前空間接頭辞]]は正しく運用されていないようです。
* RDF Schema
[21] >>18, >>20 に公式な [[RDF Schema]] があります。
[REFS[
- [18] [[Turtle]] ([TIME[2012-11-18 05:16:06 +09:00]] 版) <http://ogp.me/ns/ogp.me.ttl>
- [20] [[RDF/XML]] <http://ogp.me/ns/ogp.me.rdf>
]REFS]
[22] >>19 の履歴を見ると一応メンテナンスはされているようですが、 >>1 の仕様書とはいくつか違いがあります。
- [23] 仕様書上の制約がすべて [[RDF Schema]] で記述されているわけではありません。
- [24] [CODE[[[og:type]]]] によっては指定できる子(?)名前空間の語彙 ([CODE[[[music:duration]]]] など)
は含まれていません。
- [25] [CODE[[[og:image:url]]]] (仕様書によると [CODE[[[og:image]]]] と同じ) など別名らしきものが
[[RDF Schema]] には含まれていません。
- [26] 「非推奨」なものが [[RDF Schema]] には含まれています。子(?)名前空間の [CODE[[[music]]]]
と重複するものや、[[住所]]などに関するものが非推奨とされているようです。
* Open Graph との関係
[10] [[Facebook]] は [[OGP]] より後に [[Open Graph]] と呼ばれる一連の機能を実装しています。
[[Open Graph]] 自体はプロトコルや書式ではありませんが、 [[Web API]] などと組み合わせて使う[[文書]]の[[メタデータ]]の記述形式に
[[OGP]] や、 [[OGP]] を一般化したような [[RDFa]] ベースの書式を採用しています。
;; [30] [[URL]] の中に[[名前空間接頭辞]]が登場するなど、不思議な [[Web API]] となっています。
[28] >>27 には、 [CODE[[[og:restrictions]]]] など、 >>1 の [[OGP]] 仕様書(?)に含まれていない拡張も掲載されています。
[33] >>31 には、 [CODE[[[og:ttl]]]] やデータ型の詳細など、 >>1 の [[OGP]] 仕様書(?)に含まれていない拡張や詳細も記述されています。
* 独自拡張
[REFS[
- [5] [CITE@ja[技術仕様 << mixi Developer Center (ミクシィ デベロッパーセンター)]]
( ([TIME[2013-11-29 01:57:33 +09:00]] 版))
<http://developer.mixi.co.jp/connect/mixi_plugin/mixi_check/spec_mixi_check/>
- [36] [CITE@ja[Social Feedback - GREE Developer Center]]
( ([TIME[2014-04-30 08:38:16 +09:00]] 版))
<https://docs.developer.gree.net/ja/platform/connect/socialfeedback>
]REFS]
[37] [[mixi]] と [[GREE]] は [[OGP]] 対応を謳っていますが、独自に拡張しています。また対応というのも一部だけのようです。
[38] [CODE@en[[[og:title]]]] があるのに敢えて [CODE[[[mixi:title]]]] を追加したり、
[[ガラケー]]用 [[URL]] の指定が [[mixi]] と [[GREE]] で違っていたり、
標準化しようという意思は感じられません。
* 語彙
[40] >>39 に [[OGP]] の[[語彙]]に含まれる[[特性]]の一覧があります。 >>1、>>27、>>31 の他 >>5、>>36
の拡張も含まれています。
[REFS[
- [39] [CITE[data-web-defs/data/ogp.json at master · manakai/data-web-defs]] ([TIME[2014-04-30 10:00:01 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/data/ogp.json>
]REFS]
* 歴史
[9] [CITE[Open Graph protocol - Facebook開発者]]
([TIME[2010-06-16 11:39:01 +09:00]] 版)
<http://developers.facebook.com/docs/opengraph>
[8] [CITE[The Open Graph Protocol]]
([TIME[2010-06-16 11:41:16 +09:00]] 版)
<http://opengraphprotocol.org/>
[2] [CITE@ja[Platform Updates: New Open Graph Tags for Media Publishers and More- Facebook Developers]]
( ([TIME[2013-12-11 02:52:52 +09:00]] 版))
<https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/>
[3] [CITE@ja[Using Self-Hosted Objects - Facebook開発者]]
( ([TIME[2013-12-11 02:53:22 +09:00]] 版))
<https://developers.facebook.com/docs/opengraph/using-objects/>
[4] [CITE@ja[Creating Object Types - Facebook開発者]]
( ([TIME[2013-12-11 02:53:50 +09:00]] 版))
<https://developers.facebook.com/docs/opengraph/creating-object-types/#properties>
[6] [CITE@en[The Open Graph Protocol Design Decisions]]
( ([TIME[2014-04-30 03:32:28 +09:00]] 版))
<http://ja.scribd.com/doc/30715288/The-Open-Graph-Protocol-Design-Decisions>
[19] [CITE[facebook/open-graph-protocol]]
( ([TIME[2014-04-30 04:03:51 +09:00]] 版))
<https://github.com/facebook/open-graph-protocol>