首页 > Protégé > Protege教程——创建一棵类的层次树

Protege教程——创建一棵类的层次树

2008年10月23日

这里是Protege教程中一些比较重要的片段,完整教程在http://www.crabone.com/index.php/protege-introduction#more-6

创建类,有6种方式,在我的OWL入门教程中,有非常详细的阐述,想了解的朋友去看看。
6种创建类的方法
在创建本体的时候,用的最多的当然是第一种方法————Named Class。这种Class也被称为Plain Class,意思就是没有任何语义的类,仅仅是一个标示。好了,我们开始!

  • 打开Protégé,这次我们要选第一个选项了,就是自己去创建本体。
  • 接着要你输入URI,就是世界上唯一的地址,作为我这个本体的标示。这里我们填http://www.crabone.com/ontologies/organization.owl,注意这种规范的写法是很重要的。这是RDF的知识点了,我就不啰嗦了,有兴趣朋友看这里RDF入门教程
  • 之后就选择这个本体,我们本体存放的位置。
  • 点击Finish之后,我们实际上已经创建了一个空的本体了。而且Protégé已经为你创建了RDF/XML,你可以去看看你保存着的OWL文件,表示形式为:
    1. <?xml version="1.0"?>
    2.  
    3.  
    4. <!DOCTYPE rdf:RDF [
    5.     <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    6.     <!ENTITY owl2 "http://www.w3.org/2006/12/owl2#" >
    7.     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    8.     <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
    9.     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    10.     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    11. ]>
    12.  
    13.  
    14. <rdf:RDF xmlns="http://www.crabone.com/ontologies/organization.owl#"
    15.      xml:base="http://www.crabone.com/ontologies/organization.owl"
    16.      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    17.      xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
    18.      xmlns:owl="http://www.w3.org/2002/07/owl#"
    19.      xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    20.      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    21.      xmlns:owl2="http://www.w3.org/2006/12/owl2#">
    22.     <owl:Ontology rdf:about=""/>
    23. </rdf:RDF>
  • 进来之后,我们选择Classes那个面板,开始建立出下面这样的一棵树。


    这棵树是由一些“兴趣爱好”这样的类组成的,一个社团有什么样的兴趣爱好,就将会是什么样的社团,当然一个社团也可以有多个兴趣爱好。至于上图的操作我想就没必要讲了,重点要讲述的是大家在建模的时候要分清什么是分类,什么是继承。

    继承:只要学过面向对象编程的朋友都熟悉这个概念,在RDF和OWL里父类与子类的关系,远远没有OOP里面那么玄乎,我们来看W3C上的语法描述:
    if
    T(?c1, rdfs:subClassOf, ?c2)

    T(?x, rdf:type, ?c1)
    then
    T(?x, rdf:type, ?c2)
    意思就是如果C1是C2的子类,并且有一个实体或者类是属于C1的,那么它也属于C2。记住!推理机就只明白这点,仅此这么简单!

    分类:这里指的分类其实就是上面的继承,一模一样!但是我们在建模的时候并没有把这些分类的类当作本体中的关键元素,而是属于辅助类。辅助什么?辅助我们建模,并不是辅助推理机,有了这些辅助类可以使我们的类机构图更加清晰,我这里举个例子,见下图:

    我们可以看到这里多了几个类,我们来看哪些是分类关系,哪些是继承关系。这里的Thing下面有一个分类叫Interest,Interest下面有3个被继承的子类,其中的NamedInterest就是典型的辅助类,也可以称为分类类,因为NonMusic和MusicAndFootball是一类兴趣爱好,我们暂且称为复合型的爱好,还有4个就叫做纯种爱好,或者原始爱好。而NamedInterest的作用就是为了建模的时候有个清晰的建模思维,让建模更具有逻辑性和条理性,但是NamedInterest这种类将不会对推理起到任何作用,它仅仅是借用了SubClassOf公理(后面章节将会详述)来作为辅助的。

    Protégé , , , ,

    1. 目前还没有任何评论.
    1. 目前还没有任何 trackbacks 和 pingbacks.