新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Semantic Web(语义Web,语义网或语义万维网, Web 3.0)及相关理论,如:Ontology(本体,本体论), OWL(Web Ontology Langauge,Web本体语言), Description Logic(DL, 描述逻辑),RDFa,Ontology Engineering等。
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLW3CHINA.ORG讨论区 - Web新技术讨论『 Semantic Web(语义Web)/描述逻辑/本体 』 → sparql查询RDF文档,如何得到查询到的资源的URI? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 12817 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: sparql查询RDF文档,如何得到查询到的资源的URI? 举报  打印  推荐  IE收藏夹 
       本主题类别: RDF/RDFS    
     senvenstars 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:71
      门派:XML.ORG.CN
      注册:2007/8/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给senvenstars发送一个短消息 把senvenstars加入好友 查看senvenstars的个人资料 搜索senvenstars在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看senvenstars的博客楼主
    发贴心情 sparql查询RDF文档,如何得到查询到的资源的URI?

    我用sparql api在eclipse中查询、输出都成功,但是在查询资源主体时输出的却是一个空节点。查询的rdf文档内容如下:
    <?xml version='1.0' encoding='UTF-8'?>

    <rdf:RDF
      xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
      xmlns:vCard='http://www.w3.org/2001/vcard-rdf/3.0#'>
      <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>

      <rdf:Description rdf:about="http://somewhere/RebeccaSmith/">
        <vCard:FN>Becky Smith</vCard:FN>
        <vCard:N rdf:parseType="Resource">
        <vCard:Family>Smith</vCard:Family>
        <vCard:Given>Rebecca</vCard:Given>
        </vCard:N>
      </rdf:Description>

      <rdf:Description rdf:about="http://somewhere/SarahJones/">
        <vCard:FN>Sarah Jones</vCard:FN>
        <vCard:N rdf:parseType="Resource">
        <vCard:Family>Jones</vCard:Family>
        <vCard:Given>Sarah</vCard:Given>
        </vCard:N>
      </rdf:Description>

      <rdf:Description rdf:about="http://somewhere/MattJones/">
        <vCard:FN>Matt Jones</vCard:FN>
        <vCard:N vCard:Family="Jones" vCard:Given="Matthew"/>
      </rdf:Description>

    </rdf:RDF>
    查询的语句为:
    String queryStr=
    "PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#>"+
    "select ?resource ?p "+"where { "+"?resource ?p \"Smith\" "+" }";
    输出的结果却为:
    ( ?res = _:b0 ) ( ?p = <http://www.w3.org/2001/vcard-rdf/3.0#Family> )
    ( ?res = _:b1 ) ( ?p = <http://www.w3.org/2001/vcard-rdf/3.0#Family> )
    请问:我如何得到resource的链接呢?应该是这两条链接:
    http://somewhere/JohnSmith/
    http://somewhere/RebeccaSmith/


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/9 18:47:00
     
     Roger_ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:10
      积分:177
      门派:XML.ORG.CN
      注册:2009/4/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roger_发送一个短消息 把Roger_加入好友 查看Roger_的个人资料 搜索Roger_在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roger_的博客2
    发贴心情 
    只看第一个人
      <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的话
    可以这么改(只写SPARQL)
    ....
    SELECT ?url
    WHERE{
    ?resource vCard:FN "Smith".
    ?url vCard:N ?resource.}

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/9 20:05:00
     
     senvenstars 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:71
      门派:XML.ORG.CN
      注册:2007/8/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给senvenstars发送一个短消息 把senvenstars加入好友 查看senvenstars的个人资料 搜索senvenstars在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看senvenstars的博客3
    发贴心情 
    谢谢回复!按你的方法得到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?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/9 20:30:00
     
     senvenstars 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:71
      门派:XML.ORG.CN
      注册:2007/8/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给senvenstars发送一个短消息 把senvenstars加入好友 查看senvenstars的个人资料 搜索senvenstars在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看senvenstars的博客4
    发贴心情 
    还有一个问题。结果的输出是源于这句话的存在<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时间不久,对它的语法了解的还不够
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/9 20:44:00
     
     Roger_ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:10
      积分:177
      门派:XML.ORG.CN
      注册:2009/4/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roger_发送一个短消息 把Roger_加入好友 查看Roger_的个人资料 搜索Roger_在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roger_的博客5
    发贴心情 
    以下是引用senvenstars在2009-5-9 20:44:00的发言:
    还有一个问题。结果的输出是源于这句话的存在<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时间不久,对它的语法了解的还不够


    我觉得应该先把所给的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/">
         <vCard:FN>Sarah</vCard:FN>
    </rdf:Description>
    查询很简单
    ...
    where{
    ?url vCard:FN "Sarah".}

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/10 21:38:00
     
     Roger_ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:10
      积分:177
      门派:XML.ORG.CN
      注册:2009/4/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roger_发送一个短消息 把Roger_加入好友 查看Roger_的个人资料 搜索Roger_在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roger_的博客6
    发贴心情 
    以下是引用senvenstars在2009-5-9 20:30:00的发言:
    谢谢回复!按你的方法得到uri了。
    不过按我贴的代码运行还是和我贴出的结果一样,和你说的输出结果不一样,不知是什么原因



    说一下你的代码为什么得不到所需要的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里,当然是可操作的吧
    Resource r=(Resource)res.next()

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/10 21:47:00
     
     Roger_ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:10
      积分:177
      门派:XML.ORG.CN
      注册:2009/4/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roger_发送一个短消息 把Roger_加入好友 查看Roger_的个人资料 搜索Roger_在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roger_的博客7
    发贴心情 
    [url]http://www.w3.org/TR/rdf-sparql-query/[/url]
    w3c给的sparql的英文说明文档
    当然你可以GOOGLE查询中文的sparq说明文档
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/10 21:54:00
     
     lghlrjzhx 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:110
      门派:XML.ORG.CN
      注册:2008/9/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lghlrjzhx发送一个短消息 把lghlrjzhx加入好友 查看lghlrjzhx的个人资料 搜索lghlrjzhx在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lghlrjzhx的博客8
    发贴心情 
    请教楼主,如何用sparql api在eclipse中查询的,我正在学习SPARQL,只能够在命令行里进行,苦苦寻求在eclipse里运行sparql。请问楼主你的这些查询语句在eclipse的那个目录下输入的?是新建的文件里输入吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/9 23:13:00
     
     Roger_ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:10
      积分:177
      门派:XML.ORG.CN
      注册:2009/4/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Roger_发送一个短消息 把Roger_加入好友 查看Roger_的个人资料 搜索Roger_在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Roger_的博客9
    发贴心情 
    我记得 jena 提供了两种方法输入SPARQL语句
    可以在代码里写,也可以先放到文件里,然后导入
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/10 9:28:00
     
     lghlrjzhx 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:110
      门派:XML.ORG.CN
      注册:2008/9/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lghlrjzhx发送一个短消息 把lghlrjzhx加入好友 查看lghlrjzhx的个人资料 搜索lghlrjzhx在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lghlrjzhx的博客10
    发贴心情 
    9楼的 Roger_ 大哥,请你详细指点一下吧,你说 “在代码里写”,是在 Arq examples 目录下选一个来更改代码,还是新建一个类 包为Arq.examples ,然后在里面输入代码吗?
    2 也可以先放到文件里,然后导入;先放在.rq 文件里吗?导入是导 “常规”下的“文件系统”吗

    好想加你为QQ好友,多多交流 我的QQ 309343681 我在四川大学学习

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/10 23:24:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/20 2:22:14

    本主题贴数10,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    139.648ms