1、用到的工具:JDK 安装及配置Protg 下载网址: http:/protege.stanford.edu 可视化开发平台graphviz 图形化显示本体关系图 http:/www.graphviz.org/Downloadphp Mysql 及客户端工具 不用介绍了吧,我用的 5。XMysql java 连接器 下载地址: http:/ mysql-connector-java-3.1.12-bin.jar 文件,将其复制到 protege 的安装目录中(注意不是插件目录),然后将它的名字变为 driver.jar。Mysql 及相关工具用来将本体保存在数据库中。beangenerator.
2、jar 这个在 JADE 的文档中所记载,可以将 protege 构建的 OWL 本体导出为 JADE 的本体类使用建立 Animal 工程实例步骤 1 建立新的项目。打开 protege,然后会出现对话框,点击 Create New Project.,出现 Create New Project 对话框后,选择 OWL Flies(.owl or .rdf)后,点击 Finish,而不选Next。 步骤 2 建立类。protege 的主页面中会出现,OWL Classes(OWL 类),Properties(属性),Forms(表单),Individuals(个体 ),Metedata(元类)
3、这几个标签。我们选择 OWL Classes 来编辑。在 Asserted Hierarchy(添加阶层)中,会有所有类的超类 owl:Thing 上点击 Asserted Hierarchy 旁边的 Create subclass 或者在 OWL:Thing,点击右键选择 Create subclass。会出现 protege 自动定义名为 Class_1 的类。在右边的 CLASS EDITOR(类编辑器)的 Name选项中,输入 Animal 来替换自动定义的名字。 (建议使用英文,因为下面会用到 OWLViz来生成关系图,中文的话会容易出现问题。) 步骤 3 建立 Animal 的子类
4、,在 Animal 点击上右键,选择 Create subclass,并按照上述方法将其名字变为 Herbivore(素食动物) 。 步骤 4 然后按照上面的方法,建立 OWL:Thing 的另一个子类 Plant(植物),然后建立Plant 的子类 Tree(树) 。状态如下图 步骤 5 因为动物和植物是不同的事物,也就是说它们互相具有排他性(owl:disjointWith),我们来定义这个关系。在选中 Animal 的状态下,点击右下角的 Disjoints 的第三个按钮,在出现的 Add sibling to disjoints(将互为兄弟节点的类设为排他 )对话框中,选择 Mutua
5、lly between all siblings。这样动物和植物就有互相排斥的属性了。 步骤 6 建立属性。新建一个 ObjectProperty(注意不是 DataProperty)选择 Properties 标签,Name 改为 is_part_of,然后在右下角 Transitive 前面打上对号,说明这是一个传递性属性。然后建立一个对象属性(owl:ObjectProperty)eat(吃),在 Domain(定义域)中定义该属性的主体的类是 Animal。最后再建立一个属性 eated(被吃) ,它是属性 eat 的逆关系(owl:inverseOf),在右下角 Inverser 框
6、中选择 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(树叶)类。在 Ass
7、erted Conditions 选择is_part_of 属性,并在 Restrition 中的选择 allValuesFrom,最后选择属性类 Branch(树枝)。这样我们就定义了树叶是树枝的一部分。 步骤 9 定义草食动物。素食动物是动物的子类,而且只吃植物或是植物的一部分( 植物和一部分植物的并集,也就是植物)。和步骤 7 一样 Create Restrition 对话框中添加如下图的式子。 步骤 10 定义类 Giraffe(长颈鹿 ),它是素食动物,只吃树叶。按照上面的步骤定义,如下图 。 步骤 11 查看关系图,在菜单中选择 ProjectConfigure 在出现的对话框中,
8、在OWLVizTab 前打上对号,就会出新 OWLViz 的标签。如果在这里出现 DOT error 的话请参照错误提示的解决办法,然后点击 OWLViz 标签,选择 Show all classes,就可以看到关系图。 步骤 12 保存项目。点击这里下载这个项目下载这个项目。解压后用菜单中的 FileOpen Project解压路经中的 Animal.ppjr 即可。 接着基础篇,在动物本体中,建立狮子类(Lion)和肉食动物类(Carnivore),通过推理得到狮子是肉食动物。通过这个实例来简单了解推理机 Racer 的用法。基本操作方法在基础篇中有讲解,以下步骤中的操作不清楚的朋友请先看
9、基础篇。点击这里下载到此处的项目,在 protege 中点击 Open Project 打开项目。 步骤 1 在 Animal 中建立狮子类和肉食动物类。定义这两个类在同一级中,即这两个类为兄弟关系,目的是推理后狮子变为肉食动物的子类。 步骤 2 编辑狮子类的属性。这里我们定义狮子只吃素食动物。 步骤 3 编辑肉食动物的属性。这里我们需要建立一个 eat 的子属性 maineat(主要吃的是) ,因为肉食性动物可以吃植物,所以我们无法单纯的靠 eat 来推理出 Lion 是不是肉食性动物。这里我们定义肉食性动物 maineat 的值域是所有的动物。如下图 步骤 4 将肉食动物的 maineat
10、 属性变为充分必要条件。因为在现在的逻辑模型中我们的标准是开放世界假说,也就是说在没有成功证明某个陈述之前,我们将这个陈述定义为未知的事实而不是假的。因为我们没有明确指出肉食动物不能主要吃植物,所以肉食动物主要吃植物这个陈述是未知的,而不是假的。这样就给我们的推理造成了影响,所以我们需要明确指出肉食动物主要吃动物。也就是充分必要条件。做法是双击 NECESSARY(必要条件) 中的 将其拖拽到上方的NECECSSARY or g.Your MySQL connection id is 10 to server version: 3.23.55-maxType help; or h for he
11、lp. 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 protegeuserlocalhost identified by protegeuserpwd;/使上述变
12、更在服务器上有效。mysql flush privileges;Query OK, 0 rows affected (0.07 sec)/退出 mysqlmysql exit这里不用创建表格,protege 会自动创建。请确认你的 mysql 服务是运行的,否则将不能储存到数据库。接下来还需要下载 JDBC 驱动程序,它的作用是将 protege 和数据库连接起来。 点击这里下载 JDBC 驱动程序。下载完后展开,其中有一个 mysql-connector-java-3.1.12-bin.jar 文件,将其复制到 protege 的安装目录中(注意不是插件目录),然后将它的名字变为 drive
13、r.jar。然后回到 protege 中,选择菜单 FileConvert Project to Format.在弹出的对话框中选择 OWL Database。 弹出的 Owl Database 对话框中按照下面规定填写。Project 项目的名称。可以任意取。这里用 newAnimalok.pprjDriver Class Name 中添入 com.mysql.jdbc.DriverJDBC URL 添入 jdbc:mysql:/+mysql 服务器地址+数据库名称 这里用的是本地机,所以使用 localhost 数据库为刚才创建的 protege_db。所以添入 jdbc:mysql:/l
14、ocalhost/protege_dbTable 数据库中的表格名,可任意填写但不能与相同数据库中的表格重名,否则覆盖。这里用 AnimalUsername 数据库用户名。这里用 protegeuserPassword 数据库用户密码。这里用 protegeuserpwd然后点击 OK。如果出现错误,请参见 The JDBC driver is not on the Classpath 的错误,请参见错误提示的解决办法 确认 mysql /用 protegeuser 登陆数据库,在 Enter password:后输入密码mysql -u protegeuser -p Enter passwo
15、rd: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 14 to server version: 3.23.55-maxType 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 namesYou can turn off this
16、feature to get a quicker startup with -ADatabase 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 预定义,点击这里查看各个参数的详情 通
17、过以上的做法可以将我们做的本体储存到数据库中。然后通过数据库来访问本体数据。Owl Database 的配置一次后下一次就可以直接使用,只要使用命名为别的表格即可。附错误处理办法:OWLViz 的 DOT error先到 到此处下载 GraphViz tool,然后安装。在 OWLViz 设置中指定正确的 DOT application 路径。默认情况下是 (Linux 和 Unix 下的/usr/local/bin , 或者是 windows 下的C:Program FilesATTGraphVizbinDOT.exe) Max OS X 到此处下载 graphviz 并指定DOTappli
18、cation 路径:Graphviz 软件的路径+/Graphviz.app/Contents/MacOS/dot The JDBC driver is not on the Classpath 或者 JDBC driver not found请确认你的 protege 的安装目录下是否有 driver.jar。没有的话请点击这里下载,然后展开将其中的 mysql-connector-java-3.1.12-bin.jar 文件,将其复制到 protege 的安装目录中(注意不是插件目录),然后将它的名字变为 driver.jar。如果还是不行,那么请确认你是以protege.exe 启动的 protege。而不是 protege.jar 启动的 protege。如果是以 protege.jar 启动的protege,那么还需要设置 CLASSPATH。所以请用 protege.exe 启动试一下。