以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Semantic Web(语义Web)/描述逻辑/本体 』 (http://bbs.xml.org.cn/list.asp?boardid=2) ---- sparql查询RDF文档,如何得到查询到的资源的URI? (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=74752) |
-- 作者:senvenstars -- 发布时间:5/9/2009 6:47:00 PM -- sparql查询RDF文档,如何得到查询到的资源的URI? 我用sparql api在eclipse中查询、输出都成功,但是在查询资源主体时输出的却是一个空节点。查询的rdf文档内容如下: <?xml version='1.0' encoding='UTF-8'?> <rdf:RDF <rdf:Description rdf:about="http://somewhere/RebeccaSmith/"> <rdf:Description rdf:about="http://somewhere/SarahJones/"> <rdf:Description rdf:about="http://somewhere/MattJones/"> </rdf:RDF> |
-- 作者:Roger_ -- 发布时间:5/9/2009 8:05:00 PM -- 只看第一个人 <rdf:Description rdf:about="http://somewhere/JohnSmith/"> <vCard:FN>John Smith</vCard:FN> <vCard:N rdf:parseType="Resource"> <vCard:Family>Smith</vCard:Family> <vCard:Given>John</vCard:Given> </vCard:N> </rdf:Description> 按照你给的SPARQL语句查到的应该是这个<vCard:N rdf:parseType="Resource"> 如果想得到url的话 |
-- 作者:senvenstars -- 发布时间:5/9/2009 8:30:00 PM -- 谢谢回复!按你的方法得到uri了。 不过按我贴的代码运行还是和我贴出的结果一样,和你说的输出结果不一样,不知是什么原因 在此感谢! 另外,如果我想在java中操作这结果集,该如何操作?比如这次的搜索的输出语句为:ResultSetFormatter.out(System.out,results,query);那么结果的形式则是: ------------------------------------ | url | ==================================== | <http://somewhere/RebeccaSmith/> | | <http://somewhere/JohnSmith/> | ------------------------------------ 如果用System.out.println(res.next());语句输出,则是 ( ?url = <http://somewhere/RebeccaSmith/> ) ( ?url = <http://somewhere/JohnSmith/> ) 有没有方法,把结果集转成可操作的? 如果我定义一个Resource,如果把结果中的数据赋值给Resource? |
-- 作者:senvenstars -- 发布时间:5/9/2009 8:44:00 PM -- 还有一个问题。结果的输出是源于这句话的存在<vCard:N rdf:parseType="Resource">如果没有这几句话,又如何得到uri呢,假设数据集为 <rdf:Description rdf:about="http://somewhere/SarahJones/"> <vCard:FN>Sarah</vCard:FN> </rdf:Description> 那么又如何呢? 呵呵,对你这句 ?url vCard:N ?resource. 很好奇,是如何写出的?我刚接触sparql时间不久,对它的语法了解的还不够 |
-- 作者:Roger_ -- 发布时间:5/10/2009 9:38:00 PM --
我觉得应该先把所给的rdf图的关系搞清楚,一共出现了几个三元组以及三元组间的关系 (比如公共subject或者object) sparql查询机制在于sparql三元组模式(如上面的 ?resource vCard:Family "Smith")与RDF statement三元组间的匹配,通过三元组模式 ?resource vCard:Family "Smith" 将得到vCard:Family为Smith的resource(注意这里得到的resource并不是"http://somewhere/JohnSmith/",而是"http://somewhere/JohnSmith/" vCard:N resource这个三元组的宾语),紧接着的三元组模式 ?url vCard:N ?resource利用得到的?resource查询符合的新的resource(即"http://somewhere/JohnSmith/") 至于 <rdf:Description rdf:about="http://somewhere/SarahJones/"> |
-- 作者:Roger_ -- 发布时间:5/10/2009 9:47:00 PM --
说一下你的代码为什么得不到所需要的url select ?resource ?p where { ?resource ?p "Smith".} 这条sparql查询的是RDF里面以Smith作为宾语的三元组的主语和谓语 <vCard:N rdf:parseType="Resource"> <vCard:Family>Smith</vCard:Family> 和 <vCard:N rdf:parseType="Resource"> <vCard:Family>Smith</vCard:Family> 这两个三元组的主语在RDF图里实际上是一个空的节点(BLANK NODE),所以自动标记为 ?res = _:b0 ?res = _:b1 " 另外,如果我想在java中操作这结果集,该如何操作?比如这次的搜索的输出语句为:ResultSetFormatter.out(System.out,results,query);那么结果的形式则是: ------------------------------------ | url | ==================================== | <http://somewhere/RebeccaSmith/> | | <http://somewhere/JohnSmith/> | ------------------------------------ 如果用System.out.println(res.next());语句输出,则是 ( ?url = <http://somewhere/RebeccaSmith/> ) ( ?url = <http://somewhere/JohnSmith/> ) 有没有方法,把结果集转成可操作的? 如果我定义一个Resource,如果把结果中的数据赋值给Resource?"
结果保存在ResultSet里,当然是可操作的吧
|
-- 作者:Roger_ -- 发布时间:5/10/2009 9:54:00 PM -- [url]http://www.w3.org/TR/rdf-sparql-query/[/url] w3c给的sparql的英文说明文档 当然你可以GOOGLE查询中文的sparq说明文档 |
-- 作者:lghlrjzhx -- 发布时间:10/9/2009 11:13:00 PM -- 请教楼主,如何用sparql api在eclipse中查询的,我正在学习SPARQL,只能够在命令行里进行,苦苦寻求在eclipse里运行sparql。请问楼主你的这些查询语句在eclipse的那个目录下输入的?是新建的文件里输入吗? |
-- 作者:Roger_ -- 发布时间:10/10/2009 9:28:00 AM -- 我记得 jena 提供了两种方法输入SPARQL语句 可以在代码里写,也可以先放到文件里,然后导入 |
-- 作者:lghlrjzhx -- 发布时间:10/10/2009 11:24:00 PM -- 9楼的 Roger_ 大哥,请你详细指点一下吧,你说 “在代码里写”,是在 Arq examples 目录下选一个来更改代码,还是新建一个类 包为Arq.examples ,然后在里面输入代码吗? 2 也可以先放到文件里,然后导入;先放在.rq 文件里吗?导入是导 “常规”下的“文件系统”吗 好想加你为QQ好友,多多交流 我的QQ 309343681 我在四川大学学习 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |