XML向OWL本体的映射摘要:目前,XML在电子商务领域已经作为一种交换数据标准被广泛接受。但只有在商业伙伴对于其领域的基本概念形成一个共同理解并使用相同的语法时,他们之间的协作才能成为可能。XML能够包括语法层,但缺少对于有效概念分享的支持。Web本体语言(OWL)使用类、属性和实例在分布式环境例如互联网中支持领域知识的表达。本体提供了一种XML中数据模型元素与OWL之间映射的方法,并对其在即将使用的XLST框架中的实现和通用应用评估进行阐述。1导言目前,XML在电子商务领域已经作为一种交换数据标准被广泛接受。但只有在商业伙伴对于其领域的基本概念形成一个共同理解并使用相同的语法时,他们之间的协作才能成为可能。XML能够包括语法层,但缺少对于有效概念分享的支持。Web本体语言(OWL)使用类、属性和实例在分布式环境例如互联网中支持领域知识的表达。本文的目的是解决XML和OWL之间的差异,我们提出了一种从现有XML数据中自动生成OWL本体的策略,该方法通过在XML不同数据模型和OWL本体之间建立适当映射来完成。研究者提出了很多XML与OWL映射的方法,部分方法解决XML与RDF之间的通用映射问题,而另外一些方法则解决不考虑XML实例数据时XMLSchema与OWL的映射问题。但仍然没有完整的方案来解决从一个“合法”的XML实例文档行到OWL本体之间的转换问题。StefanDecker甚至断言,XML与RDF之间的自动映射方法是不可能的,因为XML并没有包含任何语义约束,XML表达的是文档的结构,但是并没有包含任何内容含义的信息。然而另一方面,其他的一些方法则认为XML文档中存在语义,这些语义可以通过文档结构发掘出来。例如,Melnik尝试通过一个简单的语法来检测XML实例文档中的语义并将其映射到RDF文档中,Melnik认为每一个XML文档都包含一个RDF模型。在[Vie]中,作者提出了一种自动从XML内容映射到RDF元数据的方法(WEESA),该方法通过使用一个从相应XMLSchema中创建的本体来完成,其本体只包含模型,并不包含实例。XML数据不会被映射到它的OWL对应项上。目前从XMLSchema到OWL本体的映射是通过手动完成的,我们的目标是自动创建该映射。通过结合本体结构定义的RDF标注,WEESA系统能够被进一步用来生成(X)HTML网页。SteveBattle[Bat04]的目的是描述一个XML和RDF模型之间的直接映射,而不用通过一个特定的序列化对象,例如RDF/XML。此外SteveBattle还认为,相比于Melnik试图建立通用映射的方法,XMLSchema对于指导映射过程是有帮助的。要补充的是,我们试图发现一个中间阶段,如果我们已有了一份XMLSchema,我们能够使用它创建相应的OWL模型,但是如果我们没有合适的XMLSchema,我们通过XML实例文档来产生一个,因此,我们想在缺少XMLSchema时也能抽取出概念关系。[FZT04]作者描述了XML到RDF和XMLSchema到OWL的映射,这两个映射相互独立,这也就意味着OWL实例不一定要适用于OWL模型,因为XML文档中的元素可能会被映射到不同的OWL元素中。然而,该方法并没有继续讨论在缺少XMLSchema时如果生成OWL模型。另一个比较有意思的系统是Piazza系统[HSM+03],Piazza并不将现有的XML数据转换为OWL本体相应的RDF文档,而是通过一个中间Schema来在XML数据源对之间调整。Pizza能够帮助创建巨大的语义内部链接数据库,但是不能构建集成本体。本文提出的方法与Pizza系统的更大的一个区别是,后者源与目标必须已知才能创建映射,而本文的工作只需要源文档已知,目标本体会被假设,然后产生合理的映射。本文提出了一个框架来执行的转换过程,从一个简单的XML实例文档,到(可能)产生XMLSchema,最后生成带有实例的OWL模型。本文认为XML数据包含关系数据,因此我们也试图从XML文档中检测关系结构,并将其存储到数据库中。本文提出的方法首要关注面向数据的XML,即将使用的框架实现了标准XML技术XLST中的映射。2、映射本节中我们将会提供一种从XML/XMLSchema映射到OWL的方法,将XML源文档提高到OWL本体的层面上来。我们假设XML文档包含关系结构(见图1),试图检测出它们并用OWL类、属性和实例来表达出来。图1数据流图XML数据模型[Bos97]描述了一个带标注的节点树,而OWL的数据模型基于RDF中主语-谓语-宾语(subject-predicate-object)的三元组。RDF-Schema[BG02]定义了创建类结构、增加类属性和类实例数据的词汇表。因此我们试图挖掘出XML的树结构来创建相应的类层次。通过使用RDF和RDFS基础之上OWL,可以表达一些例如属性的基数约束的限制。这就确保了关系数据在OWL中的直接(straightforward)表达:关系/表相对于类,列相对于属性,行相对于实例。但是XML中关系结构的检测十分困难。例如,有一个更普遍的问题,如果处理嵌套(nested)标签。一方面,它们可以被认为表达“part-of”关系,另一方面,它们可以表达“subtype-of”关系。由于关注面向数据的XML,我们可以假设关系结构并使用源文档中设计的隐形知识来提高优化转换过程。对于嵌套元素,我们选择一个中间方法:例如,当一个元素包含另一个元素,而子元素不只一个文本(literal?)时,我们假设为“part-of”关系,即认为是1:N的关系,这种关系映射到owl:ObjectProperty中,它建立了两类之间的关系。我们也可以创建“subtype-of”关系,例如我们将“xsd:complexTypes”元素链接到一起,然后形成一个继承元素(WTF?)。因此多重继承也有可能(大于一个域)。根据以下规则,类(owl:Class)也从xsd:complexTypes和xsd:elements融合得到:如果源XML树中的元素总是为叶节点,只包含文本而没有属性,当该类表达周围元素时,该元素被映射到owl:DatatypeProperty对象中,XML属性也同样处理,即映射到owl:DatatypeProperty对象中。虽然XML属性没有真实的数据库对应对象,属性大部分都是在面向文档的XML中使用,这就是使得它们可以用来表达数据库列。XMLSchema也可以包括数量限制例如xsd:minOccurs或xsd:maxOccurs,我们可以将其映射到OWL中相应的基数限制owl:minCardinality和owl:maxCardinality中,表1总结了具体的映射。3、例子本节我们展示一个从Citeseer元数据集的示例数据的映射。XML文档类似于下面科技出版物的摘要(excerpt)描述。!--...--recordheaderidentifieroai:CiteSeerPSU:1/identifier/headermetadataoai_citeseer:oai_citeseerdc:titleAtitle/dc:title/oai_citeseer:oai_citeseer/metadata/record!--...--从一个XML文件示例的抽象开始,我们生成XMLSchema。该XML实例自动抽取的XMLSchema的片段如下所示:schemaxmlns=:dc=:oai=!--...--elementname=metadatacomplexTypesequenceelementref=oai:oai_citeseermaxOccurs=1minOccurs=1//sequence/complexType/elementelementref=oai:oai_citeseercomplexTypesequenceelementref=dc:titlemaxOccurs=1minOccurs=1type=xsd:string//xsd:sequence/complexType/element!--...--/schema在执行完转换之后,OWL模型会包含表2中显示的类和属性。为了简化问题,我们并没有显示OWL语法。命名和命名空间(Namingandnamespaces):从表2中可以看出,有一些属性名称在XML源文档中没有相对应的部分。如果两个元素名称相同,但是位于输入树的不同级别,它们将会映射到同名的类和属性上。这种二义性在OWL中是不被允许的,因为OWL需要每个源都有唯一的标识。因此我们为owl:ObjectProperties的属性has和owl:DatatypeProperties的属性“dtp”引入两个前缀(prefixes)。类的示例会自动为rdf:ID产生值。XML实例中的XML元素会根据产生的OWL模型自动地转换为OWL实例。Recordrdf:ID=id2248394hasHeaderrdf:resource=#id2248377//Record表2Citeseer示例数据产生的OWL模型owl:DatatypeProperties可以用两种方式表达。第一种引用是在内部定义owl:DatatypeProperties。Headerrdf:ID=id2251828dtpIdentifierrdf:datatype=&xsd;stringoai:CiteSeerPSU:1/dtpIdentifier/Header第二种方式描述在外部定义的来自于DublinCoreMetadataInitiative的元素。oai_citeseer:oai_citeseerrdf:ID=id2243767dc:titlerdf:datatype=&xsd;stringAtitle/dc:title/oai_citeseer:oai_citeseer为了更好地支持面向文档的XML,我们也引入一个特殊的数据类型属性。这种属性在xsd:element包含文本内容且不只一个xsd:attribute时被使用。xsd:element被映射到一个OWL类,xsd:attribute映射到一个数据类型属性,文本内容存储为新增OWL数据类型属性。通过owl:DatatypeProperties这个例子我们可以看出,XML中数据类型的信息也能集成到本体中。在owl:DatatypeProperties的值域范围内,我们使用XML内置的数据类型[BM04]。4、实现框架映射过程通过XMLstylesheetlanguagetransformations(XSLT[Cla99])来实现,因此需要在不同编程语言中互操作。对于没有附带XMLSchema的XML数据,生成一个合适的中间XMLSchema,完整的框架架构图如图2所示。图2系统工作流程图转换过程最多需要三个阶段(只有XML实例数据),最少一个阶段(只有XMLSchema)。当只处理XMLSchema时,我们只创建带有类和属性的本体模型。如果只有XML实例数据,我们需要执行中间步骤。首先从XML实例数据中抽取XMLSchema,这样才能创建下一步的模型。为了可维护性,我们决定只通过XMLSchema创建OWL模型,而不直接从XML实例文件来创建。StefanMintert在[Min05]中认为,在每一个XML实例文档都隐式地包含一个XMLSchema,因此我们可以试图提取出来。不幸的是,这样一个自动生成XMLSchema的过程是不完全的,因为XML实例文档