以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  rdf中如何计算两个node之间的距离  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=73246)


--  作者:trytrysee2008
--  发布时间:3/18/2009 3:36:00 PM

--  rdf中如何计算两个node之间的距离
我们知道, rdf可以被描述成一个graph, rdf的subject object是graph中的一个node, 但是怎么计算两个node之间的距离呢?  如果这个graph可以完全被塞进内存, 倒是好说, 但是关键一般的巨大的rdf都是以triple的形式塞进关系数据库, 那怎么计算nodes间的距离呢?   我正在读一篇论文http://www.cs.umd.edu/users/udrea/papers/grin.pdf  研究rdf indexing的,有同样感兴趣的么?
--  作者:jiangyue0011
--  发布时间:3/18/2009 3:59:00 PM

--  
"巨大的RDF",是怕慢吗?我觉得 计算节点间距离(比如基于SUBCLASSOF关系的距离)不把本体中的全部节点遍历一遍是算不出来的 所以慢也没办法
--  作者:trytrysee2008
--  发布时间:3/18/2009 5:16:00 PM

--  
引用  "巨大的RDF",是怕慢吗?我觉得 计算节点间距离(比如基于SUBCLASSOF关系的距离)不把本体中的全部节点遍历一遍是算不出来的 所以慢也没办法

多谢你的回答
关键是一个五六百MB的rdf文件, 是要以triple的形式被写到数据库里的,失去了原有的结构, 那样就不好计算节点之间的距离了, 除非非常频繁的读取数据库,   其实就是相当于一个非常之巨大的图形, 被储存在硬盘上无法全部读入内存的, 怎么找两个node之间距离? 读取硬盘要耗费很长时间


--  作者:beyondlei
--  发布时间:3/19/2009 2:07:00 AM

--  
虽然不能解决你的问题,但我给出一些想法,希望和你讨论。
先建立一个rdf的data graph的邻接矩阵M=(mij)n*n,可以存在数据库中,由于矩阵是symmetric的,只需存储对角线以上部分,如果mij = 1,在数据库中存入i和j对应的nodeID对,M的r-th乘积表示了距离在r以内的连接。矩阵乘积可以由数据库join完成。但问题是M的r-th乘积包含了距离在r以内的连接,而不是距离为r的连接。如果只要考虑最短距离, M的r-th乘积减去所有 M的p-th乘积(1<=p<r),那么每个这样的矩阵保存了最短距离为r的连接。
--  作者:jiangyue0011
--  发布时间:3/19/2009 11:02:00 AM

--  
没处理过这么大的本体,不知道是不是可以先人工的分一下块,其实也就是吧一个大的本体分成若干小的本体。比如根节点下第一层有10个子节点,那么可以吧10个子节点作为10个子本体的根节点,这样每个子本体的大小只有原来的十分之一左右,如果第一层的节点比较少可以再基于第二层构建子本体,将原来的大本体分成子本体存起来,每次处理一个子本体应该就没问题了。
所谓距离也就是两个节点到其最深公共父节点的路径长度之和,同一个子本体的最深公共父类自然在这个子本体中,而不同子本体中节点的最深公共父类就是大本体的根节点了,只要计算每个节点到自己子本体根节点的距离再+1就OK了。
如果本体中有的节点有多个父类,那么构建子本体的时候在涉及该节点的子本体都吧它和它的子节点都包含进来就可以了。
这只是个想法,没有实践过,不知道哦是否可行,希望能有帮助。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms