首页 百科知识 领域本体形式化

领域本体形式化

时间:2022-02-27 百科知识 版权反馈
【摘要】:领域本体的形式化处理可以对概念关系按照既定的规则采取批处理方式自动化的生成形式化的本体,提高了本体生成的效率。此外,领域本体的形式化还做到了数据与表示语言的分离,也就是说对于已经识别了等级关系和领域概念关系的数据,本体形式化处理可以采用任何本体描述语言进行描述,甚至可以同时生成几种不同表示语言的本体形式化文件。领域本体形式化处理的实现,我们借助了HP公司的Jena语义Web开发应用包中的API接口。
领域本体形式化_领域本体的半自动构建及检索研究

5.4 领域本体形式化

经过近10年的研究,虽然已经开发出了较好的本体编辑工具,如protégé,但是这些工具仍然需要专业人员对领域的概念和关系进行手工输入,进而编辑工具才能生成形式化的本体。在这一步工作中,许多概念关系是相同的,但仍然需要专业人员不断的手工重复劳动。例如,《齐民要术》、《农政全书》、《授时通考》、《补农书》等都是综合性农书,即都是农书类的实例(Instance),但是在protégé中却要逐个手工输入,无形中加重了重复劳动,降低了本体的生成效率。其实,这些概念关系事先已经被识别存储在文本文件或者数据库表中,如果能从这些文件中直接生成形式化本体,则会大大提高本体的编辑生成效率。

领域本体的形式化处理可以对概念关系按照既定的规则采取批处理方式自动化的生成形式化的本体,提高了本体生成的效率。此外,领域本体的形式化还做到了数据与表示语言的分离,也就是说对于已经识别了等级关系和领域概念关系的数据,本体形式化处理可以采用任何本体描述语言进行描述,甚至可以同时生成几种不同表示语言的本体形式化文件。而目前在许多本体编辑工具中,虽然可以生成多种表示语言的本体文件,但是一般都需要事先指定本体的描述语言才能进行本体编辑,如果需要采用另外一种本体表示语言,则需要重新输入所有的数据才可,在数据与表示语言的选择上,灵活性很小。目前有RDFS、DAML+OIL、OWL等多种本体描述语言。例如,存储在数据库表中,已经识别出概念关系的数据,可以自动生成RDFS或者OWL语言的本体形式化文件。

领域本体形式化处理的实现,我们借助了HP公司的Jena语义Web开发应用包中的API接口。在API接口中提供了许多处理本体形式化的属性和方法。采用Jena开发农学本体形式化处理需要经过以下几个步骤:

(1)生成本体模型

采用Jena中的ModelFactory方法生成本体模型,与此同时可以指定本体的描述语言,推理方式和存储方式。ModelFactory方法提供了多种本体模型可供选择。例如:

OntModel m=ModelFactory.createOntologyModel();

//生成OWL语言描述的、RDFS推理的内存存储的本体模型(默认);

OntModel m=ModelFactory.createOntologyModel(Ont-ModelSpec.DAML_MEM);

//生成无推理的DAML语言描述的本体模型。

(2)创建类

创建类,也就是把已经识别出的等级体系用本体语言表示。在Jena中,创建类,用createClass方法。

OntClass Book=m.createClass(AgriHist+“Book”);

//其中,m为(1)中生成的本体模型,Book为所创建的类名,AgriHist为生成的本体的URI地址

(3)生成类的语义属性

本体中主要有两种属性,一种是ObjectType属性,另一种是DataType属性,前者主要是关联两种类,一个类别是这种属性的Domain,另一个类别是该属性的Range;而后者主要是类别本身的特征。采用createObjectProperty方法可以生成ObjectType属性,同时需要制定Domain和Range;采用createDataProperty方法生成DataType属性。例如,下面的例子演示了生成一个名为writeBook的语义属性,它连接了农书类和作者类,表示了“写作/撰写关系”。

ObjectProperty writeBook=m.createObjectProperty(Agri-Hist+“writeBook”);

//为本体模型m生成一个名为writeBook的Object语义属性;

writeBook.addDomain(Book);

//该语义属性的Domain为Book类(Book类必须事先已经生成);

writeBook.addRange(Author);

//该语义属性的Range为Author类(Author类必须事先已经生成)。

(4)生成实例

生成实例,也就是为(2)中所创建的类别设置实例,例如创建了一个“农书类”,则“齐民要术、农政全书、授时通考”等均为其实例。在Jena中,生成实例采用OntModel中的createIndividual方法,首先采用getOntClass方法获取要创建实例的类,然后为其设置实例关系。

OntClass Book=m.getOntClass(AgriHist#Book);

//获取需要创建实例的类,例如已经生成的Book类;

Individual inst=m.createIndividual(AgriHist+“QiMin-YaoShu”,Book);

//为Book类生成一个名叫QiMinYaoShu的实例。

(5)将获取的语义属性赋给实例

给实例赋予语义属性,就是把事先设置好的类的属性关联到该类的实例。方法是需要首先采用getIndividual方法得到要赋予属性的实例,同时采用getOntProperty(或者getDataProperty)获取需要关联的语义属性,然后采用Individual的add方法为实例添加语义属性。

inst_QMYS.addProperty(writeBook,inst_JSX);

//其中,writeBook为(3)中设定的“写作/撰写关系”属性,inst_QMYS为农书类的一个实例(齐民要术),inst_JSX为人物类的一个实例(贾思勰)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈