mirror of
https://github.com/NexVeridian/wikidata-to-surrealdb.git
synced 2025-09-02 09:59:13 +00:00
58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
# filter.surql examples
|
|
## Delete entity and related claims, if entity doesn't have the claim, number of episodes property (P1113)
|
|
```
|
|
let $del = select claims, id from Entity
|
|
where claims.claims[where id = Property:1113].value.Thing == [];
|
|
|
|
let $entity = return (select id from $del).id;
|
|
let $claims = return (select claims from $del).claims;
|
|
|
|
delete $claims;
|
|
delete $entity;
|
|
```
|
|
|
|
# Create a view for media
|
|
```
|
|
DEFINE TABLE Media TYPE NORMAL AS
|
|
SELECT
|
|
*,
|
|
# Number of episodes
|
|
(claims.claims[WHERE id = Property:1113].value.ClaimValueData.Quantity.amount)[0] AS episodes,
|
|
# Part of the series (parent)
|
|
(claims.claims[WHERE id = Property:179].value.Thing)[0] AS parent,
|
|
# Has part(s) (children)
|
|
claims.claims[WHERE id = Property:527].value.Thing AS children
|
|
FROM Entity;
|
|
|
|
# Full-Text Search
|
|
DEFINE ANALYZER OVERWRITE blank_english TOKENIZERS blank FILTERS lowercase, ascii, snowball(english);
|
|
```
|
|
|
|
# Select for media
|
|
```
|
|
SELECT
|
|
*,
|
|
# number of episodes
|
|
(claims.claims[WHERE id = Property:1113].value.ClaimValueData.Quantity.amount)[0] AS episodes,
|
|
# part of the series
|
|
(claims.claims[WHERE id = Property:179].value.Thing)[0] AS parent,
|
|
# has part(s)
|
|
claims.claims[WHERE id = Property:527].value.Thing AS children
|
|
FROM Entity;
|
|
```
|
|
|
|
## Get number of episodes
|
|
```
|
|
let $number_of_episodes = (select claims.claims[where id = Property:1113][0].value.ClaimValueData.Quantity.amount as number_of_episodes from Entity where label = "Black Clover, season 1")[0].number_of_episodes;
|
|
|
|
return $number_of_episodes;
|
|
|
|
update Entity SET number_of_episodes=$number_of_episodes where label = "Black Clover, season 1";
|
|
```
|
|
|
|
## Get Parts
|
|
```
|
|
let $parts = (select claims.claims[where id = Property:527].value.Thing as parts from Entity where label = "Black Clover")[0].parts;
|
|
|
|
return $parts;
|
|
```
|