??xml version="1.0" encoding="utf-8" standalone="yes"?>
基本操作Ҏ在基中有讲解,以下步骤中的操作不清楚的朋友请先看基?a class="urlextern" onkeypress="return svchk()" title="http://www.chengtao.name/download/Animal.zip" onclick="return svchk()" target="_blank" rel="nofollow">点击q里下蝲到此处的目Q在protege中点击Open Project打开目?/strong>
步骤1 在Animal中徏立狮子类和肉食动物类。定义这两个cd同一U中Q即q两个类为兄弟关p,目的是推理后狮子变ؓ肉食动物的子cR?/strong>
步骤2 ~辑狮子cȝ属性。这里我们定义狮子只吃素食动物?/strong>
步骤3 ~辑肉食动物的属性。这里我们需要徏立一个eat的子属性maineat(主要吃的?Q因食性动物可以吃植物Q所以我们无法单U的靠eat来推理出Lion是不是肉食性动物。这里我们定义肉食性动物maineat的值域是所有的动物。如下图
步骤4 肉食动物的maineat属性变为充分必要条件。因为在现在的逻辑模型中我们的标准是开放世界假_也就是说在没有成功证明某个陈qC前,我们这个陈q定义ؓ未知的事实而不是假的。因为我们没有明指食动物不能主要吃植物Q所以肉食动物主要吃植物q个陈述是未知的Q而不是假的。这样就l我们的推理造成了媄响,所以我们需要明指食动物主要吃动物。也是充分必要条g。做法是双击NECESSARY(必要条g)
步骤5 启动RacerPro推理行推论。如果没有的朋友请到RacerPro官方|站下蝲。需要注册一下,然后在发l你邮g中,点击链接可以下载。安装选默认\径即可,不然q需要设|\径?/strong>
步骤6 q用推理行推理。选择菜单中OWL?gt;Classify taxonomy..(也可以点L{上方的Classify taxonomy..图标)的。这时protege会连接RacerProQ然后推理机做出推理。这时将推理机弹出的信息关闭Qprotege中间会出现新的类阶层图,q里狮子cdl变食动物的子类。ƈ在信息对话框中的Lion Moved from Animal to Carnivore?/strong>
步骤7 认关系图。在OWLViz中Asserted Model是推理前的关pdQInferred Model是推理后的关pd。可以看到狮子类已经成ؓ肉食动物的子cR?/strong>
步骤8 保存目?a class="urlextern" onkeypress="return svchk()" title="http://www.chengtao.name/download/newanimal.zip" onclick="return svchk()" target="_blank" rel="nofollow">点击下蝲该项目?/a>
中的
其拖拽C方的NECECSSARY & SUFFICIENT(充分必要条g)中。同LҎAnimal也拖拽到充分必要条g中。状态如下图
]]>
步骤1Q这里要用到推理中保存的项目。没有的朋友?a class="urlextern" onkeypress="return svchk()" title="http://www.chengtao.name/download/newanimal.zip" onclick="return svchk()" target="_blank" rel="nofollow">点击q里下蝲。打开推理中保存的newAnimal。根据推理机的推理我们知道了Lion是肉食动物,所以我们将其移到Carnivore肉食动物的下面作为它的子c?/strong>
步骤2Q徏立动物园的类Zoo。然后在属性编辑器中编辑一个新的datatype property(数据性属?Address,讑֮的定义域是类ZooQ设它的值域是xsd:string,在rdfs:comment中注释该属性表C地址。同h们编辑一个新的datatype property(数据性属?Tel,讑֮的定义域是类ZooQ设它的值域是xsd:string。在rdfs:comment中注释该属性表C电话号码。注意给定义域添加类的时候是用Add named Class(es),Domain后面的第2个按钮,而不是第一个。第一个按钮是新徏一个类q给作ؓ定义域时用?/strong>
步骤3Q徏立类Zoo个体。选择Individuals~辑器。在选择左边Zoocȝ情况下,点击INSTANCE BROWSER中的按钮Q出C一个个体实例,在INSTANCE EDITOR中将它的名字变ؓBeijing_Zoo。在下方的属性Address中点dP输入地址。这里作Z子输入Beijing Xizhimen RoadQƈ选择en。属性Tel中输?10-12345678Qƈ选择en。同LҎQ创建另?个个体实例Shanghai_Zoo和Tianjin_Zoo。属性Address和Tel请Q意输入。这h们就创徏?个Zoo的个体实例?/strong>
步骤4Q徏立动物个体。在建立动物个体之前Q前建立一个对象性属性BelongingQ它的定义域是AnimalQ值域是Zoo。回到Individuals~辑器中Q在选择cGiaffe的情况下Q徏立一个个体实例,命名为Lanlan。在下方的Belonging属性中点击加号Q在弹出的对话框中选择Beijing_zoo。同LҎQ徏?个个体实例让它们本别属于Shanghai_zoo和Tianjin_zoo。然后在建立3个Lioncȝ个体实例,BeiLion,ShangLion,TianLion让它们分别属?个动物园。这h们就可以q行下一步,用查询表单来查询?/strong>
步骤5Q用查询插件。点击菜单中的Project?gt;Configure 在出现的对话框中选择QueriesTab前加上对勾。然后就会出现Queries标签Q选择q个标签׃出现查询界面。最初我们只在Class中加入Animal然后点击Find。查询结果会在右边的Search Results中出玎ͼ如下图。然后将q个查询保留Q可以在以后利用。我们点d下方的Query Name中输?Animal然后点击Add to Query Library按钮。这栯个查询方式就被储存到Query Library中?/strong>
步骤6Q利用Query Library中保存的查询方式q行q一步查询。点击Query Library中的?Animalq点?a class="media" onkeypress="return svchk()" title="images:protege-3-14.jpg" onclick="return svchk()" >按钮。可以调用这个查询方式,在这里因为我们刚刚存储了q个方式Q所以上面的Query中不会有变化。我们在Slot中选择Belonging然后选择contains最后选择Beijing_zoo。点击Find ׃出现我们查找的结果。可以将q个查询方式存储?Animal_belong_BeijingZoo。当然ƈ非每个查询方式都需要储存,实际操作中按照自q需要存储即可?/strong>
步骤6Q将本体存储到数据库中。这里我们用Mysql。先做准备工作,因ؓ需要Mysql所以没有的朋友请先安装。Mysql在WindowsQlinux{的安装Ҏ在许多网站都有十分详l的介绍Q我在这里就不再重复了,请到|上查询一下,最好安装官Ҏ荐的版本。安装完后首先徏立一个protege的数据库Q步骤如?/strong>
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的用户protegeuserQ密码ؓprotegeuserpwd。ƈ把protege_db的所有权限给他? mysql> grant all privileges on protege_db.* to protegeuser@localhost identified by 'protegeuserpwd'; //使上q变更在服务器上有效? mysql> flush privileges; Query OK, 0 rows affected (0.07 sec) //退出mysql mysql> exit
q里不用创徏表格Qprotege会自动创建。请认你的mysql服务是运行的Q否则将不能储存到数据库。接下来q需要下载JDBC驱动E序Q它的作用是protege和数据库q接h?a class="urlextern" onkeypress="return svchk()" title="http://dev.mysql.com/downloads/connector/j/3.1.html" onclick="return svchk()" target="_blank" rel="nofollow">点击q里下蝲JDBC驱动E序。下载完后展开Q其中有一个mysql-connector-java-3.1.12-bin.jar文gQ将其复制到protege的安装目录中(注意不是插g目录)Q然后将它的名字变ؓdriver.jar。然后回到protege中,选择菜单File?gt;Convert Project to Format...在弹出的对话框中选择OWL Database?/strong>
弹出的Owl Database对话框中按照下面规定填写? Project 目的名U。可以Q意取。这里用newAnimalok.pprj Driver Class Name 中添?com.mysql.jdbc.Driver JDBC URL djdbc:mysql://+mysql服务器地址+数据库名U? q里用的是本地机Q所以用localhost 数据库ؓ刚才创徏的protege_db。所以添入jdbc:mysql://localhost/protege_db Table 数据库中的表格名Q可L填写但不能与相同数据库中的表格重名,否则覆盖。这里用Animal Username 数据库用户名。这里用protegeuser Password 数据库用户密码。这里用protegeuserpwd
然后点击OK。如果出现错误,请参见The JDBC driver is not on the Classpath的错误,请参?a class="wikilink1" onkeypress="return svchk()" title="错误提示的解军_? onclick="return svchk()" >错误提示的解军_?/a>
认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本体已经存储C数据库中。其中的各个参数均ؓprotege预定义,点击q里查看各个参数的详?/a> 通过以上的做法可以将我们做的本体储存到数据库中。然后通过数据库来讉K本体数据。Owl Database的配|一ơ后下一ơ就可以直接使用Q只要用命名ؓ别的表格卛_?/strong>
步骤1 建立新的目。打开protege,然后会出现对话框Q点击Create New Project...Q出现Create New Project对话框后Q选择OWL Flies(.owl or .rdf)后,点击FinishQ而不选Next?/strong>
步骤2 建立cRprotege的主面中会出现QOWL Classes(OWLc?,Properties(属?,Forms(表单),Individuals(个体),Metedata(元类)q几个标{。我们选择OWL Classes来编辑。在Asserted HierarchyQ添加阶层)中,会有所有类的超cowl:Thing上点击Asserted Hierarchy旁边的Create subclass或者在OWL:Thing,点击右键选择Create subclass。会出现protege自动定义名ؓClass_1的类。在双的CLASS EDITORQ类~辑器)的Name选项中,输入Animal来替换自动定义的名字?使用英文Q因Z面会用到OWLViz来生成关pdQ中文的话会Ҏ出现问题?
步骤3 建立Animal的子c,在Animal点击上右键,选择Create subclassQƈ按照上述Ҏ其名字变ؓHerbivore(素食动物)?/strong>
步骤4然后按照上面的方法,建立OWL:Thing的另一个子cPlant(植物)Q然后徏立Plant的子cTree(?。状态如下图
步骤5 因ؓ动物和植物是不同的事物,也就是说它们互相h排他?owl:disjointWith)Q我们来定义q个关系。在选中Animal的状态下Q点d下角的Disjoints的第三个按钮Q在出现的Add sibling to disjoints(互为兄弟节点的c设为排?对话框中Q选择Mutually between all siblings。这样动物和植物有互相排斥的属性了?/strong>
步骤6 建立属性。新Z个ObjectProperty(注意不是DataProperty)选择Properties标签QName改ؓis_part_ofQ然后在右下角Transitive前面打上对号Q说明这是一个传递性属性。然后徏立一个对象属?owl:ObjectProperty)eat(?Q在DomainQ定义域Q中定义该属性的M的类是Animal。最后再建立一个属性eatedQ被吃)Q它是属性eat的逆关p?owl:inverseOf)Q在右下觺nverser框中选择eat属性?参照?
步骤7 建立一个owl:Plant的子cBranch(树枝)Qƈ附加限制条g。在选择Branch的状态下Q点M下方的Asserted Conditions(d条g)中的W二个按?Create restrition )。在弹出的对话框中,选择Restrition中的allValuesFromQ然后点M方的Insert class...。最后选择TreeQ这h们就定义了类BranchQ它是树(Tree)的一部分Qis_part_ofQ?/strong>
步骤8 和步?一P建立owl:Plant的子cLeaf(树叶)cR在Asserted Conditions选择is_part_of属性,q在Restrition中的选择allValuesFromQ最后选择属性类Branch(树枝)。这h们就定义了树叶是树枝的一部分?/strong>
步骤9 定义草食动物。素食动物是动物的子c,而且只吃植物或是植物的一部分(植物和一部分植物的ƈ集,也就是植?。和步骤7一样Create Restrition对话框中d如下囄式子?
步骤10 定义cGiraffe(镉K?Q它是素食动物,只吃树叶。按照上面的步骤定义Q如下图 ?/strong>
步骤11 查看关系图,在菜单中选择Project?gt;Configure在出现的对话框中Q在OWLVizTab前打上对P׃出新OWLViz的标{。如果在q里出现DOT error的话请参?a class="wikilink1" onkeypress="return svchk()" title="错误提示的解军_? onclick="return svchk()" >错误提示的解军_?/a>Q然后点击OWLViz标签Q选择Show all classesQ就可以看到关系图?/strong>
步骤12 保存目?a class="urlextern" onkeypress="return svchk()" title="http://www.chengtao.name/download/animal.zip" onclick="return svchk()" target="_blank" rel="nofollow">点击q里下蝲q个目下蝲q个目。解压后用菜单中的File?gt;Open Project?gt;解压路经中的Animal.ppjr卛_?/strong>