簡體   English   中英

dc:SPARQL中的創建者字符串文字與regex FILTER

[英]dc:Creator string literal vs. regex FILTER in SPARQL

我正在使用Europeana的Virtuoso SPARQL端點

我一直在嘗試在SPARQL中搜索有關特定貢獻者的內容。 據我了解,這可以通過以下方式進行:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title 
WHERE {
     ?objectInfo dc:title ?title .
     ?objectInfo dc:creator 'Picasso' .

}

盡管如此,我卻一無所獲。

另外,我使用FILTER正則表達式搜索文字。

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title ?creator
WHERE {
     ?objectInfo dc:title ?title .
     ?objectInfo dc:creator ?creator .
     FILTER regex(?creator, 'Picasso')
}

這實際上效果很好,並正確返回了結果。

我的問題是:是否可以在不使用FILTER來搜索特定藝術家的作品的情況下產生SPARQL查詢?

非常感謝。

我認為實際上沒有任何對象帶有“ Picasso”。 因此,正則表達式過濾器是一個不錯的選擇,但速度較慢。

這是查找正則表達式匹配的字符串的方法:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?creator, (count(?creator) as ?ccount)
WHERE {
     ?objectInfo dc:title ?title .
     ?objectInfo dc:creator ?creator .
     FILTER regex(?creator, 'Picasso')
}
group by ?creator
order by ?ccount

如果您已經在select語句中顯示了所有變量,則可能更容易看到:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT *
WHERE {
     ?objectInfo dc:title ?title .
     ?objectInfo dc:creator ?creator .
     FILTER regex(?creator, 'Picasso')
}

如果您不想使用正則表達式過濾器,則可以枚舉您要查找的所有Picasso變體:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT *
WHERE {
         values ?creator { "Picasso, Pablo" "Pablo Picasso" } .
         ?objectInfo dc:title ?title .
         ?objectInfo dc:creator ?creator
    }

bif:contains可在此端點上運行,並且速度非常快:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT *
WHERE {
     ?objectInfo dc:title ?title .
     ?objectInfo dc:creator ?creator .
     ?creator bif:contains 'Picasso'
     #FILTER regex(?creator, 'Picasso')
}

1)您的第一個查詢具有未連接的三重模式。

2)我猜並根據詞匯描述dc:creator需要一個資源,即URI。 使用實體畢加索的URI不起作用?

+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| Term Name: creator |                                                                                                                                                |
| URI:               | http://purl.org/dc/elements/1.1/creator                                                                                                        |
| Label:             | Creator                                                                                                                                        |
| Definition:        | An entity primarily responsible for making the resource.                                                                                       |
| Comment:           | Examples of a Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity. |
+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+

最好查看您的數據,以便確定是否需要使用文字過濾器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM