SPARQL 入门教程

1.准备工作

1.1 下载ZIP

1222878-20181121173638839-1875504573.jpg

1.2 配置环境变量

1222878-20181121173649158-331006227.jpg

1.3 查询文件

2. 查询操作

2.1 普通查询
/**
 * 查询family为“Smith”的 GivenName
 */

// 前缀声明
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?givenName
WHERE
  { ?y  vcard:Family  "Smith" .
    ?y  vcard:Given  ?givenName .
  }

1222878-20181121173701204-1762060639.jpg

2.2 正则表达式查询
  • 语法:FILTER regex(?x, "pattern", [,"flags"])
  • "flags":是可选操作;
/**
 * 查找GivenName中含有“r”的结果
 */

// 前缀声明
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?g
WHERE
{
    ?y vcard:Given ?g .
    FILTER regex(?g, "r", "i")   // 其中“i”,对应“flags”,表示忽略大小写
}
2.3 OPTIONAL 操作
/**
 * 查询 name 字段,若 age 字段存在,也需要显示;
 */

// 前缀声明
PREFIX info:    <http://somewhere/peopleInfo#>
PREFIX vcard:   <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name ?age
WHERE 
 {
     ?person vcard:FN ?name .
     OPTIONAL { ?person info:age ?age } // 若 age 存在,则显示
 }

1222878-20181121173714742-709330974.jpg

2.4 OPTIONAL 和 FILTER 操作
/**
 * 查询 name 字段,若 age 字段存在,且大于24岁,则显示
 */

PREFIX info:    <http://somewhere/peopleInfo#>
PREFIX vcard:   <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name ?age
WHERE 
 {
     ?person vcard:FN ?name .
     OPTIONAL { ?person info:age ?age . FILTER ( ?age > 24 ) } // 若 age 存在,且大于24,则显示
 }

1222878-20181121173730641-516447008.jpg

/**
 * 查询 name 字段,只显示 age 字段存在,且大于24岁的
 */

PREFIX info:    <http://somewhere/peopleInfo#>
PREFIX vcard:   <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name ?age
WHERE 
 {
     ?person vcard:FN ?name .
     OPTIONAL { ?person info:age ?age . } // 若 age 存在,则显示
     FILTER ( ?age > 24 )                 // FILTER 独立于 OPTIONAL
 }

1222878-20181121173741332-510453917.jpg

/**
 * 查询 name 字段,若 age 字段存在,且大于24岁,或者不存在 age 字段的
 */

PREFIX info:    <http://somewhere/peopleInfo#>
PREFIX vcard:   <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name ?age
WHERE 
 {
     ?person vcard:FN ?name .
     OPTIONAL { ?person info:age ?age . } // 若 age 存在,则显示
     FILTER ( !bound(?age) || ?age > 24 )   
 }

1222878-20181121173750844-633719024.jpg

2.5 UNION 操作
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
PREFIX vCard:   <http://www.w3.org/2001/vcard-rdf/3.0#>

SELECT ?name1 ?name2
WHERE
 {
     { [] foaf:name ?name1 } UNION { [] vCard:FN ?name2 }
 }


参考资料:

转载于:https://www.cnblogs.com/linkworld/p/9996529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值