以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  如何将XML文档转换成RDF文档?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=41943)


--  作者:瑞星小子
--  发布时间:1/4/2007 9:00:00 PM

--  如何将XML文档转换成RDF文档?
如何将XML元素树转换成RDF三元组?
在我们将XML文档中有用的元素读出并生成了一棵XML元素树之后,参照ontology中对各元素的描述,我们可以通过以下算法将这棵XML文档树转换成RDF三元组的形式。
其具体过程如下,为了弄清楚哪些类或者是属性在描述这个文档的本体中被定义,我们在类的前面加上onto:,在性质的前面加上rdfx。算法描述如下:
将XML文档本身作为“active_resource”,也就是说,将这篇文档的URI作为转换后文档的第一个语句的主语;
以先深的顺序遍历整棵元素树,从根元素开始;
对于每个我们遍历到的元素,我们在本体中查找它辨明他在语法上是定义为类元素还是作为属性。
当我们遍历到的元素是作为属性元素时,我们作如下处理:
(a)、当语句中没有“未完成语句”时,我们构造如下的“未完成语句”(“未完成语句”是指一个三元组中只填了两个元素)
subject             predicate          object
“   active_resource     onto:Prop          ...
(b)、此外,如果碰到“未完成语句”,完成该未完成语句,并且创造一新的“未完成语句”,如下:
subject             predicate          object
...                  ...                anon resource 1
anon resource 1     onto:Prop ...
当遍历到的元素是作为类元素cls时,作出如下处理:
(a)、当文档本身作为active_resource,我们创建如下的三元组:
subject               predicate          object
URI of document      rdfx:describes      anon resource 1
anon resource 1       rdf:type           onto:Cls
 之后,我们将anon resource 1作为新的active_resource
 
(b)、如果存在未完成语句,填补完语句并创造如下新的三元组:
subject             predicate          object
...                  ...                anon resource 1
anon resource 1     rdf:type           onto:Cls
之后将anon resource 1作为新的active_resource

(c)、之外,如果没有为完成语句,我们定义一个谓词hasCls(这个Cls依赖于我们所碰到的类),并创建如下的新的三元组:
subject             predicate           object
active resource      onto:hasCls         anon resource 1
anon resource 1     rdf:type             onto:Cls
之后将anon resource 1作为新的 active_resource
如果遍历到的元素标记为内容,我们作出如下处理:
(a)、如果存在未完成语句,将其作为值填补上,如下:
subject             predicate           object
…                 …                 “textual content”
(b)、如果不存在未完成语句,添加如下的三元组:
subject               predicate                 object
active resource        rdfx:value                 “textual content”
(7) 继续遍历这棵XML元素树,当回溯时发现一个类已经匹配完毕,让之前的active resource作为新的active resource。
 至此,该算法过程描述完毕,如下是一个简单的XML文档,我们以此为例来描述该算法的实现过程:
< http://mybus.com/order#1233 >
<IndexItem>
<ItemDetail>
<UnitPrice>
    <Money currency="USD">1000</Money>
</UnitPrice>
<Description xml:lang="en">
Armada M700 PIII 500 12GB </Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="SPSC">
C43171801</Classification>
<ManufacturerPartID>
140141-002</ManufacturerPartID>
<ManufacturerName>Florsheim</ManufacturerName>
<URL>http://www.compaq.com</URL>
</ItemDetail>
<IndexItemDetail>
<LeadTime>10</LeadTime>
<ExpirationDate>2000-06-01</ExpirationDate>
<EffectiveDate>2000-01-01</EffectiveDate>
<SearchGroupData>
<Name xml:lang="en">Notebook</Name>
<SearchDataElement name="Processor Speed"
value="500MHZ"/>
</SearchGroupData>
<TerritoryAvailable>USA</TerritoryAvailable>
</IndexItemDetail>
</IndexItem>
< /http://mybus.com/order#1233  >

首先是利用本体从该文档中提取出有用的元素或者属性,有些不必要的在本体中没有描述的元素或者属性就不需要了,列出如下:
Class ItemDetail
Class Money
Class Classification
Property unitPrice
Property currency
- rdfs:domain Money
Property description
Property domain
- rdfs:domain Classification
……..
…….
进行转换时,首先遇到的是文档的UML,依照算法,我们首先选择步骤(5)中的a选项,输出如下三元组:
http://mybus.com/order#1233     rdfx:describes      anon resource 1
anon resource 1                  rdf:type            onto: ItemDetail
并将anon resource 1作为新的active resource
之后遍历到的节点是  unitPrice,我们参照步骤(4)的a选项执行,输出:
anon resource 1                onto: unitPrice         ...
 遇到 money 节点,因为是类名,而且有未完成语句,参照步骤(5)b执行,填补上一个三元组并生成新的三元组,如下:
anon resource 1                onto: unitPrice         anon resource 2
anon resource 2                rdf:type                   onto:money
以此类推,最后我们能够得到以下全部由三元组组成的文档:
subject                 predicate                   object
           rdfx:describes               anon 1
anon 1                 rdf:type                     onto:ItemDetail
anon 1                 onto:unitPrice               anon 2
anon 2                 rdf:type                     onto:Money
anon 2                 onto:currency                “USD”
anon 2                 rdfx:value                   “1000”
anon 1                 onto:description              “Armada M700 PIII 500 12GB”
anon 1                 onto:hasClasssification       anon 3
anon 3                 rdf:type                     onto:Classsification
anon 3                 onto:domain                 “SPSC”
anon 3                 rdfx:value                   “C43171801”
……
……


至此,关于三元组的转换过程已经结束了


--  作者:xiaoweixiong
--  发布时间:3/16/2007 1:43:00 PM

--  
楼主请你加我QQ253681872,我有事请教
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms