SPARQL 教程一

数据格式

  首先,我们需要明确查询的是什么数据。SPARQL 查询 RDF 图。RDF 图是一组三元组(Jena 将 RDF 图称为 “模型”,将三元组称为 “语句”,因为在设计 Jena API 之初就是这么称呼它们的)。

  重要的是要认识到,重要的是三元组,而不是序列化。序列化只是写下三元组的一种方式。RDF/XML 是 W3C 推荐的方式,但在序列化形式下很难看到三元组,因为有多种方式可以对同一图形进行编码。 在本教程中,我们使用一种更 "类似于三元组 "的序列化,称为 Turtle(另见 W3C 语义网入门中描述的 N3 语言)。

  我们将从 vc-db-1.rdf 中的简单数据开始:该文件包含了许多关于人物的 vCard 描述的 RDF。vCard 在 RFC2426 中进行了描述,RDF 的转换方式在 W3C 的注释《在 RDF/XML 中表示 vCard 对象》中进行了说明。我们的示例数据库只包含一些姓名信息。

从图表上看,数据是这样的:

在这里插入图片描述
在三元组中,这可能是这样的

@prefix vCard:   <http://www.w3.org/2001/vcard-rdf/3.0#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix :        <#> .

<http://somewhere/MattJones/>
    vCard:FN    "Matt Jones" ;
    vCard:N     [ vCard:Family
                              "Jones" ;
                  vCard:Given
                              "Matthew"
                ] .

<http://somewhere/RebeccaSmith/>
    vCard:FN    "Becky Smith" ;
    vCard:N     [ vCard:Family
                              "Smith" ;
                  vCard:Given
                              "Rebecca"
                ] .

<http://somewhere/JohnSmith/>
    vCard:FN    "John Smith" ;
    vCard:N     [ vCard:Family
                              "Smith" ;
                  vCard:Given
                              "John"
                ] .

<http://somewhere/SarahJones/>
    vCard:FN    "Sarah Jones" ;
    vCard:N     [ vCard:Family
                              "Jones" ;
                  vCard:Given
                              "Sarah"
                ] .

或者更明确地说是三元组:

@prefix vCard:   <http://www.w3.org/2001/vcard-rdf/3.0#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://somewhere/MattJones/>  vCard:FN   "Matt Jones" .
<http://somewhere/MattJones/>  vCard:N    _:b0 .
_:b0  vCard:Family "Jones" .
_:b0  vCard:Given  "Matthew" .


<http://somewhere/RebeccaSmith/> vCard:FN    "Becky Smith" .
<http://somewhere/RebeccaSmith/> vCard:N     _:b1 .
_:b1 vCard:Family "Smith" .
_:b1 vCard:Given  "Rebecca" .

<http://somewhere/JohnSmith/>    vCard:FN    "John Smith" .
<http://somewhere/JohnSmith/>    vCard:N     _:b2 .
_:b2 vCard:Family "Smith" .
_:b2 vCard:Given  "John"  .

<http://somewhere/SarahJones/>   vCard:FN    "Sarah Jones" .
<http://somewhere/SarahJones/>   vCard:N     _:b3 .
_:b3 vCard:Family  "Jones" .
_:b3 vCard:Given   "Sarah" .

  RDF数据中使用的 :b0、:b1、_:b2 等形式的节点标识是用于表示匿名节点的一种方式。在RDF数据中,有时我们需要表示一些没有具体URI标识的节点,这些节点在数据中仅用于建立关系和连接。由于这些节点没有具体的URI,所以使用 _:b0 这样的形式来表示,其中 _ 是表示匿名节点的前缀,b0 是该节点的标识符。

  在RDF数据中,这些匿名节点通常用于描述复杂的关系或属性,而不需要给它们分配一个具体的URI。这种方式可以帮助简化数据表示,特别是当我们关注的是关系和连接时,而不是节点的具体标识。

  重要的是要认识到,这些都是同一个 RDF 图,图中的三元组没有特定的顺序。 它们只是以相关组的形式写在上面,供人类读者阅读,机器并不关心。

Jena 官方文档:https://jena.apache.org/tutorials/sparql_data.html

下一篇:简单查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值