Primer: Getting into RDF & Semantic Web using N3学习笔记

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

地址:http://www.w3.org/2000/10/swap/Primer

Subject, verb and object主语、谓语和宾语

RDF中,信息就是简单的带有主谓宾的一个语句集。在N3中你可以通过一个带句号的三元组表示,如 <#pat> <#knows> <#jo> .
   
   

任何事物,不管是主语、谓语还是宾语,都能用一个URIUniform Resource Identifier)辨认,如<http://www.w3.org/> or <http://www.w3.org/2000/10/swap/test/s1.n3#includes>。如果没有了#前面的东西,它便指当前文档内的事物。

例外:宾语(也只有宾语)可以是指字面的意思,比如字符串或整数。

e.g. <#pat> <#knows> <#jo> .以及<#pat> <#age> 24 .
   
   
动词”knows”RDF中被称为属性,用来表示两个事物间的关系。你可以这样写:<#pat> <#child> <#al> .为了增加可读性也可以写成这样:<#pat> has <#child> <#al> .
   
   
或者<#al> is <#child> of <#pat> .
   
   
窍门:分号引出同一主语的另一属性,逗号引出在相同谓词和主语条件下的另一个宾语,如
   
   
<#pat> <#child>  <#al>, <#chaz>, <#mo> ;
  
  
       <#age>    24 ;
  
  
       <#eyecolor> "blue" .
  
  
有一表格:     age eyecolor 
Pat    24  blue 
al     3   green 
jo     5   green
  
  
可以写成:   <#pat>   <#age> 24;  <#eyecolor> "blue" .
   
   
             <#al>    <#age>  3;  <#eyecolor> "green" .
  
  
            <#jo>    <#age>  5;  <#eyecolor> "green" .
  
  
有时,描述一些存在的事物时,不给它们标识符,只给出属性,这时可以用方括号把这些属性括起来:<#pat> <#child> [ <#age> 4 ] , [ <#age> 3 ]. #pat有一个4岁的孩子和一个3岁的孩子。
   
   
有两点需要记住:
   
   
 
 l  
 
 标识符仅仅是标识符,字母pat并没有告诉任何人或机器我们讨论的是一个名叫Pat的人,除非我们这样表示:<#pat> <#name> "Pat"  对于动词同理。
   
   
 
 l  
 
 方括号声明了带有某些属性的事物存在,但是没有给出一个方法在当前文档里或其他文档里指向这些事物。
   
   

通过使用name,我们重新描述一下前面表格中的数据:

  [ <#name> "Pat"; <#age> 24;  <#eyecolor> "blue"  ].
  
  
  [ <#name> "Al" ; <#age>  3;  <#eyecolor> "green" ].
  
  
  [ <#name> "Jo" ; <#age>  5;  <#eyecolor> "green" ].
  
  

Sharing concepts分享概念

语义网不能在一个文档里定义某物是什么意思,这事儿你只能用英语(或者偶尔用数学)来完成,我们实际上是通过”title”的概念进行交流。在语义网里我们就是使用相同的URI来分享概念。使用N3可以这样定义title<> <#title>  "A simple example of N3".(空尖括号<>通常指当前所在的文档)<#title>指它所在文档定义的概念#title。有一组人定义了title的一组属性,称谓Dublin Core,并给出了标识:<http://purl.org/dc/elements/1.1/title>
   
   

所以现在定义标题有了更好的方式:

<> <http://purl.org/dc/elements/1.1/title>
  
  
 "Primer - Getting into the Semantic Web and RDF using N3".
  
  

当然这样做很啰嗦,想像一下通过这么长的标识符定义上面提到的每样东西#age#eyecolor。所以N3允许你定义前缀@prefix,也称为命名空间namespace,以此缩短那些冗长的URI

@prefix dc:  <http://purl.org/dc/elements/1.1/> .
  
  
<> dc:title
  
  
  "Primer - Getting into the Semantic Web and RDF using N3".
  
  
使用前缀,不仅节省了空间和时间,也不需要使用尖括号了。在N3中,你会经常使用它。在RDFRDF SchemaOWL中最常用的几个命名空间:
   
   
         @prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
  
  
         @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
  
  
         @prefix owl:  <http://www.w3.org/2002/07/owl#> .
  
  
也可以定义空前缀表示当前文档: @prefix : <#> .
   
   
上面的例子就可以写成这样了::pat :child [ :age 4 ] , [ :age 3 ].
   
   

Making vocabularies

上面类似于dc:title的都是RDF Properties。当你定义了一个新词汇时,你就定义了一个新类和新属性;当你说一个事物是什么类型时,你是在说它属于什么类。告诉你某物是什么类型的属性是rdf:type,它在N3中的缩写是a。所以我们可以这样定义关于个人的类:

:Person a refs:Class

在同一文档中,就可以这样介绍一个真实的人了:

:Pat a :Person

一个对象可能属于很多个类,他们之间不需要有等级关系,考虑一下Person, AnimateObject, Animal, TallPerson, Friend等。如果两个类之间有某种关系,可以进行指定,比如:

:Woman a rdfs:Class; rdfs:subClassOf :Person .

属性property用于声明两个事物之间的关系。

:sister a rdf:Property .

如果任何属性的主语都在一个类里,这个类就是属性的定义域;如果宾语都在一个类里,这个类就称为属性的值域。

:sister rdfs:domain :Person;

          Rdfs:range :Woman

注意:类识别符以大写字母开头,属性property以小写字母开头。这只是一种惯例,并不是必需的。另外,因为rdfs:rangerdfs:domain本身都是rdf:Property,所以:sister也是rdf:Property,而且不需要显示声明。

等价Equivalence

当你定义一个词汇的时候,你很难意识到之前是否定义了一个类似的术语。两个术语间的等价性很有用,在N3中用“=”表示。

:Woman = foo:FemaleAdult .

:Title a red:Property; = dc:title

提示:尽可能使用他人已经定义好的词汇,这样有助于交换数据。当你定义的词汇中有同义词时,就要用等价性进行声明。

选择命名空间,发布你的词汇集Choosing a namespace and publishing your vacabulary

好的词汇术语的在线文档,能帮助人们读写RDF数据。作者必须明白一个术语的期望使用方式;读者(使用者)必须明白这个术语的期望含义。使用这些术语的软件开发者必须清晰地知道每个URI的含义是什么。

如果你使用RDF SchemaOWL词汇集定义你自己的词汇,那么你的文档在很多有趣和有用的方面都是机器可阅读的。这种使用RDF定义的RDF文档也被称为schema或者ontology

帮助人们找到你的文档的最简单的方法就是,在Web浏览器中能够打开你为词汇术语定义的URI。如果你遵循我们在这里使用的命名约定,词汇定义有一个像这样的URIhttp://example.com/terms而且它指向一个类似<#Woman>的术语,那么这就自动发生了。

理想情况下,你应该这样在网络上发布你的文档:using a server and portion of URI-space which are owned by an organization which can commit to maintaining them well into the future。在URI中引入当前的年份,这个约定能带来稳定性。某一天,当人们想重新使用 http://example.com/food-vocabulary ,他们可能只能 使用 http://example.com/2003/food-vocabulary ,而这对文档的更新相当重要。在某些情况下,通过使用特定的域名(这些域名 may be insulated from possible organizational renaming and trademark issues ),能够获得更好的稳定性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值