| RDF ( Resource Description Framework), 一种用于描述 Web 资源的 标记语言 。 RDF是Resource Description Framework的缩写,即 资源描述框架 。 RDF是一个处理元数据的XML应用,所谓元数据,就是“描述数据的数据”或者“描述信息的信息”。也许这样解释元数据有些令人难以理解,举个简单的例子,书的内容是书的数据,而作者的名字、出版社的地址或版权信息就是书的元数据。数据和元数据的划分不是绝对的,有些数据既可以作为数据处理,也可以作为元数据处理,例如可以将作者的名字作为数据而不是元数据处理。 众所周知,对资源的描述是领域和应用相关的,比如对一本书的描述和对一个Web站点的描述是不一样的,即对不同资源的描述需要采取不同的词汇表。因此RDF规范并没有定义描述资源所用的词汇表,而是定义了一些规则,这些规则是各领域和应用定义用于描述资源的词汇表时必须遵循的。当然,RDF也提供了描述资源时具有基础性的词汇表。 通过RDF,人们可以使用自己的词汇表描述任何资源,但人们更乐意将它用于描述Web站点和页面,由于使用的是结构化的XML数据,搜索引擎可以理解元数据的精确含义,使得搜索变得更为智能和准确,完全可以避免当前搜索引擎经常返回无关数据的情况。当然前提是RDF和标准化的RDF词汇表在Web上广泛使用,而且搜索引擎需要能够理解使用的词汇表。 简单而言,一个RDF文件包含多个资源描述,而一个资源描述是由多个语句构成,一个语句是由资源、属性类型、属性值构成的三元体,表示资源具有的一个属性。资源描述中的语句可以对应于自然语言的语句,资源对应于自然语言中的主语,属性类型对应于谓语,属性值对应于宾语。由于自然语言的语句可以是被动句,因此前面的简单对应仅仅是一个概念上的类比。 资源描述框架(Resource Description Framework, 简称 RDF)是一个用于表达关于万维网(World Wide Web)上的资源的信息的语言. 它专门用于表达关于Web资源的元数据, 比如Web页面的标题、作者和修改时间,Web文档的版权和许可信息,某个被共享资源的可用计划表等。然而,将“Web资源(Web resource)”这一概念一般化后,RDF可被用于表达关于任何可在Web上被标识的事物的信息,即使有时它们不能被直接从Web上获取。比如关于一个在线购物机构的某项产品的信息(例如关于规格、价格和可用性信息),或者是关于一个Web用户在信息递送方面的偏好的描述。 |
<!--以下代码来自第一个rdf文件,使用xmlformat1.04工具实现自动格式化后的样子,源文件只有一行,可读性很差
关于xmlformat的更多信息,请访问http://www.kitebird.com/software/xmlformat/
-->
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="script.xsd">
<description>
<titles v="C:\Downloads\(经典大片)毕业生\毕业生(1)"/>
<compiler/>
<reviser/>
<creator/>
<abstract/>
</description>
<script>
<sn>
<s id="_1" b="8660" e="12220" v="Ladies and gentlemen, we're about to begin our descent into Los Angeles.">
<t l="zh" v="各位乘客,飞机即将降落洛衫机"/>
<n l="zh" v=""/>
<ws/>
</s>
<s id="_2" b="12780" e="16060" v="The sound you just heard is the landing gear locking into place.">
<t l="zh" v="大家刚才听到的是起落架的声音"/>
<n l="zh" v=""/>
<ws/>
</s>
<s id="_3" b="16420" e="19860" v="Los angeles weather is clear,the temperature is 72.">
<t l="zh" v="洛衫机天气晴朗,温度是华氏72度"/>
<n l="zh" v=""/>
<ws/>
</s>
<s id="_4" b="20260" e="23780" v="We expect to make our 4-hour and 18-minute flight on schedule.">
<t l="zh" v="飞机行程如预计的一样,历时4小时18分钟"/>
<n l="zh" v=""/>
<ws/>
</s>
.....................
</sn>
</script>
</resource>| 文本格式字幕:比较流行的文本字幕有srt、smi、ssa,因为是文本格式,所以就比较小了,一般大不过百来k。其中srt文本字幕最为流行,因为其制作规范简单,一句时间代码+一句字幕,使得制作修改就相当简单。配合上.style文件还能让srt自带一些字体上的特效等。几种文本字幕可以互相转换。文本字幕一般通过对图形字幕进行OCR或者手工制作生成,OCR英文字幕不难,毕竟英文识别难度小嘛,OCR中文难度就大一些,所用的软件个头也不小(SubOCR,30多MB)。 |
# 以下代码来自我用程序处理过后的字幕文件 1 00:00:08,660 --> 00:00:12,220 各位乘客,飞机即将降落洛衫机 2 00:00:12,780 --> 00:00:16,060 大家刚才听到的是起落架的声音 3 00:00:16,420 --> 00:00:19,860 洛衫机天气晴朗,温度是华氏72度
#!/usr/bin/perl -w
# rdf2srt.pl
# Author: yangfang
# Mail: yangfang at fudan.edu.cn
# Data: 2008-1-21
# Discription: Covert rdb to srt format
#!/usr/bin/perl -w
use XML::Simple;
use Data::Dumper;
use File::Basename;
&main();
sub format_time{ # 将毫秒时间化成hh:mm:ss,ms的格式
my ($msec )= @_;
my $hour = $msec / 3600000;
my $remain = $msec % 3600000;
my $minute = $remain / 60000;
$remain = $msec % 60000;
my $second = $remain / 1000;
my $result = sprintf("%02d:%02d:%02d,%03d", $hour,$minute,$second,$remain%1000);
return $result;
}
sub main{
my ($file_name) = @ARGV;
my $xml = new XML::Simple;
my $data = $xml->XMLin("$file_name");
#print Dumper($data);
my $basename = basename($file_name,'avi');
my $dirname = dirname($file_name);
open(ENG_FILE,">:encoding(iso-8859-7)", "$dirname/$basename.eng.srt");
open(CHN_FILE,">:encoding(gbk)", "$dirname/$basename.chn.srt"); # 因为播放器用系统默认编码打开文件,这里写文件需要指定成系统默认编码GBK,否则会变成UTF8的中文,还会在执行程序时报宽字符集警告。
foreach my $even(sort {substr($a, 1) <=> substr($b, 1)} keys %{$data->{script}->{sn}->{s}}) {
my $begin_time = format_time($data->{script}->{sn}->{s}->{$even}->{b});
my $end_time = format_time($data->{script}->{sn}->{s}->{$even}->{e});
my $en_sub = $data->{script}->{sn}->{s}->{$even}->{v};
my $ch_sub = $data->{script}->{sn}->{s}->{$even}->{t}->{v};
my $index = substr($even,1);
print ENG_FILE "$index\n$begin_time --> $end_time\n$en_sub\n\n";
print CHN_FILE "$index\n$begin_time --> $end_time\n$ch_sub\n\n";
}
close(ENG_FILE);
close(CHN_FILE);
}| I | Attachment | Action | Size | Date | Who | Comment |
|---|---|---|---|---|---|---|
| | rdf2srt.pl.txt | manage | 1.9 K | 21 Jan 2008 - 08:30 | Main.yfang | rdf格式字幕转srt格式 |
| | 毕业生(1).rdf | manage | 51.0 K | 21 Jan 2008 - 08:31 | Main.yfang | 范例rdf文件 |
| | 毕业生(1).rdf.chn.srt | manage | 20.6 K | 21 Jan 2008 - 08:32 | Main.yfang | 程序生成的中文字幕srt文件 |
| | 毕业生(1).rdf.eng.srt | manage | 26.4 K | 21 Jan 2008 - 08:32 | Main.yfang | 程序生成的英文字幕srt文件 |