2006年7月4日

本篇将接着基础篇,在动物本体中,建立狮子类(Lion)和肉食动物类(Carnivore),通过推理得到狮子是肉食动物。通过这个实例来简单了解推理机Racer的用法。

基本操作方法在基础篇中有讲解,以下步骤中的操作不清楚的朋友请先看基础篇。点击这里下载到此处的项目,在protege中点击Open Project打开项目。

步骤1 在Animal中建立狮子类和肉食动物类。定义这两个类在同一级中,即这两个类为兄弟关系,目的是推理后狮子变为肉食动物的子类。

步骤2 编辑狮子类的属性。这里我们定义狮子只吃素食动物。

步骤3 编辑肉食动物的属性。这里我们需要建立一个eat的子属性maineat(主要吃的是),因为肉食性动物可以吃植物,所以我们无法单纯的靠eat来推理出Lion是不是肉食性动物。这里我们定义肉食性动物maineat的值域是所有的动物。如下图

步骤4 将肉食动物的maineat属性变为充分必要条件。因为在现在的逻辑模型中我们的标准是开放世界假说,也就是说在没有成功证明某个陈述之前,我们将这个陈述定义为未知的事实而不是假的。因为我们没有明确指出肉食动物不能主要吃植物,所以肉食动物主要吃植物这个陈述是未知的,而不是假的。这样就给我们的推理造成了影响,所以我们需要明确指出肉食动物主要吃动物。也就是充分必要条件。做法是双击NECESSARY(必要条件)中的 将其拖拽到上方的NECECSSARY & SUFFICIENT(充分必要条件)中。同样的方法将Animal也拖拽到充分必要条件中。状态如下图

步骤5 启动RacerPro推理机进行推论。如果没有的朋友请到RacerPro官方网站下载。需要注册一下,然后在发给你邮件中,点击链接就可以下载。安装选默认路径即可,不然还需要设置路径。

步骤6 运用推理机进行推理。选择菜单中OWL–>Classify taxonomy..(也可以点击标签上方的Classify taxonomy..图标)的。这时protege会连接RacerPro,然后推理机将做出推理。这时将推理机弹出的信息关闭,protege中间会出现新的类阶层图,这里狮子类已经变为肉食动物的子类。并在信息对话框中的Lion Moved from Animal to Carnivore。

步骤7 确认关系图。在OWLViz中Asserted Model是推理前的关系图,Inferred Model是推理后的关系图。可以看到狮子类已经成为肉食动物的子类。

步骤8 保存项目。点击下载该项目。

posted @ 2006-07-04 19:31 水甲鸟 阅读(1327) | 评论 (9)编辑 收藏

这篇教程接着基础篇和推理篇,对于基础篇和推理篇解释的步骤这里不在重复解释。不知道的朋友请先看基础篇和推理篇来熟悉基本操作步骤。点击这里参照新手入门基础篇和推理篇 在本篇进阶片教程中主要是介绍个体的编辑(Individuals),查询插件(QueriesTab)的用法以及将编辑好的本体存储到数据库中(Owl Database)。对于Owl数据库我这里采用Mysql(对于其他的数据库请到官方网站查询)。

步骤1:这里要用到推理篇中保存的项目。没有的朋友请点击这里下载。打开推理篇中保存的newAnimal。根据推理机的推理我们知道了Lion是肉食动物,所以我们将其移到Carnivore肉食动物的下面作为它的子类

步骤2:建立动物园的类Zoo。然后在属性编辑器中编辑一个新的datatype property(数据性属性)Address,设它的定义域是类Zoo,设它的值域是xsd:string,在rdfs:comment中注释该属性表示地址。同样我们编辑一个新的datatype property(数据性属性)Tel,设它的定义域是类Zoo,设它的值域是xsd:string。在rdfs:comment中注释该属性表示电话号码。注意给定义域添加类的时候是用Add named Class(es),Domain后面的第2个按钮,而不是第一个。第一个按钮是新建一个类并给作为定义域时用。

步骤3:建立类Zoo个体。选择Individuals编辑器。在选择左边Zoo类的情况下,点击INSTANCE BROWSER中的按钮,出现了一个个体实例,在INSTANCE EDITOR中将它的名字变为Beijing_Zoo。在下方的属性Address中点击加号,输入地址。这里作为例子输入Beijing Xizhimen Road,并选择en。属性Tel中输入010-12345678,并选择en。同样的方法,创建另外2个个体实例Shanghai_Zoo和Tianjin_Zoo。属性Address和Tel请任意输入。这样我们就创建了3个Zoo的个体实例。

步骤4:建立动物个体。在建立动物个体之前,前建立一个对象性属性Belonging,它的定义域是Animal,值域是Zoo。回到Individuals编辑器中,在选择类Giaffe的情况下,建立一个个体实例,命名为Lanlan。在下方的Belonging属性中点击加号,在弹出的对话框中选择Beijing_zoo。同样的方法,建立2个个体实例让它们本别属于Shanghai_zoo和Tianjin_zoo。然后在建立3个Lion类的个体实例,BeiLion,ShangLion,TianLion让它们分别属于3个动物园。这样我们就可以进行下一步,用查询表单来查询。

步骤5:使用查询插件。点击菜单中的Project–>Configure 在出现的对话框中选择QueriesTab前加上对勾。然后就会出现Queries标签,选择这个标签就会出现查询界面。最初我们只在Class中加入Animal然后点击Find。查询结果会在右边的Search Results中出现,如下图。然后将这个查询保留,可以在以后利用。我们点击在下方的Query Name中输入?Animal然后点击Add to Query Library按钮。这样这个查询方式就被储存到Query Library中。

步骤6:利用Query Library中保存的查询方式进行进一步查询。点击Query Library中的?Animal并点击按钮。可以调用这个查询方式,在这里因为我们刚刚存储了这个方式,所以上面的Query中不会有变化。我们在Slot中选择Belonging然后选择contains最后选择Beijing_zoo。点击Find 就会出现我们查找的结果。可以将这个查询方式存储为?Animal_belong_BeijingZoo。当然并非每个查询方式都需要储存,实际操作中按照自己的需要存储即可。

步骤6:将本体存储到数据库中。这里我们使用Mysql。先做准备工作,因为需要Mysql所以没有的朋友请先安装。Mysql在Windows,linux等的安装方法在许多网站都有十分详细的介绍,我在这里就不再重复了,请到网上查询一下,最好安装官方推荐的版本。安装完后首先建立一个protege的数据库,步骤如下

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 3.23.55-max
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
//建立一个名字叫protege_db的数据库。
mysql> create database protege_db; 
Query OK, 1 row affected (0.00 sec)
//建立一个在localhost的用户protegeuser,密码为protegeuserpwd。并把protege_db的所有权限给他。
mysql> grant all privileges on protege_db.* to protegeuser@localhost identified by 'protegeuserpwd';
//使上述变更在服务器上有效。
mysql> flush privileges;
Query OK, 0 rows affected (0.07 sec)
//退出mysql
mysql> exit

这里不用创建表格,protege会自动创建。请确认你的mysql服务是运行的,否则将不能储存到数据库。接下来还需要下载JDBC驱动程序,它的作用是将protege和数据库连接起来。点击这里下载JDBC驱动程序。下载完后展开,其中有一个mysql-connector-java-3.1.12-bin.jar文件,将其复制到protege的安装目录中(注意不是插件目录),然后将它的名字变为driver.jar。然后回到protege中,选择菜单File–>Convert Project to Format...在弹出的对话框中选择OWL Database。

弹出的Owl Database对话框中按照下面规定填写。
Project 项目的名称。可以任意取。这里用newAnimalok.pprj
Driver Class Name 中添入 com.mysql.jdbc.Driver
JDBC URL  添入jdbc:mysql://+mysql服务器地址+数据库名称  这里用的是本地机,所以使用localhost 
数据库为刚才创建的protege_db。所以添入jdbc:mysql://localhost/protege_db
Table 数据库中的表格名,可任意填写但不能与相同数据库中的表格重名,否则覆盖。这里用Animal
Username 数据库用户名。这里用protegeuser
Password 数据库用户密码。这里用protegeuserpwd

然后点击OK。如果出现错误,请参见The JDBC driver is not on the Classpath的错误,请参见错误提示的解决办法

确认mysql

//用protegeuser登陆数据库,在Enter password:后输入密码
mysql -u protegeuser -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 3.23.55-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
//使用protege_db数据库
mysql> use protege_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
//查看Animal表格
mysql> select * from Animal;
+-------+------------+-------+-------+-------------+-------------+------------+
| frame | frame_type | slot  | facet | is_template | value_index | value_type | 
+-------+------------+-------+-------+-------------+-------------+------------
| 13373 |          5 | 13296 |     0 |           0 |           0 |          3 |

可以看到owl本体已经存储到了数据库中。其中的各个参数均为protege预定义,点击这里查看各个参数的详情 通过以上的做法可以将我们做的本体储存到数据库中。然后通过数据库来访问本体数据。Owl Database的配置一次后下一次就可以直接使用,只要使用命名为别的表格即可。

posted @ 2006-07-04 19:27 水甲鸟 阅读(1674) | 评论 (4)编辑 收藏

此新手入门对应protege3.1.x版本。通过制作一个简单的动物本体,来使大家了解protege建立owl的基础用法。

步骤1 建立新的项目。打开protege,然后会出现对话框,点击Create New Project...,出现Create New Project对话框后,选择OWL Flies(.owl or .rdf)后,点击Finish,而不选Next。

步骤2 建立类。protege的主页面中会出现,OWL Classes(OWL类),Properties(属性),Forms(表单),Individuals(个体),Metedata(元类)这几个标签。我们选择OWL Classes来编辑。在Asserted Hierarchy(添加阶层)中,会有所有类的超类owl:Thing上点击Asserted Hierarchy旁边的Create subclass或者在OWL:Thing,点击右键选择Create subclass。会出现protege自动定义名为Class_1的类。在右边的CLASS EDITOR(类编辑器)的Name选项中,输入Animal来替换自动定义的名字。(建议使用英文,因为下面会用到OWLViz来生成关系图,中文的话会容易出现问题。)

步骤3 建立Animal的子类,在Animal点击上右键,选择Create subclass,并按照上述方法将其名字变为Herbivore(素食动物)。

步骤4然后按照上面的方法,建立OWL:Thing的另一个子类Plant(植物),然后建立Plant的子类Tree(树)。状态如下图

步骤5 因为动物和植物是不同的事物,也就是说它们互相具有排他性(owl:disjointWith),我们来定义这个关系。在选中Animal的状态下,点击右下角的Disjoints的第三个按钮,在出现的Add sibling to disjoints(将互为兄弟节点的类设为排他)对话框中,选择Mutually between all siblings。这样动物和植物就有互相排斥的属性了。

步骤6 建立属性。新建一个ObjectProperty(注意不是DataProperty)选择Properties标签,Name改为is_part_of,然后在右下角Transitive前面打上对号,说明这是一个传递性属性。然后建立一个对象属性(owl:ObjectProperty)eat(吃),在Domain(定义域)中定义该属性的主体的类是Animal。最后再建立一个属性eated(被吃),它是属性eat的逆关系(owl:inverseOf),在右下角Inverser框中选择eat属性。(参照图)

步骤7 建立一个owl:Plant的子类Branch(树枝),并附加限制条件。在选择Branch的状态下,点击中下方的Asserted Conditions(添加条件)中的第二个按钮(Create restrition )。在弹出的对话框中,选择Restrition中的allValuesFrom,然后点击下方的Insert class...。最后选择Tree,这样我们就定义了类Branch,它是树(Tree)的一部分(is_part_of)。

步骤8 和步骤7一样,建立owl:Plant的子类Leaf(树叶)类。在Asserted Conditions选择is_part_of属性,并在Restrition中的选择allValuesFrom,最后选择属性类Branch(树枝)。这样我们就定义了树叶是树枝的一部分。

步骤9 定义草食动物。素食动物是动物的子类,而且只吃植物或是植物的一部分(植物和一部分植物的并集,也就是植物)。和步骤7一样Create Restrition对话框中添加如下图的式子。

步骤10 定义类Giraffe(长颈鹿),它是素食动物,只吃树叶。按照上面的步骤定义,如下图 。

步骤11 查看关系图,在菜单中选择Project–>Configure在出现的对话框中,在OWLVizTab前打上对号,就会出新OWLViz的标签。如果在这里出现DOT error的话请参照错误提示的解决办法,然后点击OWLViz标签,选择Show all classes,就可以看到关系图。

步骤12 保存项目。点击这里下载这个项目下载这个项目。解压后用菜单中的File–>Open Project–>解压路经中的Animal.ppjr即可。

posted @ 2006-07-04 19:25 水甲鸟 阅读(1242) | 评论 (4)编辑 收藏


posts - 3, comments - 17, trackbacks - 0, articles - 0

Copyright © 水甲鸟