﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-苹果的成长日记-随笔分类-Jena/RDF/OWL/语义网</title><link>http://www.blogjava.net/apple/category/1254.html</link><description>我还是个青苹果呀！</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:34:07 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:34:07 GMT</pubDate><ttl>60</ttl><item><title>【转载】语义万维网服务的自动发现</title><link>http://www.blogjava.net/Apple/archive/2005/06/29/6879.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Wed, 29 Jun 2005 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/29/6879.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6879.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/29/6879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6879.html</trackback:ping><description><![CDATA[<H2 class=diaryTitle>语义万维网服务的自动发现- -</H2>
<P>&nbsp;&nbsp;&nbsp;&nbsp;原文地址：<A href="http://meta.blogchina.com/812188.html">http://meta.blogchina.com/812188.html</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<P>
<P>我感兴趣的问题实际上就是<FONT size=+0>Ontology based metadata services for information retrieval. </FONT>实际上是开发一个或一组智能代理，利用<FONT size=+0>Semantic Web services</FONT>架构解决异构系统的情报检索互操作问题。前提条件是一定的<FONT size=+0>Semantic Web services</FONT>架构。首先必须对这个概念解释清楚。这是个很热门的话题了实际上，一篇经典的文章见（<FONT size=+0>2001</FONT>年的文章，稍早一些，还没有<FONT size=+0>DAML-S</FONT>）：<A href="http://www.daml.org/services/ieee01-KSL.pdf"><FONT size=+0>http://www.daml.org/services/ieee01-KSL.pdf</FONT></A>，一个作者是越南人，第三作者是个中国留学生，都很年轻啊！</P>
<P>以下主要来自（<FONT size=+0>Katia Sycara, Massimo Paolucci</FONT><FONT size=+0>, Anupriya Ankolekar, Naveen Srinivasan, "Automated discovery, interaction and composition of Semantic Web services"</FONT>）</P>
<P><FONT size=+0>Web services </FONT>利用自主的代理在分布的环境中实现自动的"按需"服务，<FONT size=+0>Semantic Web</FONT>提供服务描述和服务接口的语义支持，目前这方面的标准正在逐步建立起来，然而多个<FONT size=+0>Web service</FONT>之间的协调和语义一致性是一个关键问题，目前<FONT size=+0>BPEL4WS </FONT>和<FONT size=+0>WSCI</FONT>在这方面作了一些探索，然而最可能的途径是通过<FONT size=+0>DAML-S</FONT>提供解决框架。</P><BR>
<P>组合多个<FONT size=+0>Web services</FONT>可以分为三方面的问题：</P>
<OL>
<LI>"计划"<FONT size=+0>Web</FONT>服务之间的交互以及其提供的功能如何整合； 
<LI>
<DIV>"发现"<FONT size=+0>Web</FONT>服务实现的的任务；</DIV>
<LI>
<DIV>对<FONT size=+0>Web</FONT>服务之间的"交互"进行有效的管理。</DIV></LI></OL>
<P>这三个方面是交织在一起的，计划决定了如何去发现<FONT size=+0>Web</FONT>服务的类型，却依赖于<FONT size=+0>Web</FONT>服务的实现。同样，<FONT size=+0>Web</FONT>服务的交互过程依赖于计划的实施，计划本身又依赖于对交互的需求。</P>
<P>揭示一个<FONT size=+0>Web</FONT>服务，系统必须提供对于<FONT size=+0>Web</FONT>服务所能实现功能和能力的描述机制，并且能够识别和比较不同<FONT size=+0>Web</FONT>服务的功能和能力的异同。另一个挑战是系统还必须支持对不同<FONT size=+0>Web</FONT>服务的交互的支持。</P>
<P align=left>也就是说需要从语义和语法两个方面提供互操作性，而不是仅仅是目前考虑的重点——从语法上制定协议标准（例如<FONT size=+0>SOAP</FONT>和<FONT size=+0>WSDL</FONT>，利用<FONT size=+0>XSD</FONT>展现消息数据的结构）。语法的互操作性仅仅提供了消息交换的结构，没有提供消息内容的解释。<FONT size=+0>UDDI</FONT>仅仅是关于<FONT size=+0>Web</FONT>服务的信息库，并不包含<FONT size=+0>Web</FONT>服务能力的揭示。<FONT size=+0>WSCI</FONT>和<FONT size=+0>BPEL4WS</FONT>描述了多个<FONT size=+0>Web</FONT>服务可以组合在一起成为一个更复杂的<FONT size=+0>Web</FONT>服务，但是其重点放在语法的规定上，因此并不支持自动的<FONT size=+0>Web</FONT>服务的组合。</P>
<P align=left>语义互操作因此成为<FONT size=+0>Web</FONT>服务协同组合的关键问题。它必须：</P>
<OL>
<LI>
<DIV align=left>表达和支持<FONT size=+0>Web</FONT>服务的任务实现（例如网上卖书或者信用卡认证等），以便通过对于<FONT size=+0>Web</FONT>服务功能清楚的描述和广告而实现自动发现；</DIV>
<LI>
<DIV align=left>表达和支持业务关系和规则（<FONT size=+0>Business relations and rules</FONT>）；</DIV>
<LI>
<DIV align=left>表达和支持消息排序（<FONT size=+0>message ordering</FONT>）；</DIV>
<LI>
<DIV align=left>理解消息的语义；</DIV>
<LI>
<DIV align=left>表达和支持使用特定<FONT size=+0>Web</FONT>服务的前提条件以及激活服务的效果；</DIV>
<LI>
<DIV align=left>允许<FONT size=+0>Web</FONT>服务组合成为更为复杂的服务。</DIV></LI></OL>
<P><FONT size=+0>Web</FONT>服务可以直接在语义<FONT size=+0>Web</FONT>基础上直接建立，后者为<FONT size=+0>Web</FONT>提供了内容语义，能够被代理或者其他服务获取，代理能够通过严格定义的语义内容和规则进行推理，由本体提供的概念模型能够很好地解释<FONT size=+0>Web</FONT>网页的内容。从这一点来看，语义<FONT size=+0>Web</FONT>为<FONT size=+0>Web</FONT>服务提供了其所需得的语义互操作的基础，提供了形式化的语言和本体，用以支持服务描述、消息内容的理解、业务规则，并提供了不同本体之间的联系。语义<FONT size=+0>Web</FONT>和<FONT size=+0>Web</FONT>服务互相促进：前者使<FONT size=+0>Web</FONT>成为一个庞大的机读数据库，后者提供机器自动使用这些数据的工具。</P>
<P align=left>由此可以认为，"语义<FONT size=+0>Web</FONT>服务"是语义元数据、本体、形式化工具和<FONT size=+0>Web</FONT>服务架构的集成，是基于良好定义的语言进行语义描述的<FONT size=+0>Web</FONT>服务<FONT size=+0>(A Semantic Web service is a Web Service whose description is in a language that has well-defined semantics)</FONT>。</P>
<P align=left>因此，网络计算的不确定性得到了最大程度的消除，<FONT size=+0>Web</FONT>服务的发现、选择、组合、沟通、激活、监测、管理、恢复和补偿都得到了最大程度的自动化和实现。特别低，语义<FONT size=+0>Web</FONT>服务依赖语义<FONT size=+0>Web</FONT>描述：</P>
<OL>
<LI>
<DIV align=left>消息交换的内容；</DIV>
<LI>
<DIV align=left>消息交换的顺序；</DIV>
<LI>
<DIV align=left>消息交换的状态变化。</DIV></LI></OL>
<P align=left>结果为不同服务的无缝互操作提供了基础。</P>
<P>利用语义<FONT size=+0>Web</FONT>描述<FONT size=+0>Web</FONT>服务有很多具体内容，包括描述<FONT size=+0>Web</FONT>服务的许多附加属性，例如服务质量、安全性约束等，可能最重要的是在<FONT size=+0>Web</FONT>服务的运行过程中的状态描述，包括其输入和前提条件，以及输出和结果等，这些是对于其功能和能力描述所必需的。</P>
<P style="MARGIN: 0cm 0cm 0pt">文章的第二部分讨论了<FONT size=+0>DAML-S</FONT>对于发现和激活语义<FONT size=+0>Web</FONT>服务的作用，并进一步讨论了<FONT size=+0>Web</FONT>服务发现的不同方法和<FONT size=+0>DAML-S</FONT>处理模型的形式语义。第三部分集中讨论<FONT size=+0>DAML-S</FONT>怎样用于<FONT size=+0>Web</FONT>服务能力的发现，怎样在<FONT size=+0>UDDI</FONT>注册系统的基础上更进一步。在第四部分介绍了<FONT size=+0>DAML-S</FONT>虚拟机，主要用于第二部分介绍的"<FONT size=+0>DAML-S</FONT>处理模型"形式语义的处理。第五部分提供了<FONT size=+0>DAML-S</FONT>虚拟机运行效果的评价，我们可以看到其运行并不频繁。第六部分描述了一个具体的利用<FONT size=+0>DAML-S</FONT>组合服务的应用。第七部分是结论。</P>
<P>（语义<FONT size=+0>Web</FONT>服务图示及说明）。</P>
<P>服务描述一般包括三方面内容：服务能力描述；非功能性静态参数（元数据）；对该项服务负责的服务实体的描述。</P>
<P style="MARGIN: 0cm 0cm 0pt">服务能力描述：对于符合一定前提条件的<FONT size=+0>Web</FONT>服务输入产生一定的输出（返回消息），以及其间的副产品。例如一个付费新闻服务需要一个日期和信用卡帐号的输入，然后判断是否符合日期和信用卡的有效性以及信用卡没有被过度使用（超出信用额度的透支）的前提条件，所产生的输出是提交用户一个满足其日期请求的新闻网址，以及从信用卡中扣除相应的服务费用，其中可能会有非功能性静态参数（元数据）参与整个过程，例如对于新闻质量、收费标准以及新闻类别的选者和控制等。</P>
<P style="MARGIN: 0cm 0cm 0pt">处理过程和服务概要提供了描述<FONT size=+0>Web</FONT>服务的两个方面：服务概要描述服务内容和能力，而处理过程描述如何实现服务。例如<FONT size=+0>Amazon</FONT>的<FONT size=+0>Web</FONT>服务的概要描述了该网站的售书功能，而服务过程则必须详细描述为了实现卖书的过程，请求者必须首先查到他所需要的书，提供支付信息，并提供发货地址等。</P><img src ="http://www.blogjava.net/Apple/aggbug/6879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-29 14:52 <a href="http://www.blogjava.net/Apple/archive/2005/06/29/6879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【6.18-6.20日总结】旅游项目小结</title><link>http://www.blogjava.net/Apple/archive/2005/06/20/6397.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Mon, 20 Jun 2005 12:45:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/20/6397.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6397.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/20/6397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6397.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 小结并不是说真的结束了，只是为了前面一个星期的混乱作个结束而已。<BR>&nbsp;&nbsp; 从迷茫，到想推理案例，到现在完成信息聚合，其实没有多少实质性的突破，只是把页面美化的工作算完成了。<BR>&nbsp;&nbsp; 有几点想提出来讲一下：<BR>1）编程中，String类型的变量之间是不能用"=="比较的，而应改用equals()方法，因为我总是会在这一点上犯错误。<BR>2）java程序写长了，总是声明了很多临时变量，因为java的垃圾收集器，所以也不用去正式释放它们，但是程序运行起来会很慢，很耗资源，我都分不清楚是jena性能的问题还是我的程序中发生了内存泄漏。关于java中内存泄漏的问题，我以后还要仔细学习一下。只是我感觉到单元测试的重要性，在写程序的同时我们应该要进行单元测试，否则以后就更难找到错误了。我准备开始用junit，它和eclipse合作得不错。<BR>3）今天开会的时候，组长提到了几点新的想法：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.信息聚合的时候，可以多层次多点的提供聚合。比如路线信息的聚合中，我们找到沿途景点，在对单个景点的信息聚合中，我们找到景点所在城市，然后可以再有城市的信息聚合。也就是说，无论从那个角度，都可以有不同出发点上的信息聚合。这是一个不错的建议。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.与webservice的接口。在展示中可以融入webservice，使得可以访问外界的一些webservice，得到某些信息的动态变化。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.界面的设计应该更人性化一些，从用户出发，调查其性格、兴趣等，以一种用户容易接受的方式得到用户的隐形需求信息。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.参照酒本体的推理设计过程。<img src ="http://www.blogjava.net/Apple/aggbug/6397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-20 20:45 <a href="http://www.blogjava.net/Apple/archive/2005/06/20/6397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【6.17日总结】旅游项目进展报告</title><link>http://www.blogjava.net/Apple/archive/2005/06/17/6315.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Fri, 17 Jun 2005 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/17/6315.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6315.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/17/6315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6315.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天要小师弟按照生物信息ppt上的信息聚合的格式把路线、景点的信息也组织成那种格式，这样有利于展示。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天主要的工作是添加个体信息，通过添加的过程我也发现了很多问题，也产生了一些新的想法。我觉得推理有点类似心理测试呢，虽然心理测验比较简单，给定每到题每个选项一个固定的分值，然后根据最后的分数来推定每个人的性格，但这其中还是有一点知识背景的。没什么这个选项的分数会比较高？而这个总分值的人就是接近这种性格的人？而很多人觉得心理测验准也不是毫无根据的。其实是把心理学（也许这样讲不准确）某些知识转换成一种打分的形式，以一种比较直观的方式只让我们选择几个选项，而我们这些参加测验的人则无需去了解那些后面的专业知识，这也许就是“透明”吧。我们不用费神就可以得到比较专业的答案，本体的推理是不是也有这种作用呢？如果将很多规则、知识写到本体里面去，让个体自动根据规则推理得到结论，而行外的人也无需去弄懂这些规则了。虽然Jena的推理能力很有限，我还是想利用这一点，在旅游的项目上做一点事情。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我又添加了一个旅行者类，将想旅游的人分成了5种类型，然后以“＃适合的旅行路线”属性将它和“＃路线”类连接了起来。这样对任一个个体（人），如果我判定出他的类型，我就可以找到适合他的路线类型了。至于如何判定他的类型，我借用了某网站上的一个办法：回答几个选项。这样类似于心理测验（这也是我今天联想到心理测验的原因^_^）。因为我始终相信这是有科学根据的，而且和旅游领域有关。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样，我就可以继续丰富我的旅游案例了。要达到老板的目标，越复杂越好，没办法........<img src ="http://www.blogjava.net/Apple/aggbug/6315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-17 21:55 <a href="http://www.blogjava.net/Apple/archive/2005/06/17/6315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>旅游项目进展</title><link>http://www.blogjava.net/Apple/archive/2005/06/15/6176.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Wed, 15 Jun 2005 13:08:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/15/6176.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6176.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/15/6176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6176.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 今天虽然被IBM CDL拒了,等二面结果等了这么久，还是被拒，唉！<BR>&nbsp;&nbsp; 但是，我们的项目还是有进展的，小师妹功不可没，页面美化后效果好多了，添出来秀一下：<BR>&nbsp;&nbsp; <IMG height=30 src="/FreeTextBox/Utility/spacer.gif" width=28><IMG style="WIDTH: 646px; HEIGHT: 423px" height=585 alt=首页.jpg src="http://www.blogjava.net/images/blogjava_net/apple/首页.jpg" width=881 border=0><BR>嘿嘿，不错吧，小师妹果然强！<BR><img src ="http://www.blogjava.net/Apple/aggbug/6176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-15 21:08 <a href="http://www.blogjava.net/Apple/archive/2005/06/15/6176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【6.15日总结】Jena推理案例设计思考二</title><link>http://www.blogjava.net/Apple/archive/2005/06/15/6169.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Wed, 15 Jun 2005 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/15/6169.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6169.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/15/6169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6169.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;鉴于昨天的结论，今天在本体中补上了几个子属性关系、传递关系，想验证一下Jena API的推理功能：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我在旅游本体中加入了一个新类“#旅游目的地”，我按照特色的不同建了五个子类“#避暑胜地”、“#另类生活胜地”、“#娱乐胜地”、“#摄影胜地”、“#历史文化胜地”。在"#避暑胜地类"中添加了一个约束——属性“#具有”allValuesFrom“#自然山水景点”，"#自然山水景点"是"#景点"类的一个子类，它有实例"#庐山烟雨朦胧".。这样，通过说明“#旅游目的地”的一个实例“＃江西”，<FONT color=#ff0000>具有地区</FONT>“＃庐山”，而“＃庐山”<FONT color=#ff0000>具有景点</FONT>“庐山烟雨朦胧”，而得到“＃江西”<FONT color=#ff0000>具有</FONT><FONT color=#000000>“＃庐山烟雨朦胧”，因为“＃具有”是transitive属性(具有景点和具有地区是具有的子属性）。我想得到的推理结果是<BR>1. “＃江西" "#具有"&nbsp; "#庐山烟雨朦胧"<BR>2.“＃江西” rdf:type "#避暑胜地"。<BR>这样讲比较混乱，下面是部分owl文件（可点击<A href="file://E:\xiaohuang的文档资料\项目有关\6.19\display\travel.rar">这里</A>下载完整文件）：<BR>&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#ff1493> 这是避暑胜地的定义：<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;owl:Class rdf:ID="避暑胜地"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdfs:subClassOf rdf:resource="#旅游目的地"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;rdfs:subClassOf&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;owl:Restriction&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;owl:hasValue&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;owl:Class rdf:ID="自然山水景点"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/owl:hasValue&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;owl:onProperty&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;owl:TransitiveProperty rdf:about="#具有"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/owl:onProperty&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/owl:Restriction&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rdfs:subClassOf&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/owl:Class&gt;<BR>&nbsp;&nbsp;&nbsp;<FONT color=#ff1493>&nbsp;&nbsp;这是个体江西的数据：<BR></FONT>&lt;旅游目的地 rdf:ID="江西"&gt;<BR>&nbsp;&nbsp;&nbsp;<STRONG> &lt;具有地区&gt;<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;地区 rdf:ID="庐山"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>&nbsp; &lt;具有景点&gt;<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;自然山水景点 rdf:ID="庐山烟雨朦胧"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;景点简介 rdf:datatype="<A href="http://www.w3.org/2001/XMLSchema#string">http://www.w3.org/2001/XMLSchema#string</A>"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;几千万年前的地壳运动，造就了庐山叠障九层、崇岭万仞的赫赫气势，伴生出峰诡不穷、怪石不绝的刚阳之美。由于庐山高耸于江湖之间，雨量丰富，年降水量可达1950一2000毫米，故山中温差大，云雾多，千姿百态，变幻无穷。到庐山旅游，不可不体味庐山的云雾之美！到此消暑，环境幽静，烦热顿消，成为全国著名的避暑胜地。这里空气清新，森林、花鸟、温泉和众多的别墅群以及大量的历史名人骚客留下许多壮美诗篇和名胜古迹、神仙洞府，形成庐山完善的休闲度假地形象。&lt;/景点简介&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;景点位于 rdf:resource="#庐山"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;景点星级 rdf:datatype="<A href="http://www.w3.org/2001/XMLSchema#int">http://www.w3.org/2001/XMLSchema#int</A>"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;4&lt;/景点星级&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/自然山水景点&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/具有景点&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;地区位于 rdf:resource="#江西"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/地区&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/具有地区&gt;<BR>&nbsp; &lt;/旅游目的地&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 然后，我编了一小段代码测试，我选择的是OntModelSpec.OWL_DL_MEM_RULE_INF推理功能,结果发现并不能推出江西是个避暑胜地的结论，我反复检查了我的本体，仍然找不出问题所在，是我的本体不完整，还是Jena推理功能的问题？我还是偏向于前面的原因，因为计算机本体中用Jena的确可以推出WhiteBozZX是个GamingComputer结论，但在那个例子中是用的InfModel。OntModel应该是比InfModel更强推理能力才是，为什么会推不出来呢？下面是推出的关于“江西”的结论：<BR>&nbsp;&nbsp;&nbsp;&nbsp;江西 * :<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 rdf:type <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#旅游目的地)<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#具有地区 <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#庐山)<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 rdf:type rdfs:Resource)<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 owl:sameAs <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西)<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 rdf:type owl:Thing)<BR>&nbsp;- (<A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#江西 <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#具有 <A href="http://www.owl-ontologies.com/unnamed.owl">http://www.owl-ontologies.com/unnamed.owl</A>#庐山)<BR><FONT color=#ffa500>&nbsp;</FONT><FONT color=#a52a2a>- (</FONT><A href="http://www.owl-ontologies.com/unnamed.owl"><FONT color=#a52a2a>http://www.owl-ontologies.com/unnamed.owl</FONT></A><FONT color=#a52a2a>#江西 </FONT><A href="http://www.owl-ontologies.com/unnamed.owl"><FONT color=#a52a2a>http://www.owl-ontologies.com/unnamed.owl</FONT></A><FONT color=#a52a2a>#具有 </FONT><A href="http://www.owl-ontologies.com/unnamed.owl"><FONT color=#a52a2a>http://www.owl-ontologies.com/unnamed.owl</FONT></A><FONT color=#a52a2a>#庐山烟雨朦胧)<BR></FONT>Failed to recognized 江西 correctly<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可见，可以推出第一个结论：江西<STRONG>具有</STRONG>庐山烟雨朦胧（传递属性），但无法推出江西是个避暑胜地的结果。原因还需进一步分析。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，有感于Jena推理功能的薄弱，我只有用*_RULE_INF才能推出第一个结论，而如果用其余几个，只能得到子类、子属性有关的推理，难道本体的推理只是这种程度，自然不能满足实际应用的需要。还是考虑一下外挂推理机吧。</FONT><img src ="http://www.blogjava.net/Apple/aggbug/6169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-15 16:59 <a href="http://www.blogjava.net/Apple/archive/2005/06/15/6169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【6.14日总结】关于Jena推理案例设计的思考</title><link>http://www.blogjava.net/Apple/archive/2005/06/14/6132.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Tue, 14 Jun 2005 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/14/6132.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6132.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/14/6132.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6132.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6132.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天还是继续思考旅游业推理案例的设计。我们设计了一个旅游本体，有关于路线、景点、交通和酒店的信息，用户可以通过选择旅游主题、时间以及价格范围来得到推荐旅游线路，以及线路上景点的详细信息，包括交通和酒店。这和Webservice的想法是类似的。但是，我们实现的过程实际上只是把用Protege建好的本体，用Jena建了模型，然后把本体用read()方法读进来。这后面就是根据要求把相关的信息从本体取出来，而并没有用到Jena推理的功能。如何才能设计推理案例呢？<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们的眼界还是不够广，还没有找到合适的例子。仔细分析Jena推理文档中的3个例子：查找特定实例（个体）、实例认证以及验证一致性。涉及到推理的关键是类与子类、属性与子属性的关系。我们可以通过whiteBoxZX的定义推出它是一种GamingComputer，我们需要把与GamingComputer的定义有关的约束明确写入本体中，而且这里还有传递属性的作用在。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 思考于此，对于我们现在建立的本体还是有很多要修改的，太浅显了。<img src ="http://www.blogjava.net/Apple/aggbug/6132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-14 21:48 <a href="http://www.blogjava.net/Apple/archive/2005/06/14/6132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于本体编程的实现 【转载至八进制】</title><link>http://www.blogjava.net/Apple/archive/2005/06/14/6094.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Tue, 14 Jun 2005 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/14/6094.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6094.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/14/6094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6094.html</trackback:ping><description><![CDATA[<DIV class=postTitle>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://www.cnblogs.com/bjzhanghao/archive/2005/06/05/168240.html">原文链接&nbsp;<BR><BR></A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 临近期末，我有一门课程的期末项目是做一个教育领域的本体应用系统，所以最近经常思考本体在这样一个系统中所起的作用，以及该如何实现。（本体是否只能在web环境下发挥作用，使用本体描述一个独立系统的模型是否值得？）</DIV>
<DIV class=postText>
<P>假设要做的是选课系统，很容易看出系统里应该有这些对象：课程、学生、教师，它们之间互有联系。现在的问题是，本体、Java类和数据库各扮演怎样的角色？我目前想到的方法有以下几个：</P>
<OL>
<LI>在本体（owl）里建立这些类和关系，在Java里建立同样的Bean类，运行时系统把本体里的individuals转换为Java类的实例，也就是在内存里得到一个Java实例的集合，选课的各种操作就是对这个集合的修改，退出系统时再进行反向转换，把修改反映到本体里。在这样的实现方法中，本体实际上扮演了数据库的角色，所以当数据（individuals）很多的时候，效率会很成问题。（Protege的owl编辑工具提供了从本体生成EMF模型代码的功能，虽然目前还是alpha版，这也许将成为同步两种模型的不错选择。）<BR><BR>
<LI>对上面的方法进行修改，让本体不保存individuals，对Java实例集合的修改最终反映到关系数据库里（利用hibernate不会很困难），运行时系统直接从数据库里取得数据转换为Java实例。这样的实现可以解决效率问题，但和传统应用区别不大，本体的作用几乎为零。 <BR><BR>
<LI>另一种比较极端的做法是只用本体维护类和individuals，Java方面没有任何与应用有关的模型，系统一开始把本体读入内存以rdf图的方式存在，选课操作转换为对此图的修改（利用Jena等API）。这个方法存在两个问题，一是效率，二是Java代码的可读性下降，这就相当于直接使用JDBC而不是hibernate对数据库操作的区别。</LI></OL>
<P>在solo项目里我使用的是第一种方式，各方面效果还可以接受，但本体的作用发挥得很不够。这是很重要的方面，因为如果和传统项目没有区别，辛辛苦苦引入本体又是为了什么，特别是对本体推理的功能，我想最关键的问题还是要找出最适合应用的本体，定义本体的确是一门学问。</P>
<P>Update：IBM Alphaworks也提供了一组<A href="http://www.alphaworks.ibm.com/tech/semanticstk">本体工具</A>（包括Orient、EODM和RStar），对EMF的支持应该不错。今天初步试了一下Orient，它只支持RDF(S)，而不支持OWL，所以无法满足课程项目的要求，Orient的目前版本还有一些小bug，除已知的那些以外，我把.ontology文件输出为ecore模型总是不成功，而输出为rdf是可以的。</P>
<P>Update：推荐一个关于本体和模型驱动的<A href="http://afrodita.rcub.bg.ac.yu/~gasevic/tutorials/ICWE2004/Handouts%20-%20MDA%20Standards%20forOntology%20Development.pdf">幻灯片</A>，主要内容是介绍应该如何利用UML的可视化编辑功能和元模型的扩展功能来构造本体，这里面介绍了相当多的相关概念（其中很多我甚至没听说过），以及它们出现的原因，比较有利于我们理清思路。</P></DIV><img src ="http://www.blogjava.net/Apple/aggbug/6094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-14 09:54 <a href="http://www.blogjava.net/Apple/archive/2005/06/14/6094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新本体案例——旅游订制进展及问题</title><link>http://www.blogjava.net/Apple/archive/2005/06/13/6082.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Mon, 13 Jun 2005 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/06/13/6082.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/6082.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/06/13/6082.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/6082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/6082.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 紧接着上一个建筑项目本体，我们又决定开始另外一个案例——旅游订制。从网格课开始我们就一直在讲旅游定制，Webservice中常常拿这个做例子，我们想用本体来实现它的功能。<BR>&nbsp;&nbsp;&nbsp; 本体究竟能做什么？大家都很疑惑，一边寻找合适的案例，一边思考它的应用范围。目前我们实现的是信息的聚合。本体用另外一种形式类、属性以及他们之间的关系来表达一个领域的知识，给定一个景点，我们可以把与之相关的交通、酒店、图片、地址、网页URL、景点星级、平均客流量等各种信息聚合到一起（这个我始终觉得和webservice的目的是一样的），但这只是很浅的功能，用关系数据库就可以实现，那我们为什么要用本体呢？<BR>&nbsp;&nbsp;&nbsp; 推理。小组长一直叮嘱我要设计推理案例，可我一直没有取得突破，原因有几点：<BR>1）什么是推理？这个名字好像很复杂，但仔细研究葡萄酒本体和食物本体的例子就会很失望，所谓的找到与餐桌上的某个食物最匹配的酒，不过只是属性和子属性，类和子类的几个简单的推断、匹配罢了。这就是推理？Jena文档中的三个推理案例：计算机本体中个体nForce查找特定实例、实例验证以及验证一致性都是很简单的，在实际应用中有何作用，我们真的需要这个吗？这样的疑问一直盘旋在我脑中，我们应该从需求从实际的应用来挖掘本体的用处，而不是为了做推理而挖掘本体的用处。<BR>2）我们思考的旅游本体开始吸引我们的地方，就是能够有一些<FONT color=#ff0000>用户看不到</FONT>的规则在本体中。我们能够结合现在的月份，以及用户提供的价格范围选择最适合用户的路线。我们有计算每条路线的推荐度，但究其原理，也不过是用程序实现的计算规则和匹配，是跳脱了本体的，而没有用到推理功能。这有点让我失望，因为做下来后才发现，我们还是在做信息聚合，以及人进行的推理罢了，离我们的目标还是很远。<BR>&nbsp;&nbsp;&nbsp; 究竟怎样找到一个有推理又实用的应用呢？希望这几天能有突破。<img src ="http://www.blogjava.net/Apple/aggbug/6082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-06-13 22:02 <a href="http://www.blogjava.net/Apple/archive/2005/06/13/6082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jena推理功能的展示</title><link>http://www.blogjava.net/Apple/archive/2005/05/10/4148.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Tue, 10 May 2005 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/05/10/4148.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/4148.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/05/10/4148.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/4148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/4148.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 小组长要求把Jena推理功能展示出来，学习Jena API时间不长，还不是很熟悉。展示？如何展示法？幸好开始要求不高，只用将推理的结果用三元组的形式罗列出来，借鉴JENA文件夹中inference文件下的计算机的例子（owlDemoSchema.owl和owlDemoData.rdf）。<BR>&nbsp;&nbsp;&nbsp; 今天就编了一个简单的界面，有“打开”、“推理”按钮，打开用于载入需要的两个文件，推理就是按要求推出结果，并在文本域中显示出来。这里，“要求”主要是指推理功能的三种应用：按给定的实例uri找出所有与之相关的三元组（即所有的关系）；实例验证；一致性检查。<BR>&nbsp;&nbsp;&nbsp; 下一步要实现对推理结果的过滤。<img src ="http://www.blogjava.net/Apple/aggbug/4148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-05-10 20:56 <a href="http://www.blogjava.net/Apple/archive/2005/05/10/4148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jena编程环境的配置</title><link>http://www.blogjava.net/Apple/archive/2005/05/10/4147.html</link><dc:creator>苹果</dc:creator><author>苹果</author><pubDate>Tue, 10 May 2005 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/Apple/archive/2005/05/10/4147.html</guid><wfw:comment>http://www.blogjava.net/Apple/comments/4147.html</wfw:comment><comments>http://www.blogjava.net/Apple/archive/2005/05/10/4147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Apple/comments/commentRss/4147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Apple/services/trackbacks/4147.html</trackback:ping><description><![CDATA[<P align=justify>&nbsp;&nbsp; Jena是一组用java编写的API，它的功能非常强大，可以构建用各种语言（OWL,DAML+OIL,RDFS)描述的本体（ontology）模型、RDF模型。更重要的是可以使用它内置的推理机（reasoner）对本体进行推理，也可以与外界的推理机连接。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;刚接触语义网不久，因为参加了一个开发图形本体编辑器的项目，所以开始了Jena的学习。重点是看Jena的文档。为了配置Jena的编程环境，可着实花费了一番功夫。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是使用IDE，如Eclipse，那倒简单，在建project的时候直接将Jena包中lib文件夹下所有的.jar文件添加进来即可。但是如果使用命令行的形式（javac/java),按XML论坛上帖中讲的，将所有的jar包添加到类路径（classpath）中，还是行不通。百思不得其解，后来偶然在网上见到一篇文章，如果是扩展java的话，将jar包添加到jsdk安装路径下的jre\lib\ext文件夹下（C:\J2sdk1.4.2_02\jre\lib\ext)。这样就可以使用Jena API了。</P><img src ="http://www.blogjava.net/Apple/aggbug/4147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Apple/" target="_blank">苹果</a> 2005-05-10 20:30 <a href="http://www.blogjava.net/Apple/archive/2005/05/10/4147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>