同时实现关系持久化和语义网风格访问的系统及方法

文档序号:6463623阅读:131来源:国知局

专利名称::同时实现关系持久化和语义网风格访问的系统及方法
技术领域
:本申请涉及面向对象(ObjectOriented,00)模型到语义网的数据转换,特别涉及一种系统和方法,使得对于对象同时实现关系持久化(persistence.)和语义网风格访问。
背景技术
:面向对象编程占据目前软件开发的主导地位。从用于应用的OO模型的设计开始,开发者还期待处理有关模型的数据和模型的语义(semantics)的问题。对象,作为模型的数据,通过OR(对象-关系)映射系统(ORMSystem:Hibernate,参见http:〃www.hibemate.org/hib—docs/v3/reference/en/html/),可存储在关系数据库中,该OR映射系统首先生成用于OO模型的关系数据库模式(简称关系模式),然后将对象转换为关系数据。本体(Ontology),作为候选者,可以用于表达模型的语义,并且语义网(SemanticWeb,一种构建基于语义的系统的新兴技术)推荐本体网语言(OntologyWebLanguage,OWL)用于知识表示和推理。结果,引出了模型转换,这由OO模型(例如,ER(实体关系)、RDB(关系数据库)、XSD(XMLSchemaDefinition,XML(可扩展标记语言)数据库模式定义)和TJML(统一建模语言)模型)和OWL本体之间的自组织转换(ad-hoctransformation)引擎提供(EODM:EMFOntologyDefinitionMetamodel,参见http:〃www.eclipse.org/modeling/mdt/proiect二eodinffeodm)。语义网(SemanticWeb,SW)是当前Web的一种扩展,其中信息被赋予良好定义的语义,更便于计算机和人协同工作。如果称现有Web是超文本的Web(WebofHypertext),那么语义网可称为数据的网(Webofdata)。通过提供统一的数据格式,语义Web能有效管理分布在不同数据源中的信息,从而有助于信息集成。虽然上述两个问题似乎分别有解决方案,但涉及两者的构架(framework)仍然是一个挑战。给定OO模型,通过OR映射产生的关系数据与从模型转换产生的本体无关。诚然,有像D2R服务器(数据到资源描述框架(RDF)5月良务器,D2RServer:PublishingrelationaldatabasesontheSemanticWeb,参.见hi:tp:〃sites.wiwiss.fii-berl.in.de/suhl/bizei'/d2r-server/index.html)的工具可用于在语义网上发布关系数据库,这意味着一种桥接关系数据与本体的解决方案。然而,这种技术仍然没有在整体上解决上述问题。这是因为由像D2R的工具从关系模式发布的本体不总是在语义上"接近"其原生OO模型。例如,由D2R发布的XSD本体完全不同于、或者劣于从XSD的UML模型转换的本体。类似地,本体库可能用于存储从00模型转换的OWL本体,但是,其关系模式已经简化为如三元组(主语谓语宾语)一样筒单,后者不总是具体地"接近"其原生OO模型。下面,通过举例进行说明。假设已有关于Person(人)和Paper(论文)的OO模型。现有两对象,其一是MJ这个对象,作为Person类的实例,有id(标识符)、name(姓名)和papers(论文)三个属性;其二是UMRR这个对象,作为Paper类的实例,有id(标识符)、title(标题)和authors(作者)三个属性。希望在语义网上发布这两个对象,使之成为语义数据。也就是说,分别有统一资源标识符URI(UniformResourceIdentifier)来唯一地标识每个对象,比如d:MJ和d:UMRR,其中d是命名空间(Namespace)。同时,这两个URI4夸通过属性PersonPapers和PaperAmhors4皮此《连接起来。这样,从一个对象的URI出发,不但可以访问这个对象的描述,得到属性和属性值,而且能够通过链接浏览到其它对象。比如,通过作者MJ到达文章UMRR,再由文章UMRR到达其他作者,继而到达其他作者的其他文章,等等,依此类推。更有意思的是,利用Web2.0技术,我们还可以给MJ这个对象的URI加书签(Bookmark)并进行标签(Tag),在社区网络(SocialNetworking)上共享这个资源,或者订阅(Subscribe)这个URI,从而实时掌握MJ的数据信息。简而言之,上述问题要解决的是如何根据已有的OO模型将对象发布成为语义数据。ORM系统常见的做法分为三步骤第一步是为OO模型产生关系模式;第二步是把这些关系模式部署到关系数据库;最后是把对象转换成关系数据。结合上述例子,已知Person和Paper这两个OO类,两者之间有关联关系。因此OR映射所产生的关系模式中将有三张表直接映射得到的PERSON和PAPER以及反映关联关系的中间表PERSON—PAPER。在将关系模式部署到关系数据库中之后,原有的对象将被存储到这些表中,从而实现对于对象的关系持久化(persistence)。另一方面,D2R服务器能够直接发布关系数据库中的内容到语义Web上,为每个对象赋予URI,并对此URI进行描述,使之成为语义数据;因此,能够对发布的那些对象进行访问,从而实现对于对象的语义网风格访问。
发明内容在实现本发明的一个实施方式中,提供一种系统,使得对于对象同时实现关系持久化和语义网风格访问,该系统包括OR映射生成器,用于从输入的00模型生成OR映射和关系模式;模型转换器,用于从所述输入的00模型生成OWL本体;以及语义映射生成器,用于从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。在实现本发明的另一个实施方式中,提供一种方法,使得对于对象同时实现关系持久化和语义网风格访问,该方法包括OR映射步骤,用于从输入的OO模型生成OR映射和关系模式;模型转换步骤,用于从所述输入的OO模型生成OWL本体;以及语义映射步骤,用于从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。按照本发明的实施方式,通过输入OO模型,不仅接收到用于关系持久化的关系模式,而且接收到用于语义网风格访问的OWL本体。关系模式和本体之间的自动语义映射,使得模型的数据在模型的语义网上可访问。本发明提供一种工具,其对任何给定OO模型极好地生成关系模式、OWL本体以及它们之间的自动映射。因为生成的关系模式用于存储在OO模型中定义的对象,并且生成的OWL本体确保在语义上"接近"输入的OO模型,所以,它们之间生成的自动映射使得对于对象同时实现关系持久化和语义网风才各访问。图1图示了根据本发明的一个实施方式的系统架构。图2说明图1中的OR映射生成器、模型转换器和语义映射生成器中使用的方法的内在联系。图3图示了图1中的OR映射生成器组件的工作流程。图4图示了图1中的模型转换器组件的工作流程图5图示了图1中的语义映射生成器组件的工作流程。图6示出#4居本发明的一个实施方式的方法的流程图。图7图示了Person和Paper两个对象之间的双向关联。图8表示Person和Paper的类定义的代码比较。图9是由OR映射生成器组件生成的关系模式的一个例子,其中图示了3个RDB表及其间关系。具体实施例方式以下参照附图对本发明的实施方式进行详细的i^L明。图1图示了根据本发明的一个实施方式的系统架构,其中也图示了本发明的一个实施方式的实现环境。该实施方式的系统中包括三个组件,即OR映射生成器2、模型转换器3以及语义映射生成器2。以00模型1的输入开始,OR映射生成器2生成OR映射文件5和关系模式文件6,而模型转换器3产生相应的OWL本体文件7。最后,OR映射、关系模式和OWL本体被馈入语义映射生成器12,输出语义映射文件8。通过D2R引擎13,语义映射文件8对语义网风格访问可用;而使用OO编程的开发者,可通过OR映射引擎10使用OR映射文件5,对关系数据库11中所存储的对象进行操作。图2说明图1中的OR映射生成器、模型转换器和语义映射生成器中使用的方法的内在联系。如图2中的左侧所示,OR映射生成器2中使用的方法将00类映射到RDB表,并且将00属性映射到与相应的表相关联的RDB列。同时,图2的右侧示出在模型转换器3中使用的方法,将OO类转换为OWL类,并且相应地将OO属性转换为OWL属性。最后,语义映射生成器12中使用的方法,除了在RDB列和OWL属性之间自动映射外,还在RDB表和OWL类之间自动映射。参照图1,假设用于应用的OO模型1已经很好地设计,OO编程的开发者将利用OR映射工具(如OR映射生成器2)来生成那些OO模型的关系模式6,并将生成的关系模式部署到关系数据库(RDB)1]中。随后,00编程的开发者利用OR映射文件5将相关对象存储到数据库中。图6示出根据本发明的一个实施方式的方法的流程图。如图6所示,在步骤S61,输入OO模型。在步骤S62,进行OR映射,从输入的OO模型生成OR映射和关系模式;而在步骤S63,进行模型转换,从输入的OO模型生200810108780.6说明书第5/12页成OWL本体。在步骤S65,进行语义映射,从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。按照本发明的一个实施方式,可采用OR映射生成器生成OR映射和关系^^式的文件,采用^^莫型转换器生成OWL本体的文件,采用语义映射生成器生成语义映射的文件。下面将结合图3-5描述根据本发明的一个实施方式的系统中的OR映射生成器、模型转换器和语义映射生成器这三个组件的一种可能的实现方式。图3图示了OR映射生成器组件的工作流程。简单来说,OR映射生成器将OO类映射到RDB表,所述RDB表配置有从所述OO类中的相关00属性映射的列。如图3所示,在步骤S32,OO模型输入OR映射生成器。在步骤S34,对于输入00模型中的每个OO类,将OR映射从该给定00类指定给RDB表T。在步骤S35,对于该给定OO类的每个OO属性,判断该给定OO属性是否多值。如果否,那么在步骤S36,将该OO属性映射到指定的RDB表T的列;如果是,那么在步骤S37,找到一中间RDB表,该中间RDB表具有列C和C,,其中列C是外键,指向表T的主键,列C,也是外键,指向另一表T,的主键,从该OO属性的值域类映射到该表T'。结果,该OO属性被映射到该中间RDB表的列C,。在步骤S38,通过整合来自步骤S34、S36和S37的所有类和属性映射的输出,产生关系模式。结果,通过图3所示的工作流程,OR映射生成器产生了OR映射和关系模式。也就是说,OR映射生成器将给定00类映射到RDB表(T),将给定OO类的OO属性映射到RDB表(T)的对应列(该OO属性非多值),或者映射到中间RDB表的对应列(C')(该00属性多值),该对应列(C')是外键,指向表(T,)的主键,其中从该OO属性的值域类映射到表(T,);而且,OR映射生成器整合所有类和属性映射的输出,产生关系模式。图4图示了模型转换器组件的工作流程。同样,实现模型转换器的一种明显的方式是将00类转换到OWL类,并且相应地将00属性转换到OWL对象属性或转换到OWL数据类型属性。如图4所示,在步骤S42,OO模型输入模型转换器。在步骤S44,对于输入00模型中的每个00类,将该给定的00类转换为OWL类。在步骤S45,对于给定OO类中的每个OO属性,判断该给定的OO属性是否多值。9如果是,那么在步骤S47,将该OO属性转换为OWL对象属性,其具有该给定的00类的定义域(domain)和为该OO属性声明的返回类型的值域;如果否,那么在步骤S46,将该OO属性转换为OWL数据类型属性,其具有该给定的00类的定义域和rdfs丄iteral(RDF数据库模式的字符类型)的值域。因此,通过图4所示的工作流程,.模型转换器产生OWL本体。也就是说,模型转换器将00类转换为OWL类,将该00类的属性转换为OWL数据类型属性(该OO属性非多值),或者转换为OWL对象属性(该OO属性多值)。图5图示了语义映射生成器组件的工作流程。在上述两组件的基础上,语义映射生成器将以原生(naWe)方式实现。存在两种映射一种是从RDB表映射到OWL类的类映射(ClassMap),而另一种是从RDB列映射到OWL属性的属性映射(PropertyMap)。特别地,结合(Join)RDB表用于将关联的列导向OWL对象属性。如图5所示,在步骤S52,OR映射、关系模式和OWL本体输入语义映射生成器。在步骤S54,对于输入本体中的每个OWL类,找到输入的关系模式中对应于该给定OWL类的RDB表T,并且在其间建立类映射。在步骤S55,对于具有该给定OWL类的定义域的每个OWL属性,判断其是否OWL对象属性。如果是,那么在步骤S57,将找到的表T与一中间RDB表结合,该中间表具有列C和C,,其中列C是外键,指向找到的RDB表T的主键,而列C,也是外键,指向另一RDB表T,的外键,其中从该OWL对象属性的值域类映射到表T,。结果,在该OWL属性和该中间表的列C,之间建立属性映射。如果否(即该OWL属性是OWL数据类型属性),那么在步骤S56,找到发现的RDB表T中对应于该OWL属性的RDB列,并且在其间建立属性映射。因此,通过图5所示的工作流程,由于在该系统框架内OR映射和模型转换器的对应性,语义映射生成器自动生成语义映射。也就是说,语义映射生成器从RDB表(T)到OWL类自动建立类映射,并且在所述OWL类的OWL数据类型属性和所述RDB表(T)中对应于该OWL属性的列之间自动建立属性映射,或者在所述OWL类的OWL对象属性和一中间RDB表的对应列(C,)之间自动建立属性映射,该对应列(C')是外键,指向另一RDB表(T,)的主键,其中从该OWL对象属性的值域类映射到另一RDB表(T')。下面通过一个例子,说明本发明的一个实施方式,作为应用本发明的方法或系统等的一种示例实现。作为示例,Person(人)和Paper(论文)是其间保持双向关联的两个对象。如图7所示,其图示了Person和Paper两个对象之间的双向关联。其中,Person具有两个属性标识符(id),Long(长整数)类型;name(姓名),String(字符串)类型;两者均是单值的。Paper也具有两个属性标识符(id),Long(长整数)类型;title(标题),String(字符串)类型;两者均是单值的。Person和Paper两者之间的关!关是Person是Paper的4乍者(authors),而Paper是Person的论文(papers),作者和-论文均是多值的。在OO编程(例如Java)中,对应的代码如图8所示,其表示Person和Paper的类定义的代码比较。下面所示的OR映射生成器组件的实现代码的示例,可生成OR映射文件,其中将Person类和Paper类分别映射为PERSON表和PAPER表。<ORmapping>〃OR映射的实例<classname=''Person"table="PERSON">〃将Person类映射到PERSON表<idname-"id"column="PERSON—ID"/>〃将Person类id(单值)属性映lf到PERSON表中的PERSONJD列〃其中PERSON—ID列是PERSON表的主键—<propertyname="name"type="String"column="PERSON—NAME7>〃将Perscm类name(单值)屈性映射到PERSON表中的PERSON—NAME列<setname="pape'-s"table="PERSON_I)APER">〃将Person类papers(多值)属性映射到PERSON—PAPER表中的PAPER—ID列<keycolunm="PERSON—ID'V>〃i中PERSON—ID列是PERSON—PAPER表的外键〃并且该列指向PERSON表中PERSON—ID列<many-to-manycolumn="PAPER—ID"class="Paper'V>〃另外PAPER—ID列也是PERSON:PAPER表的外键,参考如下Paper类映射</set></class></ORmapping><ORmapping>〃另一个关联的OR映射的实例〈classname=''Paper"table="PAPER"><idname="id"column="PAPER—ID7>〃将Paper类id(单值)属性映^f到PAPER表中的PAPER—ID列〃其中PAPER一ID列是PAPER表的主键<propertyname="title"type="String"coluiTm="PAPER_TITILE7>〃将Paper类title(单值)属性映射到PAPER表中的PAPERJHTLE列<setname=''authors"table="PERSONPAPER"inverse="ti-ue">〃将Paper类authors(多值)属性映射到PERSON—PAPER表中的PERSON—ID列<keycolumn="PAPER—ID'7>〃其中PAPERjD列是PERSON—PAPER表的外键〃并且该列指^]PAPER表中的PAPER—ID列<many-to-manycolumn="PERSON—ID"class="Person"/>〃另夕卜PERSON—ID列也是PERS0f—PAPER表的外键,参考如上Person类映射</set></class></ORmapping>假设"Person"是具有属性"id"、"name"和"papers"的OO类。首先,将OO类"Person"映射到RDB表"PERSON,,;之后,将OO属性"id,,和"name"分别映射到表"PERSON"中的RDB列"PERSONJD"和"PERSON—NAME",其中"PERSONJD"是表"PERSON"的主键。但是,OO属性"papers"有些不同(它是多值的),从另一个OO类"Paper"得到值。因此,需要结合表"PERSON"和中间表"PERSON_PAPER",该中间表"PERSON—PAPER"具有列"PERSON—ID"和"PAPER—ID",这两列都是该中间表的外键,其中列"PERSONJD"指向表"PERSON,,的主键,而列"PAPER—ID"指向表"PAPER"的主键。结果,OO属性"papers"被映射到中间表"PERSON—PAPER"中的RDB列"PAPER—ID"。类似地,"Paper"是具有属性"id"、"title"和"authors,'的OO类。首先,将OO类"Paper,,映射到RDB表"PAPER";之后,将OO属性"id"和"title"分别映射到表"PAPER"中的RDB歹'J"PAPER—ID"和"PAPER—TITLE",其中"PAPER—ID"是表"PAPER"的主键。但是,OO属性"authors"有些不同(它是多值的),从另一个OO类"Person,,得到值。因此,需要结合表"PAPER"和中间表"PERSON—PAPER",如上所述引入的,该中间表"PERSON—PAPER"具有列"PERSON—ID"和"PAPER—ID",这两列都是该中间表的外键,其中列"PERSON—ID,,指向表"PERSON,,的主键,而列"PAPER—ID"指向表"PAPER,'的主键。结果,OO属性"authors"被映射到中间表"PERSON—PAPER"中的RDB列"PERSON—ID"。对于上述OR映射文件,由OR映射生成器组件生成的关系模式如图9所示。其中有3个RDB表"PERSON"、"PAPER"和"PERSON—PAPER"。如上所述,表"PERSON"从OO类"Person"映射,具有列"PERSON—ID"和"PERSON_NAME";而表"PAPER"从OO类"Paper"映射,具有列"PAPER—ID"和"PAPER—TITLE"。特别地,"PERSON—PAPER"是用于映射OO属性"papers"和"authors"的中间表,使得"PERSON—PAPER"具有列"PERSON—ID"和"PAPER_ID",它们是外键,分别指向表"PERSON"和"PAPER"的主键。同时,对于该示例,模型转换器组件将产生OWL本体,其具有Person和Paper的OWL类、以及用于Personld、PersonName、Paperld、Papei.Title等的OWL数据类型属性。具体地,为上述的双向关联指定用于PersonPapers和PaperPersons的OWL对象属性。下面是对于该示例的模型转换器的实现代码。<owl:Classrdf:ID="Person7〉〃这是一个OWL类Person<owl:DatatypePropertyrdf:ID="PersonId">〃这是--个OWL数据类型属性Personld<rdfs:domainrdf:about^"#Person7〉〃该属性PersonId定义域是类Person<rdfs:ningerdf:resoui-ce="&rdfs;#Literar'/>〃该属性Personld值域是i'dft丄itei'al(RDF数据库模式的字符类型)<rdf:typerdf:resouixe="&owI;#FunctionalPropei-ty"/>〃该属性Pers加Id是单值属性</owl:DatatypeProperty><owl:DatatypePi-opertyrdf:D="PersonName"><rdfs:domainrdf:about="#Pei-son7〉<rdfs:rangerdf:i*esouixe="&rdfs;#Literal'7></o、vl:DatatypeProperty><Gnvl:〇bjectPrapertyrdf:ID=MPei-sonPapers''><rdfs:domainrdf:about="#Person'V><rdfs:rangerdf:about="#Paper'7></o、v1:〇bjectProperty)<owl:Classrdf:ID」'Paper7〉〃这是另一个OWL类Paper<owl:DatatypePropertyrdf:ID="Papei'Id">〃这是一个OWL数据类型属性Papei-Id<rdfs:domainrdf:about="#Paper'7>〃该属性PaperId定义域是类P叩er〈rdfs:rangerdf:resource="&rdfs;#Literal'V>〃该属性Paperld值域是rdft丄iteral(RDF数据库模式的字符类型)<rdf*:typercH':i'esource=M&owl;#FunctionalPrapertyM/〉//该属性PaperId足单值属性</o\vl:DatatypeProperty〉<o、vl:DatatypePropertyrdf:ID="PapeiTitle"><rdfs:domainrdf:about="#Paper7><rdfs:rangerdfTesoui-ce="&rdfs;#Literal7></owl:DatatypeProperty〉<owl:〇bjectPropertyi'df:ID-"PaperAuthors1,〉<rdfs:domainrdf:about="#Papei*7>々clfs:rangerdf:abcuit="#Person''/></o、vl:ObjectProperty>首先,将OO类"Person,,映射到OWL类。因为其00属性"id"和"name"不是多值的,所以将其映射到OWL数据类型属性"Personld"和"PersonName",其具有"Person"的定义域和"rdfs:Literal"的值域;而其00属性"papers"是多值的,所以将其映射到OWL对象属性"PersonPapers,,,其具有"Person,,的定义域和"Papei',,的值域。类似的,将00类"Paper"映射到OWL类。因为其00属性"id"和"title"不是多值的,所以将其映射到OWL数据类型属性"Paperld"和"PaperTitle",其具有"Paper"的定义域和"rdfs:Literal"的值域;而其00属性"authors"是多值的,所以将其映射到OWL对象属性"PaperAuthors",其具有"Paper,,的定义域和"Person,,的值域。最后,通过输入OR映射生成器组件和模型转换器组件生成的上述文件,语义映射生成器组件自动输出从关系模式到OWL本体的语义映射的文件。下面是对于该示例的类映射和属性映射的实现代码的实施例。<ClassMa|,>〃这是一个语义映射的实例,将OWL类Person映射到RDB友PERSON<rdbtable="PERS0N7>〃这是被映射的RDB表PERSON<owlclass="Pei-son''/>〃这是将映射的OWL类Person</ClassMap><PropertyMap>〃这是一个语义映射的实例〃将OWL数据类型属性Personld映射到RDB表PERSON中的歹UPERSON—ID<rclbtable="PERSON"coluirm="PERSON—1D7>〃这是被映射的RDB表PERSON中的列PERSONJD<owlclass="Pei-sorTproperty="PersonId7>//这是将映射的OWL数据类型属性Pasonld</Pi'opertyMap><PropertyMap>〃将OWL数据类型属性PersonName映射到RDB表PERSON中的列PERSON一NAME<rdbtable="PERSON"column="PERSON—NAME7><owlclass=MPerson"property="PersoaName''/〉</PropertyMap><ClassMap〉Z/将OWL类PAPER映射到RDB表Paper<rclbtaPER'V><owlclass=''PapeiJ7></ClassK4ap><PropertyMap>〃将OWL数据类型属性Paperld映射到RDB表PAPER中的列PAPER—ID<i-dbtable="PAPER"colurnn="PAPER_ID'7><owlclass="Papei'"property="PaperId"/〉</Pi.opertyMap><Pi'ope-tyMap>14〃将OWL数据类型厲性P叩ei'Title映射到RDB表PAPER中的列PAPER—TITLE<rdbtable="PAPER"column="PAPER—TTLE7>〃这是被映射白勺RDB表PAPER中白勺歹『PAPER—TITLE<owlclass="Papei'"property="PaperTitle'V></PropertyMap><PropertyMap>〃将OWL对象属性Pei-sonPapers映射到RDB表PERSON—PAPER中的歹iJPAPER—ID<rdbtable="PERSON"><jointable="PERSON—PAPER"key='TERSON—ID"column="PAPER—ID7>〃这是被映射的RDB泰PERSON—PAPER中的列PAPERJD〃其中列PERSON—ID是表PERSON—PAPER的外键,指向表PERSON的主键</i.cib><owlclass=''Person"property="Pei-soi,Papers''/></PropertyMap><PropertyMap>〃将OWL对象属性Papei-Authoi-s映射到RDB表PERSON—PAPER中的歹ijPERSON—ID<rdbtable="PAPER"><jointable="PERSON—PAPER"key="PAPER—ID"col,="PERSON」D"/>〃列PAPER—ID是表PERSON—PAPER的外键,指向表PAPER的主键</rdb><owlclass="Papei-"property="PaperAuthors7></PropertyMap>首先,对于OWL类"Person",将其映射到RDB表"PERSON",因为OO类被同时映射到OWL类"Person"和RDB表"PERSON"。对于OWL数据类型属性"PersonId",将其映射到RDB表"PERSON"中的RDB列"PERSON—ID",因为该OO属性被同时映射到OWL属性"PersonId"和RDB表"PERSON"中的RDB列"PERSON—ID";对于OWL数据类型属性"PersonName",将其映射到RDB表"PERSON"中的RDB列"PERSON—NAME",因为该OO属性被同时映射到OWL属性"Pei-sonName"和RDB表"PERSON"中的RDB列"PERSON—NAME"。对于OWL对象属性"PersonPapers",需要结合RDB表"PERSON"和中间表"PERSON—PAPER",如上所述。结果,OWL对象属性"PersonPapers"会被映射到中间表"PERSON—PAPER"中的RDB列"PAPER—ID"。类似的,对于OWL类"Paper",将其映射到RDB表"PAPER",因为OO类被同时映射到OWL类"Paper"和RDB表"PAPER"。对于OWL数据类型属性"Paperld",将其映射到RDB歹')"PAPERJD",因为OO属性被同时映射到OWL属性"Papei'd"和RDB列"PAPER—ID";对于OWL数据类型属性"PapeiTitle",将其映射到RDB歹'j"PAPER—TITLE",因为OO属性被同时映射到OWL属性"Papei'Title"和RDB列"PAPERJTITLE"。对于OWL对象属性"PaperAuthors,,,需要结合RDB表"PAPER,,和中间表"PERSON—PAPER",如上所述。结果,OWL对象属性"PaperAuthors"会被映射到中间表"PERSON—PAPER,,中的RDB列"PERSON—ID"。利用该示例所示的方法和系统,可使得对于各对象同时实现关系持久化和语义网风格访问。上述实例仅仅说明了基本的情形,即通过RDB(非中间)表,在一个00类与一个OWL类之间建立语义映射;同时,通过RDB(非中间表的)列,在一个OO属性与一个OWL数据类型属性之间建立语义映射。此外,上述实例也展示了一个较为复杂但常见的情形,即通过RDB中间表的外键,在一个00属性与一个OWL对象属性之间建立语义映射。尽管上述实例中的中间RDB表仅有两个外键,分别对应两个OWL对象属性;但对于中间RDB表有三个或三个以上的外键,根据本发明的方法也适用。简而言之,根据中间RDB表的外键指向的其它RDB(非中间)表的主键,能得到该外键与相应的OWL对象属性之间的映射关系,其细节参照上述说明,不再赘述。因此,这里仅仅描述了本发明的特定的实施方式和实现。根据本申请描述的内容,可以做出各种改进、变形和其它实施方式和实现。权利要求1.一种系统,使得对于对象同时实现关系持久化和语义网风格访问,该系统包括对象-关系OR映射生成器,用于从输入的面向对象OO模型生成OR映射和关系模式;模型转换器,用于从所述输入的OO模型生成本体网语言OWL本体;以及语义映射生成器,用于从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。2.根据权利要求1所述的系统,其中所述OR映射生成器将所述OO模型中的00类映射到关系数据库RDB表,所述RDB表配置有从所述OO类中的OO属性映射的列。3.根据权利要求2所述的系统,其中如果所述OO类的OO属性不是多值的,那么所述OR映射生成器将所述00属性映射到所述RDB表中的对应列。4.根据权利要求2所述的系统,其中如果所述OO类的OO属性是多值的,那么所述OR映射生成器将所述00属性映射到一中间RDB表的对应列,该对应列是该中间RDB表的外键,并指向另一RDB表的主键,其中从该OO属性的值域类映射到该另一RDB表,而该中间RDB表还有一外键,指向从所述00类映射的所述RDB表的主键。5.根据权利要求2所述的系统,其中所述OR映射生成器整合所有00类和OO属性映射的输出,产生关系模式。6.根据权利要求1所述的系统,其中所述模型转换器将所述OO模型中的OO类转换到所述OWL本体中的OWL类,并且将所述OO类中的OO属性转换到OWL对象属性或OWL数据类型属性。7.根据权利要求6所述的系统,其中如果所述OO类的OO属性不是多值的,那么所述才莫型转换器将该00属性转换为OWL数据类型属性,其具有所述00类的定义域和资源描述框架数据库模式的字符类型的值域。8.根据权利要求6所述的系统,其中如果所述OO类的OO属性是多值的,那么所述模型转换器将该00属性转换为OWL对象属性,其具有所述00类的定义域和为该oo属性声明的返回类型的值域。9.根据权利要求2所述的系统,其中所述模型转换器将所述OO模型中的00类转换到所述OWL本体中的OWL类,并且将所述00类中的00属性转换到OWL对象属性或OWL数据类型属性,并且其中所述语义映射生成器,从所述RDB表到OWL类建立类映射,并且从所述列到OWL属性建立属性映射。10.根据权利要求9所述的系统,其中如果所述00属性转换到OWL数据类型属性,那么所述语义映射生成器在所述OWL数据类型属性和所述RDB表中对应于该OWL属性的列之间建立属性映射。11.根据权利要求9所述的系统,其中如果所述00属性转换到OWL对象属性,那么所述语义映射生成器在所述OWL对象属性和一中间RDB表的对应列之间建立属性映射,该对应列是该中间RDB表的外键,并指向另一RDB表的主^,其中从该OWL对象属性的值域类映射到该另一RDB表,而该中间RDB表还有一外键,指向从所述00类映射的所述RDB表的主键。12.—种方法,使得对于对象同时实现关系持久化和语义网风格访问,该方法包4舌对象-关系OR映射步骤,用于从输入的面向对象OO模型生成OR映射和关系模式;模型转换步骤,用于从所述输入的00模型生成本体网语言OWL本体;以及语义映射步骤,用于从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。13.根据权利要求12所述的方法,其中所述OR映射步骤包括将所述OO模型中的OO类映射到关系数据库RDB表,所述RDB表配置有从所述OO类中的OO属性映射的列。14.根据权利要求13所述的方法,其中如果所述OO类的OO属性不是多值的,那么将所述00属性映射到所述RDB表中的对应列。15.根据权利要求13所述的方法,其中如果所述OO类的OO属性是多值的,那么将所述OO属性映射到一中间RDB表的对应列,该对应列是该中间RDB表的外4建,并指向另一RDB表的主键,其中从该00属性的值域类映射到该另一RDB表,而该中间RDB表还有一外键,指向从所述00类映射的所述RDB表的主键。16.根据权利要求13所述的方法,其中所述OR映射步骤整合所有00类和OO属性映射的输出,产生关系模式。17.根据权利要求12所述的方法,其中所述模型转换步骤包括将所述00模型中的00类转换到所述OWL本体中的OWL类,并且将所述OO类中的OO属性转换到OWL对象属性或OW.L数据类型属性。18.根据权利要求17所述的方法,其中如果所述OO类的OO属性不是多值的,那么将该OO属性转换为OWL数据类型属性,其具有所述OO类的定义域和资源描述框架数据库模式的字符类型的值域。19.根据权利要求17所述的方法,其中如果所述OO类的OO属性是多值的,那么将该OO属性转换为OWL对象属性,其具有所述OO类的定义域和为该OO属性声明的返回类型的值域。20.根据权利要求13所述的方法,其中所述模型转换步骤包括将所述00模型中的00类转换到所述OWL本体中的OWL类,并且将所述OO类中的OO属性转换到OWL对象属性或OWL数据类型属性,并且其中所述语义映射步骤包括从所述RDB表到OWL类建立类映射,并且从所述列到OWL属性建立属性映射。21.根据权利要求20所述的方法,其中如果所述OO属性转换到OWL数据类型属性,那么在所述OWL数据类型属性和所述RDB表中对应于该OWL属性的列之间建立属性映射。22.根据权利要求20所述的方法,其中如果所述OO属性转换到OWL对象属性,那么在所述OWL对象属性和一中间RDB表的对应列之间建立属性映射,该对应列是该中间RDB表的外键,并指向另一RDB表的主键,其中从该OWL对象属性的值域类映射到该另一RDB表,而该中间RDB表还有一外键,指向从所述00类映射的所述RDB表的主键。全文摘要本申请提出一种系统和方法,使得对于对象同时实现关系持久化和语义网风格访问,该系统包括对象-关系(OR)映射生成器,用于从输入的面向对象(OO)模型生成OR映射和关系模式;模型转换器,用于从所述输入的OO模型生成本体网语言(OWL)本体;以及语义映射生成器,用于从OR映射、关系模式和OWL本体生成语义映射,以便用于语义网风格访问。本发明提供了一种工具,通过输入OO模型,不仅接收到用于关系持久化的关系模式,而且接收到用于语义网风格访问的OWL本体。文档编号G06F9/44GK101593103SQ200810108780公开日2009年12月2日申请日期2008年5月29日优先权日2008年5月29日发明者刘升平,雷张,婧梅,越潘,裘照明,谢国彤申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1