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

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

Protege使用教程(进阶篇)_数据库

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

Protege使用教程(进阶篇)_数据库_02

Protege使用教程(进阶篇)_定义域_03

Protege使用教程(进阶篇)_定义域_04

步骤3:建立类Zoo个体。选择Individuals编辑器。在选择左边Zoo类的情况下,点击INSTANCE BROWSER中的

Protege使用教程(进阶篇)_数据库_05

按钮,出现了一个个体实例,在INSTANCE EDITOR中将它的名字变为Beijing_Zoo。在下方的属性Address中点击加号,输入地址。这里作为例子输入Beijing Xizhimen Road,并选择en。属性Tel中输入010-12345678,并选择en。同样的方法,创建另外2个个体实例Shanghai_ZooTianjin_Zoo。属性AddressTel请任意输入。这样我们就创建了3Zoo的个体实例。

Protege使用教程(进阶篇)_定义域_06

Protege使用教程(进阶篇)_mysql_07

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

Protege使用教程(进阶篇)_mysql_08

Protege使用教程(进阶篇)_mysql_09

Protege使用教程(进阶篇)_定义域_10

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

Protege使用教程(进阶篇)_mysql_11

Protege使用教程(进阶篇)_mysql_12

Protege使用教程(进阶篇)_数据库_13

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

Protege使用教程(进阶篇)_mysql_15

Protege使用教程(进阶篇)_定义域_16

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

Protege使用教程(进阶篇)_mysql_17


弹出的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的错误,请参见错误提示的解决办法

Protege使用教程(进阶篇)_数据库_18

确认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的配置一次后下一次就可以直接使用,只要使用命名为别的表格即可。