|
|
||
30日追記:神崎先生の指摘により、RDF Validatorでチェックしてみたら、下の表記はエラーになります。うかつでした。
Error: {E201} Syntax error when processing property attributes. Cannot have property attributes with the following other attributes: rdf:parseType='Resource'[Line = 6, Column = 75]
ということでこの項のRDF記述はボツにします。
神崎先生の「コメントにするならXMLでなくてもいいのでは」のTurtleの表現に惹かれつつも、既存のトラックバックやクリエーティブ・コモンズの埋め込みRDFとのマージする可能性もありますし、XMLでの表現も作っておいた方が良いような気もしています。
それでも、Account Auto-Discovery 仕様暫定版のままではくどいかなと、神崎先生のTurtle案を参考にしてRDFを簡略化してみました。FOAFのスキーマ(ソースの後半にRDF記述あり)のmakerとholdsAccountの定義では、rdf:parseType="Resource"を省略できないようですので、嫌々ながらつけておきます。
これはRDFの構文エラーによりボツ
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<rdf:Description rdf:about="">
<foaf:maker rdf:parseType="Resource">
<foaf:holdsAccount foaf:accountName="hatena" rdf:parseType="Resource">
<foaf:accountServiceHomePage rdf:resource="http://www.hatena.ne.jp/"/>
</foaf:holdsAccount>
</foaf:maker>
</rdf:Description>
</rdf:RDF>
多少は短くなります。
神崎先生のところから修正個所のみを転記しておきます。
<foaf:holdsAccount rdf:parseType="Resource">
<foaf:accountName>hatena</foaf:accountName>
<foaf:accountServiceHomePage rdf:resource="http://www.hatena.ne.jp/"/>
</foaf:holdsAccount>
これではaccountNameを属性化できませんので、XHTMLに埋め込むときに不利になります。その辺りのケアをスタイルシートでおこなえるときしか使えないようです。
簡略しない版とこの簡略版の両方からアカウントを拾い出すには、each_accountを次のように変更するだけで済みます(我ながら安易だなぁ)。
⇒ http://tociyuki.flop.jp/archive/HTML_AccountAutoDiscovery103.pm (テスト漏れがありました)
- while ( $rdf =~ m{<(${foaf}OnlineAccount)[\s\n]+(.*?)</\1>}sg ) {
+ while ( $rdf =~ m{<(${foaf}holdsAccount)[\s\n]+(.*?)</\1>}sg ) {
⇒ http://tociyuki.flop.jp/archive/HTML_AccountAutoDiscovery104.pm
修正個所はnaoyaさんのコメントを参照ください。