我想知道在关系数据库中使用Triple Stores有什么好处?
我开始使用Jena Engine,我想我已经掌握了语义是什么.然而,我很难理解在Jena和ARQ中代表一堆三元组的不同方法:
Model文档说出了RDF图的Jenas名称.Graph当我想查询模型联合时,似乎也是必要的工具,但是它似乎没有共享一个共同的接口Model,尽管可以得到Graph一个ModelDataSetARQ,它似乎也是某种三元组的集合.当然,有些人在API中查找,我找到了以某种方式从一个转换为另一个的方法.但是我怀疑它还有3个不同的接口用于相同的事情.
所以,问题是:这三者之间的关键设计差异是什么?我什么时候应该使用哪一个?特别是:当我想要保持单个三元组但是将它们视为一大堆(联合)时,我应该使用哪些数据结构(以及为什么)?另外,当从一个"转换"到另一个时,我"松散"任何东西(例如,确实model.getGraph()包含的信息少于某些方式model)?
我正在尝试使用本体来实现基于eclipse的应用程序.(我的主题是语义标注).我需要向用户显示本体(作为树)并在本体类和某些模式之间建立链接.
因为我只有基本的编程技能,所以我现在有点不知所措,关于如何设计应用程序...... 1.问题:使用哪些API?我找到了OWL API和Jena API.在其中一篇文章中(是否有任何库可以轻松更改和更新OWL文件?)Michael说"OWLAPI超过Jena.Jena有OWL支持,但它不是为 OWL 设计的,这使得它使用起来有点麻烦."你怎么看?2.此外,还有ProtégéAPI.乍一看,它似乎更适合我,因为它已经提供了一些GUI工具等.但我有点困惑:当试图找到更多信息时,我发现这个http://protegewiki.stanford.edu/wiki/P4APIOverview.在那里它说"正在进行中",但该页面最后一次在2009年更改.如何理解这一点?有没有人与ProtégéAPI合作并可以分享他/她的经历?
非常感谢提前!
我是语义Web技术的初学者,我的问题可能是一个非常基本的问题,但我真的很难搞清楚.我有一个我用XML创建的RDF文件,并使用w3.org RDF VALIDATOR对其进行了验证.我的问题是如何使用SPARQL在我的RDF文档上运行查询.在线资源http://demo.openlinksw.com/sparql不起作用,我不知道如何或如何找到有关此信息.
我试图使用SPARQL Construct查询从现有的查询创建一个新的命名图.我查询的数据库包含http://graph.com/old现有的命名图.我使用Jena TDB作为数据库,通过Jena Fuseki端点访问.以下查询给出了一个错误:
CONSTRUCT
{
GRAPH <http://graph.com/new> {
?s ?p ?o
}
}
WHERE
{
GRAPH <http://graph.com/old> {
?s ?p ?o
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从CONSTRUCT块中删除图形语句,查询工作正常,但我想将三元组放入我指定的命名图形而不是默认图形.
据我所知,CONSTRUCT上的SPARQL 1.1部分没有说明构建命名图的任何内容.有没有办法做到这一点?
我正在使用Jena ARQ编写针对从Jena TDB读取的大型本体的SPARQL查询,以便找到与基于rdfs标签的概念相关联的类型:
SELECT DISTINCT ?type WHERE {
?x <http://www.w3.org/2000/01/rdf-schema#label> "aspirin" .
?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type .
}
Run Code Online (Sandbox Code Playgroud)
这很好用,实际上非常快(<1秒).不幸的是,对于某些术语,我需要以不区分大小写的方式执行此查询.例如,因为标签"Tylenol"位于本体中,而不是"tylenol",所以以下查询为空:
SELECT DISTINCT ?type WHERE {
?x <http://www.w3.org/2000/01/rdf-schema#label> "tylenol" .
?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type .
}
Run Code Online (Sandbox Code Playgroud)
我可以使用FILTER语法编写此查询的不区分大小写的版本,如下所示:
SELECT DISTINCT ?type WHERE {
?x <http://www.w3.org/2000/01/rdf-schema#label> ?term .
?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type .
FILTER ( regex (str(?term), "tylenol", "i") )
}
Run Code Online (Sandbox Code Playgroud)
但现在查询需要一分钟才能完成!有没有办法以更有效的方式编写不区分大小写的查询?
我正在使用Jena的SPARQL引擎并尝试编写一个查询来过滤日期范围,因为我需要在固定日期之后找到属性的值.
我的日期属性采用以下格式:
Fri May 23 10:20:13 IST 2014
Run Code Online (Sandbox Code Playgroud)
如何编写SPARQL查询以获取日期大于此值的其他属性?
我有一些数据三元组,我想用某种基本的OWL本体编写.我有三胞胎喜欢:
Delhi is part of India
Run Code Online (Sandbox Code Playgroud)
要么
India is an Asian country
Run Code Online (Sandbox Code Playgroud)
请注意,我的关系类似于"is-a","part-of"或"related-to".构建本体的最简单方法是什么?任何工作示例或对示例网站的引用都将是很有帮助的!
基本上我有一个有效工作的查询(如下所示).但是,我希望我的搜索更准确,标签是实际字符串'yago',而不是包含字符串'yago'.如果可能的话,我想尝试不使用过滤器,因为我认为使用FILTER会使查询DBpedia需要更长的时间.
SELECT ?uri ?label
WHERE {
?uri rdfs:label ?label.
?label bif:contains "'yago'" .
}
Run Code Online (Sandbox Code Playgroud) Apache Jena和Apache Marmotta有什么区别?
根据我的读数,两者都可用于语义Web目的.两者都支持RDF,Triple store等.两者都基于Java.我希望这个问题对于那些不熟悉语义网的人来说是有价值的.
请注意,我不是问哪一个更好,我问的是如何根据使用/要求/因素选择一个而不是另一个