`
steeven
  • 浏览: 307449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从RELO看OPENRDF

阅读更多
从RELO看OPENRDF
http://www.openrdf.org
在RELO中,Java从项目到package到class,包含里面的细节,最终都是RDF结构存储在RDF文件或者RDF数据库中, 不但用它表述了Java的关系,还有图上的连线、用户标注,位置、都用RDF描述。

根据我的不完全理解,欢迎大家批斗,RDF里面主要是Statement这个玩意,它是什么呢?就是咱们以前最烦的:
主谓宾。这是基本的自然语言。

如果我们要画个图,可能会对图上的元素建模,包含以下属性:x/y/w/h/text/parent/children/model
这里有比较复杂的对象引用。用RDF描述则表现为几条Statement语句, 随便打开一个relo保存的文档,截取一个对象的描述:
_:node142u7s296x3531
relo-jdt:refType <http://relo.csail.mit.edu/rdf/jdt-wkspc#edu.mit.csail.relo.modelBridge$Artifact> ;
a relo-jdt:field ;
relo-core:name "dstArt" ;
relo-core:initialized "true" ;
relo-jdt:access relo-jdt:access-none ;
relo-jdt:source-resource <http://relo.csail.mit.edu/rdf/relo-eclipse#bin_sledu_slmit_slcsail_slrelo_slmodelBridge_slArtifactRel.class> .
主语是文档中的一个node,每个谓语是有schema的所以几乎可以无限扩展。宾语是各种值。在javadoc中的定义:
Statement createStatement(Resource subject, URI predicate, Value object)
Value: Resource, IdValue, Literal,NativeValue, Resource, ValueNode
Resource: BNode, IdResource, NativeResource, ResourceNode, URI
主语是一个特定结构的Resource, 谓语是URI(近似Java中的URI),宾语可以是各种值。

这种结构的最大好处就是随意查询。任何值为null则代表"*"
StatementIterator getStatements(Resource subj, URI pred, Value obj)
这样,查询某个包下面有哪些类、某个类被那些方法引用等都会很简单,因为我们可以任意组合主谓宾的某个部分区查询。这就是RDF的强项。


在sesame中还支持内存、文本、二进制、关系数据库的存储,给我们的应用带来更大的灵活性。如果你有关系复杂的数据要描述、查询,不妨试试。
一些更复杂的特性不做介绍。
注意relo只使用了1.0版本中的存储api,不包含server。


个人认为这种结构更适合将来智能语言的处理。虽然效率不见得很高。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics