はやぶさ通信 Vol 15号

2003/09/15
はやぶさ通信
Vol 15号
今回は、ちょっと趣向を変えて、RDF
RDF(
RDF(Resource
Description Framework)
Framework)というメタ言語の応用例として、
RSS (RDF Site Summary)を取り上げたいと思います。
Summary)
RDF 自身は、XML フォーマットで、資源記述の枠組
みとして、『
『計算機が理解可能なウェブ上の情報を交換
するアプリケーションに対して,相互運用性を提供す
するアプリケーションに対して,相互運用性を提供す
る』事を目的に
W3C で作成されました。
る』
W3C:REC-rdf-syntax-19990222
http://www.w3.org/TR/REC-rdf-syntax
邦訳 TR X 0022:1999
資源記述の枠組み(RDF) モデル及び構文規定
http://www.y-adagio.com/public/standards/tr_rdf_ms/t
oc.htm
これを応用して、ニュースサイトのヘッドライン配信や、
Blog(ブログ)のサマリーなどに使用される、RSS (RDF
Site Summary) が、注目を集めています。
今回は、RDF/RSS の利用方法について、実際に、
RSS リーダーを入手し、RDF フォーマットデータを作成し
てみたいと思います。
1.SharpReader
1.SharpReader の入手
今現在、フリーで日本語表示可能な有名所のリーダ
ーとして、『
『SharpReader』
SharpReader』があります。.NET Framework
上で動作するので、ちょっと手間ですが、インターネット
上に資料が豊富なので、これにします。
・ .NET Framework 再頒布パッケージ(20.4 MB)
dotnetredist.exe
・ Microsoft .NET Framework 1.0 Service Pack 2
NDP10_SP_Q321897_Ja.exe
の両方を入手しておきます。(2003 年9月13現在)
http://www.microsoft.com/japan/msdn/netframew
ork/downloads/sdk.asp
・ SharpReader
SharpReader0921.zip
http://www.sharpreader.com/
ダウンロード自身は、非常に簡単です。
2.インストール
SharpReader は、.NET Framework 上で動作します。
まずは、.NET をインストールし、SP2 を当ててから、
SharpReader をインストール(ZIP の解凍)します。
1) .NET Framework
ダウンロードした、dotnetredist.exe を、
ダブルクリックするだけです。
2) Service Pack 2
これも、ダウンロードファイルを、ダブルクリック
するだけです。
3) SharpReader
ダウンロードした、SharpReader0921.zip を
解凍後、所定のフォルダに置いてください。
3.設定
使い方は、google 等でホームページを探せば、日本語
解説記事が見つかると思いますので、参考にしてください。
http://www.atmarkit.co.jp/fdotnet/special/rss/rss_01.html
注意点としては、デフォルトのフォントでは日本語表示で
きませんので、日本語フォントを指定しなおしてください。
Tools | Options の Font タブで、設定できます。
4.『RDF
4.『RDF』ファイルの作成
RDF』ファイルの作成
RDF ファイルの作成は、M. Kanzaki (神崎正英)氏のホー
ムページで丁寧に解説されています。
http://www.kanzaki.com/docs/sw/rss.html
今回は、試験的に、この 『はやぶさ通信』の更新情報を
記述してみたいと思います。
データとしましては、『はやぶさ通信 Vol 09号』でも取り
上げています、『Oracle
『Oracle XDK形式』で記述します。
XDK形式』
この形式のデータは、判りやすい(加工がしやすい)のと、
直接 ORACLE データベースとファイルのやり取りができる
のが魅力です。
ヘッダー情報など、同一データが各カラムに混在して、
冗長になっていますが、扱いやすさと拡張性を優先して
今回は、設計しています。
【更新情報 (tecInfo.xml)】
<?xml version="1.0" encoding="Shift_JIS"?>
<ROWSET>
<ROW NUM="1">
<CLASSIFY>『はやぶさ通信』</CLASSIFY>
<TITLE>はやぶさ通信 Vol 09号</TITLE>
<MODIFYDATE>20021202</MODIFYDATE>
<AUTHOR>TARO HAYABUSA</AUTHOR>
<subject>『はやぶさ』の【心】について
</subject>
<TEXT>『はやぶさ』とは、JSP で開発する Web ア
プリケーションフレームワークの総称です。</TEXT>
<FILENAME>tec-hayabusa-001.pdf</FILENAME>
</ROW>
<ROW num="2">
・・・・・・
</ROW>
・・・・・・
</ROWSET>
2003/09/15
【RDF 情報(tecInfo.rdf)】
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="RDFWeb.xsl"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://purl.org/rss/1.0/"
xml:lang="ja">
<channel rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec
rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tecInfo
Info.rdf">
Info.rdf">
<title>『はやぶさ通信』更新履歴一覧</title>
<link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link>
<description>『はやぶさ通信』更新履歴一覧</description>
<image rdf:r
rdf:resource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif"
esource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif" />
<dc:creator>HAYABUSA Sectional Committee</dc:creator>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tecrdf:resource="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusahayabusa-001.pdf" />
<rdf:li rdf:resource=" ・・・・・・・・”
・・・・・・・・” />
・・・・・・・・
</rdf:Seq>
</items>
</channel>
<image rdf:about="http://www.geocities.jp/hayabusa_labo/images/hybs.gif">
<title>『はやぶさ通信』更新履歴一覧</title>
<link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link>
<url>http://www.geocities.jp/hayabusa_labo/images/hybs.gif</url>
</image>
<item rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tecrdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusahayabusa-001.pdf" >
<title>はやぶさ通信 Vol 01号</title>
<description>『はやぶさ』とは、JSP で開発する Web アプリケーションフレームワークの総称です。
</description>
<link>http://www.geocities.jp/hayabusa_labo/hayabusa/tec/tec-hayabusa-001.pdf</link>
<dc:date>2002-12-02</dc:date>
<dc:subject>『はやぶさ』の【心】について</dc:subject>
<dc:creator>TARO HAYABUSA</dc:creator>
</item>
<item rdf:about="
rdf:about="・・・・・
bout="・・・・・ “>
・・・・・・・・
</item>
</rdf:RDF>
対応付けや、各種要素(XML タグ)の説明は、他の文
献を調査いただきたいと思います。
更新情報 (tecInfo.xml)から、RDF 情報(tecInfo.rdf)を
作成するには、XSLT を利用して変換します。
同様に、RDF 情報(tecInfo.rdf)を Web で表示させる場合
は、さらに、XSLT で、HTML に変換すれば、簡易的に表示
させることが可能(※)になります。
※ ただし、IE5、IE5.5 では、MSXML3 が必要です。
IE6 では、そのまま、XSLT が使用できます。
2003/09/15
【XML⇒RDF 変換(tecInfo.xsl)】
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0"
xmlns="http://purl.org/rss/1.0/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:variable name="classify" select="/ROWSET/ROW/CLASSIFY" />
<xsl:template match="/">
<xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="RDFWeb.xsl"</xsl:processing-instruction>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<xsl:call-template name="CHANNEL" />
<image rdf:about="http://www.geocities.jp/hayabusa_labo/images/hybs.gif">
<title><xsl:value-of select="$classify" />更新履歴一覧</title>
<link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link>
<url>http://www.geocities.jp/hayabusa_labo/images/hybs.gif</url>
</image>
<xsl:call-template name="ITEM" />
</rdf:RDF>
</xsl:template>
<xsl:template name="CHANNEL">
<channel rdf:about="http://www.geocities.jp/hayabusa_labo/hayabusa/tecInfo.rdf">
<title><xsl:value-of select="$classify" />更新履歴一覧</title>
<link>http://www.geocities.jp/hayabusa_labo/hayabusa/</link>
<description><xsl:value-of select="$classify" />更新履歴一覧</description>
<image rdf:resource="http://www.geocities.jp/hayabusa_labo/images/hybs.gif"/>
<dc:creator>HAYABUSA Sectional Committee</dc:creator>
<items>
<rdf:Seq>
<xsl:for-each select="ROWSET/ROW">
<xsl:element name="rdf:li">
<xsl:attribute name="rdf:resource">
<xsl:value-of select="concat('http://www.geocities.jp/hayabusa_labo/hayabusa/tec/',FILENAME)" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</rdf:Seq>
</items>
</channel>
</xsl:template>
<xsl:template name="ITEM">
<xsl:for-each select="ROWSET/ROW">
<xsl:variable name="link" select="concat('http://www.geocities.jp/hayabusa_labo/hayabusa/tec/',FILENAME)" />
<xsl:element name="item">
<xsl:attribute name="rdf:about">
<xsl:value-of select="$link" />
</xsl:attribute>
<title><xsl:value-of select="TITLE" /></title>
<link><xsl:value-of select="$link" /></link>
<dc:subject><xsl:value-of select="SUBJECT" /></dc:subject>
<dc:date>
<xsl:value-of select="concat(substring(MODIFYDATE,1,4),'-',substring(MODIFYDATE,5,2),'-',substring(MODIFYDATE,7,2))" />
</dc:date>
<dc:creator><xsl:value-of select="AUTHOR" /></dc:creator>
<description><xsl:value-of select="TEXT" /></description>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
2003/09/15
【RDF⇒HTML 変換(RDFWeb.xsl)】
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:rss="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
exclude-result-prefixes="rdf rss dc"
>
<xsl:template match="/">
<xsl:apply-templates select="rdf:RDF"/>
</xsl:template>
<xsl:template match="rdf:RDF">
<html xml:lang="ja" lang="ja">
<xsl:apply-templates select="rss:channel"/>
<body>
<h1><xsl:value-of select="rss:channel/rss:title"/></h1>
<table border="1" cellpadding="1" cellspacing="1" frame="box" rules="all" summary="tecWeb" >
<xsl:apply-templates select="rss:item"/>
</table>
<hr />
</body>
</html>
</xsl:template>
<xsl:template match="rss:channel">
<head>
<title><xsl:value-of select="rss:title"/></title>
<link rel="stylesheet" href="../common/default.css" type="text/css" />
</head>
</xsl:template>
<xsl:template match="rss:item">
<tr class="row_0">
<td nowrap="nowrap">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="rss:link"/></xsl:attribute>
<xsl:attribute name="target">_subGamen</xsl:attribute>
<xsl:value-of select="rss:title"/>
</xsl:element>
</td>
<td nowrap="nowrap"><xsl:value-of select="dc:date"/></td>
<td rowspan="2"><xsl:value-of select="rss:description"/></td>
</tr>
<tr class="row_1">
<td colspan="2" nowrap="nowrap"><xsl:value-of select="dc:subject"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
これらのファイルの関係を図に示します。
更新情報
(tecInfo.xml)
XML⇒RDF
変換
(tecInfo.xsl)
RDF 情報
(tecInfo.rdf)
HTML
ブラウザ
RDF⇒HTML
変換
(RDFWeb.xsl)
RSS は、規格そのものがまだ、ごたごたしていますが、面
白い技術だと思います。
サイトの更新履歴ばかりではなく、業務上のイベント発生
や作業依頼など、サイト(画面)への誘導に利用できないか、
検討していきたいと思っています。
はやぶさ通信 Vol 15 号 2003/09/15
はやぶさ推進委員会/はやぶさ連絡協議会
会社名および製品名は、各社の商標または登録商標です。