Nepomuk的资源描述框架(RDF)和本体(Ontologies) å¤§è‡´ç¿»è¯‘完成,大伙看看成否:-)<br><br>原文地址:<a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/RDFIntroduction">http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/RDFIntroduction</a><br>
<br>文中一些术语暂使用“shared-desktop-ontologies çš„中文翻译”邮件提到的几个术语的商榷想法,若能形成一致,再进行修改<br clear="all"><br>PS:文中链接较多,所以附上word文档<br><br>译文:<br><br>原文地址:<a href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/RDFIntroduction">http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/RDFIntroduction</a><br>
<br>Nepomuk的资源描述框架(RDF)和本体(Ontologies)<br>翻译:<a href="mailto:dbhrscom@gmail.com">dbhrscom@gmail.com</a><br><br>这个指南基于Sebastian Trueg çš„博文 Nepomuk Appendix A - RDF for Dummies in a Nutshell?<br><br>在这儿讨论的所有本体随同kdebase-runtime ä¸€èµ·å®‰è£…,因此这些本体总是存在于Nepomuk数据仓库中,另外,他们的资源URI可以通过 Soprano::Vocabulary namespace è¿›è¡Œè®¿é—® ï¼ˆNIE除外,它可以简单的使用Sopranoçš„ onto2vocabularyclass å»ºç«‹ï¼‰<br>
译者注:Ontologies ç›´è¯‘本体,也有推荐翻译为“知识本体”,在语义学上可以简单理解为一些语义表达的基本模式的说明<br><br>RDF â€” èµ„源描述框架<br><br>RDF是一种描述数据存储的方法,与基于表格的经典数据库不同,RDF数据由三元组组成,被称之为语句(statement)的三元组组成方式是:<br><br>主语 â€” è°“语 â€” å¯¹è±¡<br><br>主语是一个资源,谓语是一个关系,对象可以是另外的资源或者一个值。这个值的数据类型可以是字符串、整数、双精度浮点数或者是在 XML Schema ä¸­å®šä¹‰çš„类型,甚至可以是自定义的数据类型。那么关于事物(Thing)的RDF数据可以表现为如下语句:Mary - is mother of â€“ Carl æˆ–者 Mary - was born on - 1970-02-23。<br>
<br>为了降低表达上的模糊,资源和关系必须是唯一标识。例如,在上面的语句中,确定了一个特定的“Mary”,用以区分和“Baghdad â€“ is mother of â€“ all battles” çš„不同。 è‡ªRDF做为一个Web技术诞生以来,所有的资源和关系都是用URI(统一资源标识符)进行标识。(他们的命名空间经常用#和一个名字结束,典型的用法是缩写为foo:bar ï¼‰ï¼Œå› æ­¤ä¸€ä¸ªRDF数据集基本上是一个graph ï¼Œèµ„源(主语)是节点,关系(谓语)是连接,值是叶子。<br>
<br>RDF定义了一个重要的默认属性 rdf:type ï¼Œé€šè¿‡è¿™ä¸ªå±žæ€§æŒ‡å®šèµ„源的类型。<br><br>RDFS â€” The RDF Schema<br><br>RDFS扩展了RDF,定义了一个资源和属性的集合,这个扩展基本上允许定义Ontology(本体)。RDFS不但定义了两个重要的类 rdfs:Resource å’Œ rdfs:Class ç”¨æ¥å¼•å…¥å®žä¾‹å’Œç±»åž‹çš„区别,而且定义了属性的层次结构:rdfs:subClassof å’Œ rdfs:subPropertyof ï¼Œrdfs:domain å’Œ rdfs:range æŒ‡å®šå±žæ€§çš„细节。<br>
<br>这些扩展允许建立新类和属性,与面向对象编程非常类似,例如:<br><br>@PREFIX foo: &lt;http://foo.bar/types#&gt;;<br><br>foo:Human rdf:type rdfs:Class .  //Human的类型是类<br>foo:Woman rdf:type rdfs:Class .  //Woman çš„类型是类<br>foo:Woman rdfs:subClassOf foo:Human .  //Woman类是Human类的子类<br>
<br>foo:isMotherOf rdf:type rdf:Property .  // isMotherof çš„类型是属性<br>foo:isMotherOf rdfs:domain foo:Woman .  // isMotherof éš¶å±žWoman域<br>foo:isMotherOf rdfs:range foo:Human .   // isMotherof ç”¨äºŽHuman范围<br><br>foo:Mary rdf:type foo:Woman . // Mary的类型是 Woman<br>
foo:Mary foo:isMotherOf foo:Carl . //一个Thing的三元语句描述<br><br>这是一个如何使用RDFS定义一个本体的简单例子(使用 Turtle è¯­è¨€ï¼‰ã€‚在RDFS中最后两个重要的谓语(关系)是 rdfs:label and rdfs:comment ï¼Œä¸ºä»»æ„èµ„源定义可读性标签和注释。<br><br>NRL:Nepomuk表示语言<br><br>Nepomuk开发NRL是为了扩展RDFS。对于NRL,我不准备详细解释它的一切,但我会就目前KDE而言非常重要的信息进行解释。<br>
<br>NRL最为重要的改变是从三元组描述到四元组描述的改变,第四个参数是已定义(存储)的用语句描述的graph(可能为空),这个graph ï¼ˆåœ¨Soprano ä¸­ç§°ä¸º context) æ˜¯è¿™æ ·ä¸€ç§èµ„源,它可以对描述语句进行分组,允许对描述语句组进行追加。NRL定义了一组 graph(context)类型,其中很重要的是:nrl:InstanceBase å’Œ nrl:Ontology。第一个定义了graph åŒ…含的实例,第二个,你猜对了,它定义了包含类型和谓语的graphs。<br>
<br>为了使之更加清楚,我们用NRL扩展上面的例子<br><br>@PREFIX foo: &lt;http://foo.bar/types#&gt;;<br><br>foo:graph1 rdf:type nrl:Ontology .   // èµ„源foo:graph1的类型是本体<br>foo:graph2 rdf:type nrl:InstanceBase . // èµ„源foo:graph2的类型是基础实例<br><br>foo:Human rdf:type rdfs:Class foo:graph1. // èµ„源foo:Human类型是类,是本体 <br>
foo:Woman rdf:type rdfs:Class foo:graph1. // èµ„源foo:Woman类型是类,是本体<br>foo:Woman rdfs:subClassOf foo:Human foo:graph1 . //资源foot:Woman是foo:Human的子类,是个本体<br><br>foo:isMotherOf rdf:type rdf:Property foo:graph1 .<br>// èµ„源foo:isMotherOf的类型是属性,是个本体<br>
foo:isMotherOf rdfs:domain foo:Woman foo:graph1 .<br>// èµ„源foo:isMotherOf的作用域为foo:Woman,是个本体<br>foo:isMotherOf rdfs:range foo:Human foo:graph1 .<br>// èµ„源foo:isMotherOf的范围是foo:Human,是个本体<br><br>foo:Mary rdf:type foo:Woman foo:graph2 .<br>
资源Mary的类型为foo:Woman,是一个基础实例<br>foo:Mary foo:isMotherOf foo:Carl foo:graph2 .<br>资源Mary和资源foo:Carl是foo:isMotherOf的关系,是一个基础实例<br>但是,上述例子不能展现实体和本体的所有区别<br><br>NAO â€” Nepomuk æ ‡æ³¨æœ¬ä½“<br><br>你在KDE已经遇到过的由NAO定义的资源类型和属性是:nao:Tag æˆ– nao:rating ã€‚其实NAO也定义了 nao:created å±žæ€§ï¼Œå®ƒä¸ºèµ„源 ï¼ˆåœ¨ä¸‹é¢çš„例子里是一个graph)分配一个 xls:dateTime ç±»åž‹æ•°æ®ã€‚ å½“一些信息被加入到Nepomuk库时,我们用这个方法存储相关信息。<br>
<br>foo:graph1 nao:created<br>&quot;2008-02-12T14:43.022Z&quot;^^&lt;<a href="http://www.w3.org/2001/XMLSchema#dateTime">http://www.w3.org/2001/XMLSchema#dateTime</a>&gt; <br><br>NIE â€” Nepomuk ä¿¡æ¯å…ƒç´ æœ¬ä½“<br><br>NIE æœ¬ä½“描述桌面资源文件像文件,文件夹,电子邮件,联系人,即时消息等等,它在文件索引系统诸如 Strigi æˆ–者 tracker中用于描述提取的元数据。<br>
* NFO - The Nepomuk File Ontology æè¿°æ–‡ä»¶çš„元数据<br>* NCO - The Nepomuk Contact Ontology æè¿°åœ°å€ç°¿æ¡ç›®<br>* NMO - The Nepomuk Message Ontology æè¿°å„种消息包括电子邮件和即时通讯消息 <br>* NCAL - The Nepomuk Calendar Ontology æè¿°è”系人条目<br>* NEXIF - The Nepomuk Exif Ontology æè¿°å›¾åƒçš„元数据<br>
* NID3 - The Nepomuk ID3 Ontology æè¿°éŸ³é¢‘的元数据 <br><br>Xesam - æ¡Œé¢æ–‡ä»¶å…ƒæ•°æ®æœ¬ä½“ å› é‡‡ç”¨NIE而过时<br><br>Xesam是一个应用于strigi ç´¢å¼•æ¡Œé¢æ–‡ä»¶è€Œå¼€å‘出来的本体,它试图对桌面应用的大多数文件类型元数据定义类/类型和属性。简单的例子如id3标签或图像大小,或如发信人和收信任等电子邮件数据,在KDE桌面系统上strigi对文件元数据的检索结果使用Xesam定义的类和属性等数据保存在Nepomuk数据仓库内。<br>
<br><br>SPARQL â€” RDF æŸ¥è¯¢è¯­è¨€<br><br>我们用SPARQL æŸ¥è¯¢RDF æ•°æ®åº“,它的语句格式被设计成近似SQL,但因为它迄今为止十分年轻,所以还不是很强大。<br>尽管这样,搜索“the mother of carl”这样简单的查询大致如下:<br><br>prefix rdf: &lt;<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>&gt;<br>
prefix foo: &lt;http://foo.bar/types#&gt;<br><br>select ?r where {?r foo:isMotherOf foo:Carl . }<br><br>或者如果采用NRL <br>prefix rdf: &lt;<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>&gt;<br>
prefix foo: &lt;http://foo.bar/types#&gt;<br>prefix nrl: &lt;<a href="http://semanticdesktop.org/ontologies/2007/08/15/nrl#">http://semanticdesktop.org/ontologies/2007/08/15/nrl#</a>&gt;<br><br>select ?r where { graph ?g {?r foo:isMotherOf foo:Carl . } .?g rdf:type nrl:InstanceBase . }<br>
<br>SPARQL quick reference.是一份非常有价值的文档<br><br>其他本体/定制本体<br><br>这里所说的本体是Nepomuk数据的基本形式,但他们不能满足各方面的需求,如果你想在Nepomuk中存储你自己的数据并且和其他信息联系起来,建议按照以下过程来做:<br><br>* åœ¨<a href="http://www.semanticdesktop.org/ontologies/.">http://www.semanticdesktop.org/ontologies/.</a>中检查现有的标准本体中是否提供你所需要(或部分需要)的类和属性,这个网址中有很多标准本体,包括 NRL å’Œ NAO<br>
<br>* å¦‚果没有,联系 The Oscaf project中与你需要获得的帮助相关的讨论组和开发组<br><br>* å¦‚果你的需求还不能得到解决,那就开始开发你自己的本体,可能的话建议将其作为Oscaf标准本体。<br><br><br><br>-- <br><a href="mailto:dbhrscom@gmail.com">dbhrscom@gmail.com</a><br>