Tips

← PREV NEXT →

content.rdf.u8 から日本語階層を抽出する

ODP から配付されるコンテンツ情報ファイルである content.rdf.u8 (配付時には末尾に gz が付いている) は、2004年4月現在、約 1.7ギガバイトの巨大な XML ファイルです。この中から日本階層を抽出する方法について紹介します。

content.rdf.u8は XML ファイルなのですから、将来のバージョンへの互換性をも配慮した厳密な切り出しを行うためには、SAX 等のシステムを利用するのがベストです。しかし、これはなかなか手間がかかりますので、content.rdf.u8 の「クセ」に注目し、各種フィルター類で抽出してみます。

content.rdf.u8 には以下のような「クセ」が確認されています。

これらに注目すれば、ヘッダをコピーした後は、どこからどこまでが日本階層なのかを調べ、head と tail で抽出してやればよいだけです。また、他言語の階層へのショートカットや altlang 要素等も削除しておきたい所です。これらを踏まえて作成したシェルスクリプトは以下の通りです。

#!/bin/sh
#コンテンツファイル元データ(入力)
in_c=content.rdf.u8
#日本語階層コンテンツファイル(出力)
out_c=content.rdf_jp.u8.xml

start=`grep  -n -m1 '<Topic r:id="Top/World/Japanese">' \
    $in_c|sed 's/\([0-9]*\):.*/\1/'`
tmp1=`expr $start + 1`
end=`\
    tail +$tmp1 $in_c|\
    grep -E -n -m1 '<Topic r:id="Top/World/[^J]'|\
    sed 's/\([0-9]*\):.*/\1/'
`
head -7 $in_c >$out_c
tail +$start $in_c|head -`expr $end - 1` >>$out_c
echo '</RDF>' >>$out_c

かなりいい加減ではありますが、取りあえずはこれで抽出できるようです。CustomDir のデータベース入れ替え時にも、上記スクリプトを第一フェーズで利用しています。

このスクリプトで日本階層のみを抽出すると、ファイルサイズは、約35メガバイトになります。



株式会社スプライン