管理三元式的新思路,涉及到查询时似乎可以借用Social Network的思想
我对这次讨论会的内容有一些想法,想法有几个方面,但我发现它们是有联系的
首先是关于推理的问题。在讨论会上提到Sesame在加入一个三元式的时候选取一些规则尽可能作一些相对有价值的推理,我想能不能反其道而行之:使得整个模型中的三元式的数量尽可能少,也就是尽力去除可以被其他现有三元式推理出来的三元式,使得整个模型最小化。也就是说,在每次添加新的三元式的时候,要做的不是推理出更多的三元式,而是看看有没有三元式可以删除,并尽可能这样做。一个例子:如果已经有A subClass B,A subClass C,那么新加入B subClass C时就可以去除A subClass C,因为它可以由另两个三元式推理得到。这样想的直接考虑是在应用中删除三元式时不存在一致性等种种问题,可以直接删除;相应的增加三元式时时间代价会大一些,但是空间代价小了。
然而问题就是表面上看直接信息量少了很多,可能应用于查询时的时间代价会很大,在查询时可能要做很多推理。但我觉得也许这是可以解决的,这是我的第二个想法,关于Social Network。可不可以将所有的本体中的所有的实体看成一个个结点,它们也许组成了一个Social Network。这个需要进一步论证是否符合Social Network的定义和相关概念。我先假定是符合的。考虑一个实际的查询,比如可能需要知道两个给定结点(实体)之间的关系(路径),不妨就采用穷举法,假定两个结点之间最短可以通过k个关系联结,假定每个结点的度数是a,那么穷举的推理相当于a^k数量级,这个数量级理论上是不可接受的,但是实际上可能是可以接受的,原因如下:首先两边同时进行,也许指数可以减半,仅需要a^(k/2)就可以解决;第二,因为Social Network有小世界的性质,那么平均两个结点可以通过大约6个关系就能连接,这样k通常是小于6的,这样开销大约是a^3以内(统计意义上的);另外,Social Network中,每个结点的度数是极其有限的,仅和有限的结点关联,典型的值比如100(我随意估计的),这样整个推理次数大约是10^6(请注意这个数字已经不是数量级,而是实际的次数),这个值可能仍然不能接受,但我认为是可以继续降低的,原因如下:
可以考虑Social Network中的社区的概念,每个结点更多的是和有限的结点关联,它们组成了社区,社区内连接比较密集,我的理解就是:在一个社区内部,彼此之间路径应当很短(否则就不叫社区了),比如大约1-2步就可以到达对方;社区间的联系是相对比较稀疏的,那么可不可能去管理社区间的关系(通过某种方式记录),也就是将关注的焦点抽象一下,在查询时先关注社区级别的关系:如果两个结点在一个社区中,显然查询是很快的;如果不在一个社区中,那么可以很容易找到社区间的关系,因为社区间的关系是很稀疏的,记录并提供合理和有效的索引也许是有可能的,这样建立社区间的联系以后再考虑社区内的联系,最终得到两个结点的关系,其实与讨论会上的所谓Social Netword的组织结构的search方式有类似。
没有考虑太仔细,我这方面基本功还很薄
下一篇:使用AOP微型框架的例子 >>
相关文章:
- · .net中何有效的使用Cache
- · 关于如何操作其他窗体的控件或变量的方法!
- · .net官方编码方法和命名规则
- · .NET 开发AutoCAD2006指南(二)
- · .NET开发AutoCAD指南(一)
- · 用.net 2003开发Windows CE应用,解决与pocket pc通讯的问题
- · .NET 开发AutoCAD2006指南(二)
- · 《.NET软件技术学习与实践》之序言
- · .net remoting范例
- · .net缓存应用与分析
- · 一种改进的轻量级.NET应用程序性能测试框架
- · 用.NET创建Windows服务
- · .net中清除EXCEL进程最有效的方法
- · 初探.NET中的delegate类型与.NET事件
- · .NET中自己构建一个ArrDictionary
- · 使用.NET生成Excel文件
- · 根据函数名称定位函数
- · .Net项目制作安装程序
- · 使用.net下的系统事件增强应用程序
- · Dotnet总结(4)--xml读写
- · Dotnet总结(3)--打印
- · Dotnet总结(2)--访问ms sql server 数据库基类--2
- · 如何使用.NET配置文件(一)
- · 将.aspx文件和图片编译进dll
- · .net如何实现页面间的参数传递
- · Microsoft .NET 中的简化加密
- · .Net远程方法调用研究
- · .net 里面 protected private 的变量也可以访问
- · 构建基本的.NET Remoting应用程序
- · 让你的.NET程序兼容不同版本的Dll文件
- · 谈Microsoft .NET战略
- · .net中xmlhttp下载文件的方法参考
- · .net Compact Flamework中MD5CryptoServiceProvider的实现
- · 把.NET程序部署到没有安装.NET Framwork的机器上
- · 在.NET下编写中文代码程序
- · ADO 与ADO.NET
- · C#异步数据接收串口操作类
- · 用 .NET 开发的轻量级 UI 测试自动化
