从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。
个人认为这种结构更适合将来智能语言的处理。虽然效率不见得很高。
分享到:
相关推荐
Relo是一个帮助开发人员研究大型代码库的好工具,它能够一步步的跟踪你所展开的代码包,并快速生成类似UML的类图。
ReLo(后端) ReLo 是一款基于 VueJS 的微博和社交网络应用重要的! 这仅包括项目使用的 REST API。 要测试整个应用程序,请克隆 ,这是该项目使用的 FrontEnd 部分设置安装依赖: npm install运行服务器: 在 ...
Relo是用于MinGW和Borland C ++编译器的Windows C / C ++ IDE。 它主要针对开发Windows(Win32)应用程序,但也可以用于开发控制台/ DOS应用程序。 它的设计易于使用和自定义。
我们创建了ReloTalent房地产Chrome附加组件,使您可以直接从正在上班的网站上轻松地在ReloTalent中创建属性! 找到所需的属性,然后按照创建它的步骤进行操作,该属性将在您的ReloTalent环境中创建,并且可以与您的...
雷洛
java运行依赖jar包
它创建了一个由数据点组成的随机3臂螺旋(想象一个二维图上的一堆数据点,看起来像是3臂的螺旋,有点像银河系),所有点都属于其中一个这些武器。 神经网络的工作是对每个点属于哪个分支进行分类。 这不是我自己的...
由1love和scpnion 1life制作的Inferno League Bot由TalkTakesTime,Quinella和Morfent从Pokemon Showdown机器人分叉 添加自定义联赛命令只是为了减少联赛房间的按键 要运行bot,请打开cmd并按如下所示键入命令- cd ...
schnatterer.info 建立 # Install ruby sudo apt-get install ruby-full build-essential zlib1g-dev # Install gems for local user ...# Start jekyll development server with client-side live-relo
俄罗斯方块轮换游戏机制不同的tetriminos,由四个正交连接的正方形块组成的几何图形,这些图形是从屏幕上方区域中占据5x5块的区域生成的。 对于游戏区域的尺寸,每个版本都不同,没有达成共识。20但是,玩家隐藏了两...
电子表达React应用程序 使用Express服务器和React的Electron应用程序的快速入门 ... Webpack建立在开发模式下(它将在您编辑app文件夹上的内容时建立时间)之后,您只需在devtools中键入location.relo
第三只眼睛 此应用使用摄像头(USB WebCam或PyCam)检测运动和对象,显示实时视频流以及基于运动和对象检测数据的一些有用的统计信息。 当前,该系统部署在Raspberry Pi 4上。...uvicorn fastapi_app:app --relo
我有以下课程 public class ModInfo : IEquatable { public int ID { get; set; } public string MD5 { get; set; } public bool Equals(ModInfo other) ... return other.MD5.Equals(MD5);...public void Relo