您好、欢迎来到现金彩票网!
当前位置:神州彩票app下载 > 公理语义 >

Ontology理论研究和应用建模

发布时间:2019-04-24 05:30 来源:未知 编辑:admin

  Ontology最早是一个哲学的范畴,后来随着人工智能的发展,被人工智能界给予了新的定义。然后最初人们对Ontology的理解并不完善,这些定义也出在不断的发展变化中,比较有代表性的定义列表如下:

  通过抽象出客观世界中一些现象(Phenomenon)的相关概念而得到的模型,其表示的含义独立于具体的环境状态

  Ontology中体现的是共同认可的知识,反映的是相关领域中公认的概念集,它所针对的是团体而不是个体。

  Ontology的目标是捕获相关的领域的知识,提供对该领域知识的共同理解,确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇(术语)和词汇之间相互关系的明确定义。

  类(classes)或概念(concepts)指任何事务,如工作描述、功能、行为、策略和推理过程。从语义上讲,它表示的是对象的集合,其定义一般采用框架(frame)结构,包括概念的名称,与其他概念之间的关系的集合,以及用自然语言对概念的描述。

  关系(relations)在领域中概念之间的交互作用,形式上定义为n维笛卡儿积的子集:R:C1×C2×…×Cn。如子类关系(subclass-of)。在语义上关系对应于对象元组的集合。

  函数(functions)一类特殊的关系。该关系的前n-1个元素可以唯一决定第n个元素。形式化的定义为F:C1×C2×…×Cn-1→Cn。如Mother-of就是一个函数,mother-of(x,y)表示y是x的母亲。

  在实际建模过程中,概念之间的关系不限于上面列出的4种基本关系,可以根据领域的具体情况定义相应的关系。

  联系:它们都是知识表示的形式,均可以通过带标记的有向图来表示,适合于逻辑推理。

  是对共享概念模型的规范说明,即其概念在某个特定领域是公认的,是面向特定领域的概念模型。

  从数学上讲是一种带有标记的有向图,最初用于表示命题信息,现广泛用于专家系统表示知识。其节点表示物理实体、概念或状态,边用于表示关系,但是对节点和边都没有特殊规定,所以描述的范围比Ontology广。

  有5个要素“元语,类,关系,函数,公理和实例”,它通过这5个要素来严格、正确地刻画所描述的对象。

  建立必须有专家的参与,相对更加严格和困难,这也是Ontology目前的主要缺点之一。

  【例子】:语义网络中可以表达“我的汽车是红色的”,而Ontology则适合表达如“团体组织的内部构成”等整体内容。

  可以用自然语言来描述Ontology,也可以用框架、语义网络或逻辑语言来描述。

  一种基于KIF(knowledge interchange format)的提供统一的规范格式来构建Ontology的语言。

  ü 为构造和维护Ontology提供了统一的、计算机可读的方式;ü 由其构造的Ontology可以方便地转换到各种知识表示和推理系统(Prolog、CORBA的IDL、CLIPS、LOOM、Epikit、Algernon和KIF),从而将Ontology的维护与使用它的目标系统隔开;ü 主要用于Ontology服务器。

  ü 在一阶谓词演算的基础上扩充了等价推理、缺省推理等功能;ü 具备一些二阶谓词演算的能力;ü 其语言环境中配有功能很强的可进行推理的推理机。

  Ontosaurus的描述语言,一种基于一阶谓词逻辑的高级编程语言,属于描述逻辑体系。后来发展为PowrLoom语言(采用前后链规则(backward and forward chainer)作为推理机制)。

  ü 提供表达能力强、声明性的规范说明语言;ü 提供强大的演绎推理能力;ü 提供多种编程风格和知识库服务。

  基于心理语言规则的英文词典,以synsets(在特定的上下文环境中可互换的同义词的集合)为单位组织信息。

  英文词典,采用称为Frame Semantics的描述框架,提供很强的语义分析能力,目前发展为FramenetII。

  面向自然语言处理,支持多语种处理,包括基本概念及独立于各种具体语言的概念组织方式。

  面向自然语言处理,支持多语种处理,采用一种语言中间的中间语言TMR表示知识。

  Guarino提出以详细程度和领域依赖度两个维度对Ontology进行划分。具体说明如下:

  顶级(top-level)Ontologies描述的是最普遍的概念及概念之间的关系,如空间、时间、事件、行为等,与具体的应用无关,其他Ontologies均为其特例。

  领域(domain)Ontologies描述的是特定领域中的概念和概念之间的关系。

  任务(task)Ontologies描述的是特定任务或行为中的概念及概念之间的关系。

  应用(application)Ontologies描述的是依赖于特定领域和任务的概念和概念之间的关系。

  出于对各自问题域和具体工程的考虑,构造Ontology的过程各不相同。目前没有一个标准的Ontology的构造方法。最有影响的是Gruber在1995年提出的5条规则:

  目前大家公认在构造特定领域的Ontology的过程中需要领域专家的参与。

  Ontology的理论研究包括概念和概念分类、Ontology上的代数。最有代表性的是Guarino等人对概念的分类所做的深入和细致的研究,他们从一般的意义上分析了什么是概念、概念的特性、概念之间的关系以及概念的分类,提出了一套用于指导概念分类的可行理论。基于这个理论,他又提出了Ontology驱动的建模方法,在理论上为建模提供了一个通用的模式。

  Guarino认为概念之间的差别不仅体现在概念的定义上,同时也体现在概念的某些特性上。从这些特性出发,归纳出概念的元特性(最基本的特性),从而用公式给出元特性的严格的形式定义。在此基础上,他们又讨论了元特性之间的关系和约束,最终把研究结果作为概念分类的基本理论工具并提出一套完成的概念分类体系结构。

  概念分类理论的基础是概念的元特性。以概念的元特性为出发点,按照一定的规则,把具有相同元特性组合的概念归为一类,进而给出一般意义上的概念分类体系。概念的基本元特性包括:持久特性、非持久特性、反持久特性、半持久特性、载体标识特性、支持标识特性、外部依赖特性等。

  如Student具有载体标识特性,因为学生之间的区别不是靠学生,而是作为人来区分的。

  一个概念对另外一个概念的某种依赖关系。概念A对概念B的外在依赖关系表现为概念A中的任何一个实例a必蕴涵属于概念B的实例b,而b不是a的一部分。

  Parent外在依赖于Child,某人的父母蕴涵他(她)有小孩,而他的小孩当然不是他身体的一部分。

  把用户的查询请求和全文中的每一个词进行比较,不考虑查询请求和文件语义上的匹配。

  查询要求和信息系统中的数据都遵循一定的格式,具有一定的结构,允许对特定字段检索。需要有标识字段的方法。

  性能取决于所使用的字段标识方法和用户对方法的理解,具有很大的局限性,支持语义匹配的能力较差。

  基于知识的、语义上的匹配,在查准率和查全率上有更好的保证。是信息检索的重点,特别是面向Web信息的知识检索的重点。

  Ontology具有良好的概念层次结构和对逻辑推理的支持,在知识检索中有广泛应用。基于Ontology的信息检索的基本思想有:

  为了帮助用户检索所需要的已有的Ontology,主要采用参照Ontology,即以WWW上已有的Ontology为对象建立起来的Ontology,保存各类Ontology的元数据。

  面向WWW上的网页资源,目的是帮助用户检索所需的网页,这些网页含有用户关心的内容。

  解决信息系统语义异构的问题,实现异构的自治系统间的互操作。希望通过在Ontology上的一个代数系统来实现Ontology之间的互操作,从而实现异构系统之间的互操作。

  基于后一种考虑,Berners-Lee在2000-12-18的XML2000的会议上提出了语义Web。语义Web的目标是使得Web上的信息具有计算机可以理解的语义,满足智能软件代理(Agent)对WWW上异构和分布信息的有效访问和检索。下面是Berners-Lee为未来Web发展提出的基于语义的体系结构-语义Web体系结构

  XML和RDF都能为所表述的资源提供一定的语义。但是XML中的标签(tags)和RDF中的属性(properties)集都没有任何限制。一个例子是:XML可以用“AuthorTOM/Author”表示TOM是教师。而“rdf:Description about=”这个RDF片断描述了Web页的创建者问题。而上面的Author和Creator完全可以用Writer来代替。另一个例子是:某医院和某大学的Web页上都有Doctor,但是不知道它代表医生还是博士。综上,XML和RDF在处理语义上存在的问题是:

  Ontology通过对概念的严格定义和概念之间的关系来确定概念精确含义,表示共同认可的、可共享的知识,从而解决上面的问题。因此在语义Web中,Ontology具有非常重要的地位,是解决语义层次上Web信息共享和交换的基础。

  为了便于Web上应用程序使用方便,需要有一个通用的标准语言来表示Ontology,就像XML作为标准的数据交换语言一样。目前正在开发中的语言有:SHOE、OML、XOL、Riboweb、RDFS和OIL。下面将就w3c提出的OWL(Web Ontology Language)做进一步的分析。

  目前语义Web是一个新兴的研究方向,Ontology在其中的应用刚刚起步。

  OWL(Web Ontology Language)适用于这样的应用,在这些应用中,不仅仅需要提供给用户可读的文档内容,而且希望处理文档内容信息。OWL能够被用于清晰地表达词汇表中的词条(term)的含义以及这些词条之间的关系。而这种对词条和它们之间的关系的表达就称作Ontology。OWL相对XML、RDF和RDFSchema拥有更多的机制来表达语义,从而OWL超越了XML、RDF和RDFSchema仅仅能够表达网上机器可读的文档内容的能力。

  语义网是对未来网络的一个设想,在这样的网络中,信息都被赋予了明确的含义,机器能够自动地处理和集成网上可用的信息。语义网使用XML来定义定制的标签格式以及用RDF的灵活性来表达数据,下一步需要的就是一种Ontology的网络语言(比如OWL)来描述网络文档中的术语的明确含义和它们之间的关系。

  对象(或者资源)以及它们之间关系的数据模型,为数据模型提供了简单的语义,这些数据模型能够用XML语法进行表达。

  描述RDF资源的的属性和类型的词汇表,提供了对这些属性和类型的普遍层次的语义。

  添加了更多的用于描述属性和类型的词汇,例如类型之间的不相交性(disjointness),基数(cardinality),等价性,属性的更丰富的类型,属性特征(例如对称性,symmetry),以及枚举类型(enumerated classes)。

  W3C 发言人Ian Jacobs说,开发语义网的目的是能够在互联网上进行更结构化的智能处理,例如,当一个人确定要参加某个城市的会议后,就可以自动查找有关航班和酒店的信息。

  W3C称,W3C Web 本体论工作小组正在对OWL Web本体论语言进行设计,OWL是本体论Web 语言(Ontology Web Language)的字母缩写。设计的最终目的是为了提供一种可以用于各种应用的语言,这些应用需要理解内容,从而代替只是采用人类易读的形式来表达内容。作为语义网的一部分,XML、RDF和RDF-S支持通过提供针对术语描述的词汇表,共同推进了机器的可靠性。

  W3C本周还发行了其Web 服务架构使用方案集合的工作草案,目的是为下一代的Web服务提供使用案例和方案。

  W3C Web服务架构工作小组特别发行的方案包括诸如旅行社使用案例和类似电子数据交换的采购等情形。Jacobs说:“W3C官员正在制定有关Web服务架构范围的文件。”

  支持那些需要在推理系统上进行最大程度表达的用户,这里的推理系统能够保证计算完全性(computational completeness,即所有地结论都能够保证被计算出来)和可决定性(decidability,即所有的计算都在有限的时间内完成)。它包括了OWL语言的所有约束,但是可以被仅仅置于特定的约束下。

  支持那些需要在没有计算保证的语法自由的RDF上进行最大程度表达的用户。它允许在一个Ontology在预定义的(RDF、OWL)词汇表上增加词汇,从而任何推理软件均不能支持OWL FULL的所有feature。

  选择OWL Lite还是OWL DL主要取决于用户需要整个语言在多大程度上给出了约束的可表达性;

  选择OWL DL还是OWL Full主要取决于用户在多大程度上需要RDF的元模型机制(如定义类型的类型以及为类型赋予属性);

  在使用OWL Full而不是OWL DL时,推理的支持不可预测,因为目前还没有完全的OWL Full的实现。

  【说明】:以下用斜体标出的为OWL中的词条(term),rdf:和rdfs:前缀表示这些词条已经在RDF和RDF Schema中出现。

  Class只能根据命名了的superclass(它不能是任意的逻辑表达式)进行定义,而且只能使用特定类型的class restriction。

  类之间的Equivalence以及子类关系只能在命名了的class上做声明,不能应用于任意的类型表达式。

  同上,该约束也是局部约束,而且OWL Lite在Cardinality上的局部约束只允许Cardinality的取值为0和1(这不同于其他两类OWL允许任意数目的Cardinality)。

  OWL支持ontology引用、包含以及元信息描述。上面提到的三个层次的OWL都包含了用于指定导入的ontology、ontology版本信息和前版本信息、可向后兼容的ontology信息以及不兼容的ontology信息等一系列信息的方法。

  这是使用OWL的一系列词条的前提,我们必须准确说明正在使用的特定的词汇表。一个Ontology的标准的初始模块是包含在rdf:RDF标签中的一系列命名空间(namespace)的声明。这些声明用以准确解释文档中的标识符,从而使得Ontology的其他部分具有可读性。以下是一个典型的命名空间声明的例子:

  说明了缺省的命名空间,也就是当文档中出现没有前缀的标签时所引用的命名空间。

  指出了支持表达本Ontology的food这一Ontology的命名空间,它们以前缀food出现。

  说明了出现owl前缀的词条应该寻找的命名空间。这是通常的OWL声明,用以在文档中加入OWL词汇表。

  说明了在文档中出现的以rdf为前缀的词条的命名空间,这是为了引入RDF定义的词汇。

  说明了在文档中出现的以rdfs为前缀的词条的命名空间,这是为了引入RDF Schema定义的词汇。

  说明了在文档中出现的以xsd为前缀的词条的命名空间,这是为了引入XML Schema定义的词汇。

  说明了在文档中出现的以dte为前缀的词条的命名空间,这是为了引入包含XML Schema Datatype定义的词汇。

  我们也可以在Ontology定义之前在文档类型定义DocType一节中通过定义一些实体来给出命名空间的说明。例如:

  另外,命名空间只是对标签的说明,对属性没有约束。但是在OWL文档中我们又经常要用到和命名空间相关的词条,这时就必须写清楚整个URI。例如。但是如果有了类似上面的实体定义,我们也可以简写成“merlot”。

  完成了命名空间的定义,我们必须以下面的断言来开始一个OWL Ontology:

  接下来可以以一些标签标明注释、版本控制、以及对其他Ontology的引入等信息。例如:

  其中引入另外一个Ontology将会将它的整个定义的集合加入到知识库中来。需要注意的是,这个标签只是说明了引入一个Ontology的意图,但不总是成功的。在语义网上对网上资源的访问不总是成功的,这需要依照工具实现的情况而定。

  所有用户定义的class都缺省是owl:Thing的subclass。而领域相关的根class的定义只要给出一个命名的类声明就可以了。例如在制酒业的三个根class定义如下:

  这时我们只是用ID为类起了名字,并没有指定有关类的其他任何信息,例如该类的成员等等。rdf:ID属性类似于XML中的ID属性,这样我们能够通过类似“documentURI#Region”在其他的Ontology中引用region这一class。也可以采用类似“rdf:about=#x”的方法引用。

  类定义除了包括命名和引用以外,还包括限制。上面的subclassof就是一个限制。下面给出了Wine这个class的简单定义:

  rdfs:label标签给出了人们可读的类名。属性lang表示支持多语言表达。

  上面已经给出的property都是全局的属性约束。而这两个约束相对包含它们的类定义而言是局部的。例如:

  我们可以通过Cardinality直接指定于一个class相关的class的数目,例如:

  它的定义和class类似,说明了两个individual是同一的,例如:

  OWL通过下面的机制给出了定义类表达式的基本方法,从而能够通过嵌套定义给出一个复杂的class。

  OWL通过one of操作符给出了枚举一个class的成员的基本方法,例如下面的例子定义了WineColor这个class拥有3个成员:

  它用于表达一个individual是一个class的成员,同时不能是另外一个class的成员。

  对于制酒业而言,“产品地域”(production area)是一个非常重要的feature。根据生产地域的谷类的大小酒的类型存在很大的变化,从一个国家到一个特定的葡萄园。我们可以给出四种不同的产品地域:

  我们决定去掉“town”,将它们都看作region。这样做简化了模型,并且这附和实际中town作为一个产品地域在城镇周边,比城镇面积稍大或稍小的事实。

  Jena一组能够用来创建和操纵诸如此种类型的有向图的Java API。Jena用对象类来表示图、resource、property和literal,用于表达后三者的接口分别叫做Resource、Property和Literal,而图被表示为一个model。用于创建上面的图的代码如下:

  ModelMem是实现了接口Model的类。Jena还包括了其他用于实现Model的类,它们可以被存储在Berklay的DB数据库以及关系数据库中。VCARD是一个常数类,里面定义了所有VCARD Schema的常数。Jena还提供了其他常数类,如RDF、RDF Schema、Dublin Core 和DAML。其中,创建resource和添加property的两条语句可以被压缩为下面的一句:

  与上面不同的是,vcard:N属性以一个resource作为它的值,而该resource没有名字,称作一个空结点(blank Node)。

  如上面的两个例子所示,RDF有向图中的每条边就是一个陈述,它肯定了resource的一个事实。一个陈述包含三个部分:

  所以陈述又叫做三元组。一个RDF有向图包含了一系列的陈述(statement),他是陈述的集合,所以重复的陈述可以被加进一个图中。Jena的model接口提供了一个listStatements()方法用于得到一个在这个集合上的迭代器,它的返回类型为Statement。Statement接口提供了用于访问该陈述的subject、predicate和object的方法。一个例子如下:

  Jena提供了用XML格式读写RDF的方法,这就使得我们能够将一个RDF model存为一个文件并在以后将它读出来。

  不过该表达并不完全与我们上面给出的例子相符。在XML表达中不能描述一个空的节点,在原图中的空结点被赋予了一个URI。

  Jena还提供了扩展接口用于支持可插入的新的writer来序列化RDF。上面使用的是标准的“dumb”writer,Jena还支持一个更为成熟的RDF/XML writer:

  这个writer也叫做PrettyWriter,它能够使用RDF/XML feature的缩写语法更为紧凑的将一张图输出到文件。它同时也支持空结点。但是对于很大的图则不太适用,因为这样做的性能不能接收。要想输出很大的文件并且维持空结点,则使用N-Triples格式:

  其中,read方法的第二个参数应该是相对的URI,因为这里没有引用相对URI,所以可以为空。

  lcom.hp.hpl.mesa.rdf.jena.mem包包含了用于将整个模型状态装入内存的Jena API的实现。凡是创建基于内存的模型(最典型的是创建ModelMem类的实例)的实现都在本包中;

  l包包含了对于诸多实现通用的实现类。例如,它定义了类ResourceImpl, PropertyImpl, LiteralImpl。开发者一般不要直接使用这里的方法,例如不直接使用ResourceImpl,而使用createResource方法。这是为了保证在实现发生优化后不需要进行类型转换;

  给出一个resource的URL,可以使用Model.getResource(String uri)方法从图中得到该资源所对应的对象。如果对应的resource存在,则返回该resource的对象,否则将创建一个新的对象。例如:

  由于property的值可能为resource或者literal,而我们已经知道上面得到的值为resource,所以进行了强制类型转换。Jena也提供了特定类型的访问方法,从而不需要在编译时进行类型转换。所以上面的代码也可以写成:

  当调用getProperty方法时,Jena并没有定义要返回哪一个property,所以vcard.getProperty(VCARD.NICKNAME)的结果是不确定的。Jena只是返回其中任意一个,但并不保证连续两条调用都有可能返回同一个值。

  Jena核心只是提供了有限的查询元语。另外对RDF还有更为强大的RDQL查询语言。

  如果我们使用的vcard schema并没有为vcard定义一个类型,那我们可以假定只有类型为vcard的resource有property vcard:FN,而且在我们的数据中,所有这样的resource都有一个这样的property,那我们可以这样进行查询:

  显然它返回匹配参数给出的三元组的statement。如果在这三个参数的位置上任意一个为null,则认为匹配所有。所以

  以上的代码使用了Java的内置代理方法定义技术。其中select方法确保full name以“Smith”结束,而该过滤只是对subject起作用。

  前者列出图中所有的statement而后依次测试之,而后者允许使用应用实现本身维护的索引来提高性能。

  Jena提供了3种针对图这一整体进行的操作——即典型的集合操作:并(union)、叫(intersection)和差(different)。

  对两张图取并就是对两张图所包含的statement取并,这是为了支持RDF所给出的一个关键操作,它使得不同数据源的数据能够被合并。给出下面的两张图:

  目前Jena的异常机制不很受欢迎,它将在将来得到改进。由于Jena被设计成具有很高的灵活性并且支持不同的存储系统,所以存储管理器可以在任何时候给出一个非预期的错误。所以几乎所有的Jena方法在结尾都要注明要抛出RDFException异常。经验证明这不是一个好方法,当抛出异常时,通常这些异常都应该被忽略,检查出这些异常没有任何好处。

  RDF给出了表达事物集合的特殊类型的resource。这些resource叫做容器。容器的成员或者是resource,或者是literal。共有3类容器:

  注意BAG的成员标号rdf:_1和rdf:_2的顺序并不重要,它们可以被交换。而ALT的成员标号除了第一个是重要的(它是缺省的选择)外,也是顺序无关的。

  Jena类提供的用于操纵容器的方法包括:添加新成员、插入成员到容器的成员中部、删除成员等。

  进一步说,一共有两类literal:一种是普通的string,一种是一个定义良好的XML片断。例如下面的代码:

  两个literal可以被看作相等的条件是:或者都是简单的literal,或者都是XML literal。而且要么都没有语种标签,要么有的话标签相同。

http://39-5963.net/gongliyuyi/12.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有