SPARQL 入門教程


1.准備工作

1.1 下載ZIP

1.2 配置環境變量

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 .
  }

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 存在,則顯示
 }

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,則顯示
 }

/**
 * 查詢 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
 }

/**
 * 查詢 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 )   
 }

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 }
 }

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM