add queries

This commit is contained in:
Babibubebon 2022-09-08 13:05:15 +09:00
parent 6f8be628dd
commit f2f392ce24
2 changed files with 40 additions and 1 deletions

View file

@ -177,4 +177,8 @@ Wikipediaのカテゴリは上記のようなクエリで汎用的に使うこ
他にも以下のようなカテゴリを使うことで、いわゆる「聖地」による作品のキュレーションとして活用することができます。 他にも以下のようなカテゴリを使うことで、いわゆる「聖地」による作品のキュレーションとして活用することができます。
- [`http://ja.dbpedia.org/resource/Category:湘南を舞台とした作品`](http://ja.dbpedia.org/resource/Category:湘南を舞台とした作品) - [`http://ja.dbpedia.org/resource/Category:湘南を舞台とした作品`](http://ja.dbpedia.org/resource/Category:湘南を舞台とした作品)
- [Wikipedia: Category:湘南を舞台とした作品](https://ja.wikipedia.org/wiki/Category:%E6%B9%98%E5%8D%97%E3%82%92%E8%88%9E%E5%8F%B0%E3%81%A8%E3%81%97%E3%81%9F%E4%BD%9C%E5%93%81)
- [`http://ja.dbpedia.org/resource/Category:京都府を舞台とした作品`](http://ja.dbpedia.org/resource/Category:京都府を舞台とした作品)
- [Wikipedia:
Category:京都府を舞台とした作品](https://ja.wikipedia.org/wiki/Category:%E4%BA%AC%E9%83%BD%E5%BA%9C%E3%82%92%E8%88%9E%E5%8F%B0%E3%81%A8%E3%81%97%E3%81%9F%E4%BD%9C%E5%93%81)

View file

@ -303,7 +303,42 @@ WHERE {
schema:actor ?actors . schema:actor ?actors .
VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries} VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries}
FILTER(LANG(?seriesName) = "") FILTER(LANG(?seriesName) = "")
# タイトルがキャラクター名と同じ
FILTER(REGEX(?actors, CONCAT("【", ?seriesName ,"】"))) FILTER(REGEX(?actors, CONCAT("【", ?seriesName ,"】")))
} }
{{< / yasgui-query >}} {{< / yasgui-query >}}
### 新海誠さんの参加作品を取得する {#anime-staff-name}
`schema:contributor` の値として以下のような形式で記述されていることを利用し、正規表現を用いて検索します。
```
[役割名]スタッフ名 [役割名]スタッフ名 ...
```
{{< yasgui-query yasgui-id="madb-lod" title="新海誠さんの参加作品を取得する" >}}
PREFIX schema: <https://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX class: <https://mediaarts-db.bunka.go.jp/data/class#>
SELECT
?series ?seriesName (GROUP_CONCAT(DISTINCT ?role) AS ?roles)
WHERE {
?series a ?animeColClasses ;
schema:name ?seriesName ;
schema:genre ?genre ;
^schema:isPartOf ?item .
VALUES ?animeColClasses {class:AnimationTVRegularSeries class:AnimationTVSpecialSeries class:AnimationMovieSeries}
{
?series schema:contributor ?contributers .
} UNION {
?item schema:contributor ?contributers .
}
FILTER(LANG(?seriesName) = "")
FILTER(REGEX(?contributers, "新海[\\s ]*誠"))
# 役割名だけを抽出する
BIND(REPLACE(?contributers, ".*\\[(.+?)\\]新海[\\s ]*誠.*", "$1") AS ?role)
}
GROUP BY ?series ?seriesName
{{< / yasgui-query >}}