语义网 相关

简单介绍

    将检索到的信息解释含义和提取有用的信息,要求内容是可以被机器所理解的。一种方法就是用一种新的方法描述信息,也就是语义网。

意义

    知识管理:根据含义用概念空间组织知识; 跨文档的问答功能;规定信息的权限。

    电子商务:提取价格和补充信息; 企业间信息交换。xml必须要求双方对使用的词汇表达成了共识。

    个人代理: 机械公敌中的个人代理真的能实现了。

技术

    源数据:类似于xml

    本体:某个概念相关的内容,多在一个domain中,由多个termdomain中的类)。 包括 term property,值约束, 不相交描述,对象间逻辑关系的规定

    OWL是对RDF进一步扩展, 通过namespace引入的rdfs,我觉得应该是 RDF Schema的定义

    逻辑:需要被机器处理,则需要用网络语言表示逻辑知识和逻辑证明,使用工具是OWL 或者DAML+OIL

    代理:自主和自动运作的软件。接收用户需求,在网上找到相关信息,和其他代理交流,根据用户需求和偏好做出选择,将答案交给用户,主要作用是收集信息,提供备选方案。用到的技术:使用元数据收集信息; 使用本体解释信息,和其他代理交流;用逻辑处理推导结论

    和人工智能的对比:人工智能是建立类人的智能,而语义网只是协作人类处理网上事物,要求比人工智能低

       相互关系:XML——》RDF——》OWL——》逻辑——》证明——》信任

XML相关

    html不包含结构信息,即文档成分及其相互关系的信息,XML使用标签定义成分,使用嵌套定义相互关系

    xml 还可定义约束,如年必须大于0

要想在万维网上交流,大家必须说同样的话,所以各种标准组织基于xml为各个领域定义了各种专用的xml词汇,rdf就是其中一种。

验证方式

       描述xml结构有DTDxml Schema 两种方式

DTD

          定于 element及关系;property(名称,类型和值);支持递归定义,正在慢慢淡出;

Schema

好处:

            基于xml 自身语法

            提供了schma重用和简化的可能:扩展已有模式建立新模式

            提供一套数据类型集

组成:

       元素类型   <element name="" />   定义 type, name ,minOccurs, maxOccurs

       属性类型   <attribute name="" />  定义  type   use

       数据类型   数字  字符串  日期和时间   用户自定义数据类型(继承和组合已有类型)

       数据类型的限制:  use type对包含的属性做限制

处理

        使用xslt 完成 xml文件转换为html 或者另一种格式的xml

RDF

    xml 没有提供表示数据语义的手段

    rdf 是一个三元组的statement,  rdfs定义了rdf用到的词汇,什么属性作用于什么对象,属性取什么值,描述对象间的关系。

    rdf是领域独立的,可以在其基础上为特定领域定义内容,如ndl

基本概念

        resource:  就是对象,使用uri进行标示

        property 是特殊的资源,表达resource间关系

        statement: 三元组组成

    可以通过uri指代陈述,建立多个陈述间的关系

    数据类型: 如果要确定 “27”是字符串还是文本,需要指定其数据类型,允许外部定义的任意数据类型模式,但用的最多的是 xml schema中定义的。

坏处

        1.  对机器友好,对人不友好

        2.  属性可以是resource。增加了复杂性

        3. 不支持多个谓词,只能通过递归进行模拟

rdf语法

  rdf:Description 代表一个陈述

    rdfabout 指定主语

    rdf: datatype 可以指定数据类型

    rdfresource 对已定义对象的引用

    rdf:id  类似于rdfabout ,需要加 #

    rdf: type 用于引入某种结构

    几种变形:  1. element中无属性,只有text,可以作为父节点的属性;  2.  rdf:type定义的resource,可以使用 type定义的名称替换rdf:description

 <rdf:Description rdf:about="http://geni-orca.renci.org/owl/095ccaa6-1bf7-41d9-9b3f-c15578d3bf6c#TermDuration">

    <time:days rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">1</time:days>

    <rdf:type rdf:resource="http://www.w3.org/2006/time#DurationDescription"/>

 </rdf:Description>

   其中object 可以是一个 resource 。也可以是常量


    <foaf:Person rdf:ID="#Ryan" />

    <rdf:Description rdf:about="#Ryan" >

        <rdf:type rdf:resource="http://xmlns.com/foaf/0/1/Person  ">

    </rdf:Description>

    是等价的,有一个资源名称是  本地url#Ryan, 类型是 foaf:Person

容器元素

        rdfbag: 集合内元素无序且不唯一

        rdf: Seq : 元素有序且不唯一

        rdf:Alt :   多选一

        rdf: _n rdf:li): 代表元素

        collection : 表示只含有特定成员的 groups,使用 rdf:List (代表集合)  rdf:first (第一个)  rdf:rest   rdf:nil (集合结尾);  使用rdf:parseType="collection" 来定义。



rdf schema

    作用:提供一种语言来建立共享的词汇表,使用的namespace是 rdf  rdfs 和xsd

    类和实例: 使用rdf:type  class 规定instanceclass 的关系

    类层次结构和继承:   rdfs:subClassOf

    属性层次结构: 属性是全局定义的,不是在类中封装,也可定义属性的层次关系 , 使用 rdfs:subPropertyOf Property

RDFS

    rdfs 是一个RDF文档,并且基于XMLRDF语法

核心类:

        rdfs:Resource: 定义资源        

        rdfs:Class: 定义类, 代表某一类型的资源

        rdfs:Literal :  定义文字类

        rdfs:Property

        rdfs:Statement

核心属性:

        rdf:type : 将资源和所属的类联系起来,将该资源申明为所属类的一个实例

        rdfs:subClassOf:   把类和父类想连接,一个类可以是多个类的子类

    <owl:Class rdf:ID="WineGrape">

            <rdfs:subClassOf rdf:resource="&food;Grape" />
    </owl:Class>

        rdfs:subPropertyOf: 把属性和它的父属性相连接

约束属性的核心属性

        rdfs:domain : 规定subject 所属的类

        rdfs: range: 规定三元组中 object 所属的类

            <rdf:Property rdf:ID="电话号码" >

                <rdfs:domain rdf:Resource="#教师" />

                <rdfs:range rdf:Resource="$rdf:Lieral " />

            </rdf:Property>

        rdfs:ConstraintResource:  所有约束的类

        rdfs:ConstraintProperty : 所有定义约束的属性

具体化:陈述对资源的引用

        rdf:subject     rdf:predicate    rdf:object

容器类

        rdf:Bag   rdf:Seq   rdf:Alt   rdf:Container(所有容器的父类)

工具属性

        rdfs:seeAlso: 把资源和解释它的另一个资源联系起来

        rdfs:isDefinedBy  把资源和定义的位置联系起来

        rdfscomment    

        rdfs:label  :  定义一个用户友好的名字,作为图形化节点的名称,    <rdfs:label>内容</rdfs:label>

rdf schema 的定义

    rdfrdfs xml文件,略

rdfrdf schema的公理语义

    主要是数学推理,作为机器进行推理的基础

rdf 直接推理系统

    三元组和其上定义的规则,用于推理,比3.7中数学推理更加简单

使用RQL查询

    基本查询

        class 检索所有类

        property 检索所有属性

        具体的类,如 course  检索该类的所有实例,  ^course 检索不包括继承类的实例

    select from where 查询

        select X,Y from {X} phone {Y}   检索属性是phone的所有 subjectobject

        select X, Y from lecture{X} . phone{Y }   获取lecture的所有实例,作为 phonesubject,两次搜索通过.链接

    模式查询

        检索 实例及所属类或属性,通过 @   $得到所属的property  class

使用SPARQL查询

    endpoint:是接收和处理SPARQL查询的服务

网络本体语言 OWL

    rdf基础上,对建模原语功能增强,owl目标是成为语义网的公认标准本体语言

本体语言需求

rdf的局限性:

        属性的局部辖域:  rdfs:range是针对property的所有 subject,不能针对特定的subject进一步细化,如牛吃植物,其他动物吃肉

        类不相交性:  如男和女不想交

        类的布尔组合: 定义类的  并 交 补,产生新的类

        基数约束: 属性取值不同时的约束,如 我有一个父亲,我有好几个兄弟

        属性的特殊性质: 属性的传递性、唯一性和逆属性等

owl子类

        full语法完全兼容rdf;表达能力过于强大,以至于是不可判定的

        dl 保证高效率的推理,缺点是不与RDF完全兼容

        lite: 对dl进一步限制,优点是对人容易掌握,开发工具容易实现; 缺点是表达能力有限

OWL语言

类元素:

        owl:Class 定义类,其中包括 

            owl:disjointWith  规定与某个resource不想交

            owl:equivalentClass 表示类等价

        预定义的两个类:  owl:Thing(最一般的类)和 owl:Nothing (空类)

类和个体:

定义类:

     <owl:Class rdf:about="&topology;NetworkDomain"/> 

    <owl:Class rdf:ID="Region"/>  

引用类:

     <rdf:about="#Region"  来扩展对一个资源的定义

      rdf:resource="#Region"  如作为 object

定义实例:

     <owl:NamedIndividual rdf:about="&vmsite;Domain"> 

        <rdf:type rdf:resource="&topology;NetworkDomain"/>

     </owl:NamedIndividual>


      <rdf:description rdf:ID="123 ">

            <rdf:type rdf:resource="&topology;NetworkDomain"/>

        </rdf:description>

        <topology:NetworkDomain  rdf:ID="#123" />


     <Region rdf:ID="CentralCoastRegion" />
   --------------------------------------------------

    <owl:Thing rdf:ID="CentralCoastRegion" /> 

    <owl:Thing rdf:about="#CentralCoastRegion"> 
         <rdf:type rdf:resource="#Region"/> 
    </owl:Thing>

属性元素:

        对象属性:将两个对象相互关联   owl:ObjectProperty

        数据类型属性:对象和数据类型值相互关联   owl:DataProperty

数据类型属性的值域范围是RDF文字(RDFS:Literal——常量值构成的类)或者是XML Schema数据类型中定义的那些简单类型(simple types)。

OWL使用XML Schema内嵌数据类型中的大部分。下列数据类型是推荐在OWL中使用的:

 xsd:string   xsd:normalizedString         xsd:boolean
 xsd:decimal         xsd:float                 xsd:double
 xsd:integer         xsd:nonNegativeInteger   xsd:positiveInteger
 xsd:nonPositiveInteger xsd:negativeInteger      xsd:int  
 xsd:short          xsd:byte                        xsd:unsignedLong 
 xsd:unsignedInt        xsd:unsignedShort               xsd:unsignedByte
 xsd:hexBinary          xsd:base64Binary                xsd:dateTime 
 xsd:time               xsd:date                        xsd:gYearMonth
 xsd:gYear              xsd:gMonthDay                   xsd:gDay 
 xsd:gMonth             xsd:anyURI                      xsd:token 
 xsd:language           xsd:NMTOKEN                     xsd:Name 
 xsd:NCName             xsd:long

 

        逆属性:  owl:inverseOf  

        等价属性: owl:equivalentProperty

实例:

    

属性约束:

        根据 properyobjectsubject)约定剩下的 subjectobject,使用 owl:Restrictionrdfs:subClassOf  对已有类进行约束,生成匿名类

        使用 owlallValueFrom  hasValue   someValueFrom 定义属性的取值范围;使用 minCardinality maxCardinality    cardinality  定义基数约束

特殊性质定义属性元素的性质

        传递性: owl:TransitiveProperty        

        对称性: owl:SymmetricProperty

        函数性: owl:FunctionalProperty  不同的subject的属性只能取不同的object

        逆函数性: owl:InverseFunctinalProperty    特定object的属性只能取不同的object

布尔组合:

        并: owl:UnionOf     交: owl:intersectionOf    不相交  owl:disjointWith

枚举:

        owl:oneOf

实例:

        使用 owl:differentFrom  owldistinctMembers 陈述个体不相等

数据模型

        owl参考文档

可用的工具

1.   rdf 的验证和解析工具

     rdf有多重表现方式,如 xml   triplet   graph ,三种表现方式中,graph应该是最直观,xml是最要命的,不过咱们系统中得到的文件大部分是xml格式的,可以使用 rdf在线验证器 将其转换为 graph 和triplet 格式

     网址是: http://www.w3.org/RDF/Validator/

         将rdf 文件内容粘贴到 textarea中, 选择解析的格式,通常选 【triples and graph】 ,点击parse rdf 按钮,完成解析如下


2.  SQARQL 验证

    另一个我们可能会用到的是 SQARQL (rdf环境中的sql语言),最好是能有一个工具,可以对 特定的rdf 文件执行 SQARQL查询,这种工具可以有,非常幸运的是我已经把他找到了

    jena fuseki-server 就是传说中的这类工具,还有其他的如openlink  rdf exploer等,不过我觉得这个最好用

    1) 下载并部署

            想了解的可以参考网站  http://jena.apache.org/documentation/serving_data/index.html

    2) 上传rdf文件

        建议先在  第一步中验证 rdf文件没有问题,再执行此处步骤

        选择 controll panel ,进入页面 ,点击【select】,进入页面,滚动条到页面下部

上传文件,提示如下:     Triples = 66      类似代表成功。 

 3) 执行 SPARQL 查询

            回退到首页

            在 textarea 中输入 SPARQL 语句

            output中选择格式,我选择了text ,因为JSON需要下载

            点击  【Get Results】获取查询结果,如下图

常用的属性定义有:

    objectProperty 定义 resource之间关系

    datatypeProperty 定义 resource和literal 之间的关系

    rdfs:domain 和rdfs:range 定义subject 和object

    rdfs:subPropertyOf 定义属性间关系,查询管用

    rdfs:label 定义简单的文本标签 

属性实例、如何在rdf中表示,jena如何实现

省份:

    特征:    datatypeProperty;    值为两个大写字母;  subject约定为站点

    rdf中属性定义:

        <owl:Class rdf:about="#orcaNode"/>

        <owl:DatatypeProperty rdf:about="#province" >

<rdfs:domain rdf:resource="#orcaNode" />

        </owl:DatatypeProperty>

    rdf中属性赋值:

         <cstnet:orcaNode rdf:ID="site1">

            <cstnet:province>BJ</cstnet:province> 

        </cstnet:orcaNode>

    jena中:

状态:

    枚举值   对应设计文档中的红绿灯


你可能感兴趣的:(语义网 相关)