没有合适的资源?快使用搜索试试~ 我知道了~
软件X 17(2022)100952原始软件出版物OWLOOP:一个模块化API,用于在OOP对象层次结构中描述OWL公理Luca Buoncompagnia,b,Sunday,1,Syed Yusha Kareema,1,Fulvio Mastrogiovanniaa信息学、生物工程、机器人和系统工程系,热那亚大学,Via Opera Pia 13,16145,热那亚,意大利bTeseo s.r.l.,Piazza Montano 2a,16151,Genoa(热那亚),意大利ar t i cl e i nf o文章历史记录:接收12一月2021收到修订版2021年11月18日接受2021年保留字:面向对象编程(OOP)本体论Web语言(OWL)应用程序编程接口(API)软件架构a b st ra ctOWLOOP是一个应用程序编程接口(API),用于通过面向对象编程(OOP)的方式使用本体Web语言通常使用OOP范例设计软件架构以增加其模块性。如果架构的组件也利用OWL本体进行知识表示和推理,那么它们将需要与OWL公理接口。由于OWL不遵循OOP范式,这样的接口通常会导致影响模块化的样板代码,而OWLOOP旨在解决这个问题以及相关的计算方面。我们提出了一个扩展的OWL-API提供OWL公理之间的通用接口,服从推理和模块化OOP对象层次结构。版权所有©2021作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v2.1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00008法律代码许可证GNU General Public Licensev3.0使用git的代码版本控制系统软件代码语言、工具和服务使用的代码语言:Java编译要求、操作环境依赖性Java v1.8.0、Gradle v5.2.1、Junit v4.12,aMOR v2.2,OWL-API v5.0.5,openllet v2.5.1链接到开发人员文档/手册github.com/TheEngineRoom-UniGe/OWLOOP/wiki问题支持电子邮件luca.buoncompagni. gmail.com,kareem.syed. dibris.unige.it1. 动机和意义Web本体语言(OWL)是由万维网联盟(W3C)[1]标准化的语义语言。它用于将隐含和显式知识形式化为符号中基于逻辑的公理,以表示事物,事物组通讯作者:信息学,生物工程,机器人和系统工程,热那亚大学,通过歌剧皮亚13,16145,热那亚,意大利。电子邮件地址:luca. edu.unige.it(Luca Buoncompagni),kareem.syed.dibris.unige.it(Syed Yusha Kareem),fulvio. unige.it(FulvioMastrogiovanni)。1 这些作者对这项工作作出了同样的贡献。https://doi.org/10.1016/j.softx.2021.100952和事物之间的关系。本体提供了基于语义知识表示的推理能力,这对于涉及自治系统和从软件体系结构的角度来看,本体是用来与其他软件组件协同使用的[2],这些组件通常是用面向对象编程(OOP)范式实现的然而,由于OWL公理没有按照OOP形式主义在本体中进行结构化,因此会出现问题。虽然本体中的知识和基于OOP的数据结构(例如,例如,在一个实施例中,类、对象或属性)也存在不平凡的差异,在[3]中可以找到详尽的这也是为什么2352-7110/©2021作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxLuca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009522图1.一、本文中使用的UML符号。图二、 一个 简单的 本体作为一个例子, 在整个文件。软件开发者通常不愿意在他们的体系结构中使用本体[4]。如[4]所述,为了访问和集成软件体系结构中的本体,可以使用主动和被动的OWL到OOP映射主动映射将本体从它的句法形式转换为. 例如,在一个实施例中,基于可扩展标记语言(XML),以目标编程语言对语句进行编码。通过主动映射,可以在运行时对可执行本体进行推理[5相反,通过被动的OWL到OOP映射[4],本体通过外部推理引擎与OOP语言集成,即。例如,如《易经》云:“君子之道,焉可诬也?有始有卒者,其惟圣人乎!”推理机利用工厂模式来创建包含本体中知识快照的不可变OOP对象,本体是加载在内存中的基于OWL的数据被动映射涉及基于API的策略,而主动映射涉及面向本体的编程策略[4]。一方面,被动映射侧重于性能,但它可能会导致复杂和大量的源代码。此外,通过被动映射,本体中相互关联的OWL公理因此,被动映射允许通过OOP对象使用OWL公理,但它不像主动映射那样利用OOP范式的好处。另一方面,我们不知道一个积极的映射,支持所有的推理机制实现的OWL推理机使用被动映射。为了开发一个利用OWL形式主义的软件体系结构,我们确定了两个方面的设计和实现(i)基于OWL的知识表示从数据和先验语义,(ii)软件体系结构和基于OWL的知识的组件之间的接口。前一个方面可以用不同的本体论设计来解决符号模式,2可以使用可用的工具来实现,2 在www.example.com上可以获得最先进的本体设计模式的集合http://ontologydesignpatterns.org/wiki/Ontology_Design_Patterns_._ org_(ODP)。e. 例如,在一个实施例中,OWL-API [10]、Jena-API [11]或Protégé编辑器[12]。这些工具利用OWL符号的基于字符串的标识符,它们允许定义通过查询检索特定知识的过程。虽然这些工具支持本体设计过程,他们可能不适合后者,因为它有不同的要求,其中包括模块化,可维护性和同步的软件架构。这两个方面可能由具有不同专业知识的开发人员来处理,即。例如,OWL形式主义和软件体系结构解决方案,它们需要不断的共同努力来开发一个有效的系统。因此,我们的目标是一个API, 可用于开发接口本体和软件组件的模块化抽象层。在我们的方法中,一方面,OWL本体的专家可以设计语义数据表示,并将其存储在一个文件中作为先验知识,也可以开发基于OWLOOP的接口,在运行时操作和另一方面,基于本体和OWLOOP的接口可以被开发人员集中使用通过OOP范式对架构方面进行了本文提出了OWLOOP API,它实现了一个被动的OWL到OOP的映射,用于集成本体和软件体系结构。我们的目标是完全支持OWL推理机,并通过避免工厂设计模式来利用OOP范式的好处。OWLOOP API将OWL公理与描述符连接起来,描述符是表示本体的一个片段的OOP类,但它们既不是不可变的,也不是独立的。换句话说,可以在基于OOP的类层次结构中设计描述符OWLOOP支持实现通用的、模块化的OWL到OOP的映射,可以提高利用本体的软件体系结构的灵活性、可重用性和可维护性。2. 软件描述2.1. OWL形式主义概述图2描述了一个本体作为一个说明性的例子在整个文件。一个OWL本体是由公理组成的,I. 例如,描述某些实体的符号语句(列在Ta中)Luca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009523{}∈⟨⟩⟨⟩表1在左边,是OWL本体中可能的实体类型。OWLOOP实体可以是OWL实体或OWL实体的结构,如右侧所示。基数C在OWL公理中的范围是,只有,minn,maxn,exactn,其中nN+,并且它用于一些OWLOOP限制。OWLEntity OWLLOOPEntity(扩展 OWLEntity)OWLClass,OWLOOPBject:OWLDataType,OWLLOOPData:OWLNamedIndividual,OWLObjectProperty,限制:OWLObjectProperty,OWLNamedIndividual,OWLDataProperty,OWLLiteral,OWL ClassIII,或OWLLiteral,OWLOOPOWL ClassC、OWL ClassC或OWL Class COWLDataProperty。OWLDataProperty、OWLDataType和OWLDataType。表2OWLOOP当前可以映射到公理的表达式(在第二列中),由四种类型的描述符组织,即:例如,类、个体、对象和数据属性描述符。每个描述符的类型由其地面实体的类型(在第一列中)给出,并且它可以描述所示的表达式,每一个都具有特定的实体集(第三列)。接地(x)表达(Ek)实体集元素(yi)OWL类等效OWL类(类不相交OWL类描述符)超级OWL类子OWL类例如OWLNamedIndividual等效限制OWLOOP限制OWLNamedIndividual类型OWL类(个人)等效OWLNamedIndividual描述符)不相交OWLNamedIndividualObjectLinkOWLOOPObject数据链路OWLOOP数据OWLObjectProprty等效OWLObjectProperty(对象属性不相交OWLObjectProperty描述符)子OWLObjectProperty超级OWLObjectProperty逆OWLObjectProperty域OWLOOP限制范围OWLOOP限制OWLDataProperty等效OWLDataProperty(数据属性不相交OWLDataProperty描述符)子OWLDataProperty超级OWLDataProperty域OWLOOP限制范围OWLOOP限制表1)具有特定的基于逻辑的语义表达。公理有三种结构,即:例如,术语图和规则图(TBox和RBox),以及断言集(ABox)。TBox将概念(OWL类或类)描述为逻辑含义的层次结构(例如,例如,在一个实施例中,ROOM是LOCATION的子类),其中THING类作为默认根,i. 例如,的所有可能类的超类,以及它的对应物NOTHING。相反,ABox收集概念的实例(OWLNamedIndividual或个体)。例如,在一个实施例中,Room1是ROOM类的一个实例,它们可以通过角色(或属性)相互关联,例如:例如,在一个实施例中,房间1已链接到走廊1。RBox表示类似于TBox的属性和子属性,它包括特定的定义,例如传递,对称等。RBox中的属性可以描述其逆属性,以及其范围和域类,例如。例如,在一个实施例中,hasDoor分别关联LOCATION和DOOR类的实例。OWL标准区分对象属性和数据属性;OWLObjectProperty和OWL-DataProperty。如上所述,前者关联两个个体,而后者关联具有文字(OWLLiteral)范围的个体域,e. 例如,在一个实施例中,一个数字字面量被认为是具体类(OWLDataTypes)的实例,例如。例如,在一个实施例中,正数的集合OWL定义了类之间的逻辑析取和合取,以及通过属性表示类的基数限制。例如,在一个实施例中,走廊是一个位置,(一)例如,至少有两扇门。此外,同一框内的每对实体可以被设置为相等或不同(即,例如,disjoint),e. 例如,在一个实施例中,Robot1是与Room1不同的个体。基于OWL的推理机可以处理本体的三个框中的公理,该推理机检查本体的一致性并在开放词假设下推断新的隐式公理。此外,它还可以解决以不完全公理形式给出的查询,如:例如,在一个实施例中,查找ROBOT类的所有实例为了更好地理解推理能力,OWL形式主义的更多细节在[13,14]中可用。为了处理这样多种多样的公理语义,OWL的标准实现将每个公理Aj关联到某个第k个表达式Ek,e。例如,在一个实施例中,Sub、Super、Instance、Equivalent、Disjoint等。反过来,表达式定义实体的类型,需要在公理Aj= Ek(e1,e2,. . . ),e.例如,在一个实施例中,的子类表达式要求e1和e2都是类,而实例表达式要求一个个体和一个类。 为了表示适合OOP映射的公理,OWLOOP为每个OWL表达式提 供 了 一 个 对 应 的 Ek , e. 例 如 , 在 一 个 实 施 例 中 ,OWLObjectPropertyAssertion是OWLOOPObjectLink,而OWLClassAssertion是OWLOOPType。本文给出了表2中所示的OWLOOP表达式,并在上面介绍,e.例如,在一个实施例中,一些C、OWLObjectProperty、OWLClass或Luca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009524()案件审理室1,()下一页(=:[{联系我们E∈=[]=:{}{}[][][][]EEE=图3.第三章。O W L O O P 描 述 符 的通用定义。 颜色标识OOP包,这也 是一贯使用的图 。 4- 6分。我们的说明性本体中的OWL公理是超级(房间,位置),ObjectLink是LinkedTo,Room1,走廊1,DataLink(hasTemperature,Room1,24),(一个))不 同 的 描 述 符 基 于 他 们 的 地 面 , 即 。 例 如 ,ClassDescriptor、IndividualDescriptor、ObjectPropertyDescriptor和DataPropertyDescriptor。为了解决应用程序,开发人员应该设计具有基于表2的公理集的合适的复合描述符。基于OOP类可以实现的功能,设计复合描述符应该遵循四个步骤等效限制走廊,最小2,有门,门。OWLOOP API通过使用描述符(即:例如,Java类封装可重用代码以利用OWL公理,例如。例如,在一个实施例中,基于字符串的OWL符号标识符和基于查询的程序下一节- tion介绍了描述符中的OWL公理的结构,而第2.3节侧重于描述符功能,以断言和检索知识进行推理。2.2. 软件构架OWLOOP实现的OWL到OOP映射将涉及Ek表达式的公理存储到数据结构Dk中x,Y,k。其中,x是一个OWL实体,称为ground,YkKy1,y2,. . . 是一个实体集,使得OWL公理k(x,yi)是针对每个yi Y k导出的。例如,我们将(1)中的OWL公理编码为D1室,高级地点,事物,D2=ROOM,实例:{Room 1},{Room 2},D3Room1,ObjectLinkisLinkedTo,浏览器1,(2)D4会议室1,DataLink有温度,24,D5=走廊,等效限制:{min 2,hasDoor,DOOR}.实体集合Yk的每个第i个元素是一个OWLOOP实体,它可以是一个OWL实体(如D1和D2)或OWL实体的结构,i。例如,如表1中所指定的,OWLOOPBobject(在D3中)、OWLOOPData(在D4中)或OWLOOPRestriction(在D5中)。OWLOOP在名为Descriptor的OOP接口中表示数据结构D,其实现如图所示。3通过统一建模语言(UML),其符号总结在图。1.一、 从(2)可以推断,继承自OWLOOP接口,例如:例如,在一个实施例中,如清单4所示:(i)通过继承. ObjectorGround包提供的一个接口来分配一个基础实体;(ii)继承Descriptor接口的扩展(在包表达式(m.mptorexpression)某些表达式的表示k;(iii)对于每个k表达式,基于. martortortortitySet包实例化一个空实体集;(iv)对于每个k,指定一个要构建的描述符(在下一节中解决)。图4显示了FullClassDescriptor的实现,它是一个复合描述符,涉及表2第一行中显示的所有类表达式。因此,它需要四组类、一组个体和一组的限制。值得注意的是,任何带有可以用OWLOOP实现的ClassGround涉及FullClassDescriptor中涉及的表达式的子集。图5和6分别显示的执行的的FullIndividualDescriptor和FullObjectPropertyDescriptor,从中可以派生FullDataPropertyDescriptor的实现。实际上,由于我们的映射对所有OWL公理都使用了相同的结构D,所以OWLOOP总是依赖于相同的模式来处理不同的OWL表达式。因此,OWLOOP是模块化的,这也方便了当前版本中没有考虑的OWL公理的实现,如第5节所讨论的。2.3. 软件功能从表2导出的描述符可以被实例化,(i)地面,i.例如,OWL实体的标识符(e.例如,在一个实施例中,例如,一个OntologyReference。例如,清单2.3节在第1行显示了一个函数,用于创建具有关联推理器的本体,应该手动调用该推理器例如,Line具有相同类型的地面的描述符可以被合并,编码不同的公理,e. 例如,在一个实施例中,D1和D2可以用复合描述符D c x,Y1,Y2表示,其中Y1和Y2涉及超级和实例表达式。因此,OWLOOP提供了四个3 OWLOOP通过aMOR库与本体接口,aMOR库包装OWL-API以提供帮助类。我们将在第4节讨论aMOR的可移植性。Luca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009525EE见图4。FullClassDescriptor的实现。7构造了一个LinkIndividualDescr,这是一个基于Object 1的复合描述符,它涉及从寻址ObjectLink和DataLink的描述符继承的ex-task。更一般地,扩展描述符的OOP接口D对于表达式k,继承了以下段落。这些功能基于描述符的内部状态(即,例如, 基x和实体集合Y k),其可以与本体同步。 复合描述符是实现某些描述符接口的OOP对象,其功能可以通过CD访问。Ek. 比如说,由 第 7 行 返 回 的 对 象 cd 实 现 的 接 口 可 以 用 cd.ObjectLink 或cd.DataLink访问。4getGround():此方法返回地面实体x。对于复合描述符,cd。getGround()为所有实现的表达式返回相同的实体。getEntities():返回实体集合Y k 与Ek表达式相关。为了能够定义复合描述符,每个描述符D用不同的名称e定义该方法。例如,在一个实施例中,getObjects()表示ObjectLink表达式,cd.getEquivalentIndividuals()表示与单个基础关联的等效项。这些方法用于访问实体yi,以及操纵它们,e。例如,在一个实施例中, 通过cd.removeObject()。query():该方法返回与第k个表达式相关的知识,该表达式涉及本体中的基础实体。它返回一个结构为Yk的集合,但它不影响描述符的内部状态。它主要由描述符接口本身使用。readAxioms():它依赖于D.getEntities()和D.query()来比较描述符的内部状态和本体的状态。它将描述符的实体集改变为等于本体。它返回一个包含-检查所有已执行的更改,这些更改可用于从可能的不一致中恢复。复合描述符提供方法cd.readAxioms(),它调用cd。Ek.readAxioms(),用于cd所涉及的每个第k个表达式。D.writeAxioms():它类似于readAxioms(),但它将本体改变为等于实体集。4在本文中,我们稍微简化了语法。看到.articleExamplespackage用于示例的可运行版本1publicvoid run(){2OntologyReference.activateAMORlogging(false);//禁用日志。3returnOntologyReference.newOWLReferencesCreatedWithPellet(“robotAtHomeOnto“,//本体引用名称。“src/test/resources/robotAtHomeOntology.owl”,//Filepath.“http://www. 语义网org/emaroLab/robotAtHomeOntology”,//Ontology IRI.true);//手动调用Pellet reasoner。4个文件夹5public void run(){6OWL参考o =System. out. println();System. out. println= System. out. println();8returncd;//关于E:{ObjectLink,DataLink}的复合描述符。9个文件夹清单1:显示OWLOOP描述符实例化的示例。D.build():它允许以OOP方式使用描述符,因为它返回基于每个实体yi的新复合描述符nd。 在设计复合描述符时,开发人员应该指定nd的类型,其基础与D的实体集中的元素一致 。 然 后 , 通 过 nd.readAxioms ( ) 方 法 填 充 与D.getEntities()类似,每个描述符D定义具有不同名称的构建方法,以启用com的定义。磅描述符。值得注意的是,如果实体yi不是OWL实体,build()方法将有多个定义,e。例如,在一个实施例中,对于ObjectLink,可以返回基于对象属性或个体的描述符nd还存在由aMOR实现的其他有用的功能,例如。例如,在一个实 施 例 中 , 获 取 OWL 实 体 或 保 存 本 体 。 此 外 , 函 数ontoRef.synchroniseReasoner()执行OWL推理,这涉及所有OWL表达式。值得注意的是,如果需要推理,OWL查询是一项耗时的任务。因此,推理过程只应在需要时使用I. 例如,来影响query()的结果,从而影响readAxioms()和WriteAxioms()的输出。此外,为了与使用本体的其他软件兼容,aMOR提供了对基于工厂的OWL到OOP映射的完全访问OWL-APILuca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009526图五、Fu llIn di v idu a lDe s cr ipt o r 的实现。3. 说明性实例3.1. 断言和推断OWL公理见图6。 FullObjectPropertyDescriptor的实现。第27行更新reasoner以推断本体中的新知识,然后将其与内部状态同步第28通过阅读公理,我们可以用所需的隐含知识填充实体集,清单3.1节展示了如何使用复合描述符通过添加和删除图1中所示的 一 些 ax-iom 来 操 作 本 体 。 二 、 在 第 13 行 , 公 理 ObjectLink(isLinkedTo,Corner1,Room1)被添加到相对实体集,并且在第14行执行相同的操作,不同类型的输入。在第15行,本体发生了变化,使得走廊1链接到房间1和房间2。第 18 例 如 , Disjoint ( ROBOT , LOCATION ) 和 Disjoint( ROBOT , DOOR ) 。 第 23 例 如 , Domain ( hasDoor ,LOCATION)和Range(hasDoor,DOOR),其被应用于第25行处的本体。执行基于查询的程序最后,第32行显示了从描述符的内部状态中删除元素的方法,第33行将这些更改应用于本体。3.2. 使用OOP范式清单3.1节中的示例的目标是找到机器人所在的房间类型,e。例如,在一个实施例中,走廊该示例显示了与isIn属性相关的个体的检索。例如,在一个实施例中,我们将其存储在一个名为robot的变量Loc. 然后,它展示了如何找到进行分类robotLoc,使它们成为TBox中的一片叶子。在第37Luca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)1009527联系我们联系我们联系我们联系我们联系我们10OWL参考OntoRefpublic void online();11//在本体中断言OWL个体表达式公理。12ObjectLinkIndividualDesc corrdor1 =//EObjectLink,DataLink.newObjectLinkIndividualDesc(“ObjectLinkIndividualDesc”,ontoRef);13corrdor1.addObject(“isLinkedTo“,“Room 1“);//添加到ObjectLink来关联不同描述符的实体集合,并且作为示例,第40要通过构建直接从robot1检索locIndiv,描述符LinkIndividualDescr应设计为EtitySet。14newOWLOOPBject(“isLinkedTo“,“Room2“);15corrdor1.writeAxioms();//同步对本体的更改。16//将OWL类表达式公理添加到本体中。17DisjointClassDesc robotClass =//EDisjoint. newRestrictionClassDesc(“ROBOT“,ontoRef);18robotClass.addDisjointClass(“LOCATION“);//添加到Disjoint属性集。19System. out. println();20corrdor1.writeAxioms();//同步对本体的更改。21//将OWLObjectProperty表达式公理添加到本体。22DomainRangeObjectPropertyDesc hasDoor = //E Domain,Range. newDomainRangeObjectPropertyDesc(“hasDoor”,ontoRef);23hasDoor.addDomainClassRestriction(“LOCATION“);//添加到域安全设置。24hasDoor.addRangeClassRestriction(newOWLOOP Restriction(“DOOR“));25corrdor1.writeAxioms();//同步对本体的更改。26//基于本体同步实体集的更改。27ontoRef.synchroniseReasoner();//支持OWL推理。28println();29mysql.readAxioms();30println();31//从描述符的内部状态中删除公理。32System. out. println();33System. out. writeAxioms();//同步对本体的更改。清单2:展示如何通过描述符操作公理的示例。34//加载图中所示的本体。 2号线与1号线相似。35System.out. println();36//通过假设机器人位置(robotLoc)是唯一的来确定它。37LinkIndividualDesc robot1 =new LinkIndividualDesc(“Robot1”,getName();38robot1.addObject(“isIn”,true);//设置为只读取isIn财产一次。39mysql();40OWLNamedIndividual robotLoc =robot1.getIndividualFromObjectProp(“isIn”);41//在robotLoc上对有关E型的单个描述符进行接地。42System. out. println =new System. out. println();44 locIndiv.readAxioms();//读取robotLoc的类。46//构建基于robotLoc类的描述符。48Set SubclassDesc> locClasses=locIndiv.buildTypes();//ESub,Super50 for(SubclassDesc locClass:locClasses)52//一类只包含owl的robotLoc:Nothingisa leaf。54if(locClass.getdsubClasses().size()== 1)56Print,e. 例如,在一个实施例中, “Robot1在Corr1中,Corr1是走廊“。58System.out.println(robot1.getGround()+“isin“+ robotLoc+“,这是一个“+locClass.getGround());清单3:显示描述符构建法只 有 一 个 涉 及 Robot1的 isIn公 理 存 在 。 第 42- 第 48 行 构 建 了robotLoc的类型,i。例如,它计算一组以表示机器人位置的类为基础的描述符(例如,例如,在一个实施例中,走廊,位置和事物),并涉及子表达式。对于robotLoc的每个类,第54行检查它是否只有一个子类i。例如,NOTHING,这意味着它是本体中的一个叶类后一个示例表明,OWLOOP允许以OOP方式获取OWL类和子类,类似的方法也可以用于其他表达式。特别是,在第48-这要感谢build()方法,因为它可以用于构建新的关于类型表达式的单独描述符,而它构建关于对象链接和数据链接表达式的描述符,i. 例如,其他链接个人描述一种简单的方法是总是构建完整的描述符来访问每个build()方法中所有可能的表达式,但这可能会影响计算复杂性,因为OWLOOP会同步可能不必要的公理。3.3. 复合描述符实现为了突出OWLOOP的模块性,清单4展示了ClassDescriptor的实现,它继承了2.3节中列出的两种类型表达式的功能,例如,实例和Sub.实际上,对于基于表2的所有描述符,可以使用相同的模式来实现对OWL知识进行编码的OOP类,并且这些OOP类基于本体彼此相关,例如,例如,在一个实施例中,可以以类似OOP的方式获得或设置基础类的个体或子类特别是,get或set实体不是像工厂设计模式那样编码在不可变类中,而是编码在OWLOOP描述符中,OWLOOP描述符可以通过构建方法与其他描述符相关此外,开发人员可以利用基于OOP的多态性来实现OWLOOP描述符的层次结构,其对OWL符号和过程的基于字符串的标识符进行编码,以模块化方式基于OWL推理来检索隐式知识。因此,专家OWL形式主义可以建立一个抽象层与OWL相关的方面的描述符的手段,它可以提供给专家在软件体系结构中的目标是使用一个OOP类范式的本体。例如,清单3.1节可以实现为清单4中描述符的方法。以这种方式,软件架构中的专家可以依赖于类似OOP的方法来检索机器人位置,并且同时,OWL形式主义专家可以利用本体的模块化接口来表示关于机器人位置的知识。4. 影响OWLOOP允许实现描述符的模块化OOP体系结构,这些描述符表示本体中的特定知识。描述符可以编码OWL符号的基于字符串的标识符,即。例如,不可变的OOP对象,以及基于多态性和OWL推理利用隐含知识的过程。由于描述符可以构建其他描述符,使得它们基于本体彼此相关,因此可以通过可变的OOP对象来利用基于OWL的知识。此外,当系统的本体发生变化时,OWLOOP简化了系统的适应过程,因为所有与OWL相关的方面都封装在描述符中,而不是由软件组件定义因此,OWLOOP允许解耦基于OWL的知识表示及其在软件系统中的使用。OWLOOP基于aMOR,aMOR是一个提供使用OWL-API的实用程序的库。由于aMOR不隐藏访问权限,到OWL-API,开发人员可以继续使用任何基于OWL-API的程序。然而,其他基于OWL的API(e。例如,在一个实施例中,Jena)支持使用不同的本体格式,这些格式目前与OWLOOP不兼容。尽管如此,我们的OWL到OOP映射没有理由不能用包含OWL形式主义的其他API此外,其他Luca Buoncompagni、Syed Yusha Kareem和Fulvio Mastrogiovanni软件X 17(2022)100952861public classCDescr扩展 ClassGround63实现ClassExpression.Sub CDescr>,65ClassExpression.Instance< IDescr>{class=new Classes();70个私人个体=新个体();73publicCDescr(OWLClass instance,OWLReferences onto){75//一个基于ClassGround的构造函数。77super(instance,onto);79}81@krm.com来自ClassGround。publicvoid run(){85//在本体中写入87List< MappingIntent>r= Sub. intfindDuplicate();89r.addAll(实例。publicvoid run();91returnr;93}95@从ClassGround。publicvoid run(){99//从本体中读取。101List< MappingIntent>r= Sub. .println();103r.addAll(实例。publicvoid println();105returnr;107}110@Sub 表达式中的//。publicString getString(){114//一个基于工厂的子类名获取器。116个返回子类;118}120@来自Sub的100//100,并用于Sub。return().122publicvoid setSubclassDescriptor(OWLClasscls,OWLReferences){124//实现一个类似OOP的子类描述符的getter。126return newCDescr(cls,onto);128}131@Instance表达式中的“//”。publicvoid onDestination(){135//一个基于工厂的实例名获取器。137人返回;139}141//实例中的实例,并在Instance.build()中使用。143@145publicIDescr getIndividualDescriptor(OWLNamedIndividualinstance,OWLReferences onto){147//实现一个类似OOP的实例描述符的getter。149return newIDescr(instance,onto);151}153个文件夹清单4:CDescr的实现:一个包含Sub和Instance表达式的ClassDescriptor。CDescr被设计为为与Sub表达式相关的每个OWL类构建CDescr的其他实例,并为与Instance表达式相关的每个OWL个体构建IDescr。可用的工具可以用于设计本体,该本体可以在以后使用OWLOOP描述符与软件体系结构的组件接口。实际上,在OWL领域中,没有什么特别的特性是OWLOOP可以处理的,但其他工具可以没有尽管如此,在软件设计、开发和维护领域,OWLOOP具有其他OWL相关API没有直接提供的
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功