这篇教程接着基础篇和推理篇,对于基础篇和推理篇解释的步骤这里不在重复解释。不知道的朋友请先看基础篇和推理篇来熟悉基本操作步骤。点击这里参照新手入门基础篇和推理篇 在本篇进阶片教程中主要是介绍个体的编辑(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的配置一次后下一次就可以直接使用,只要使用命名为别的表格即可。