Help:Copyrights/maintenance

From Wikidata
Jump to navigation Jump to search
Page with database queries used for addition and maintenance of copyright statements. Please add and improve queries if necessary.

Adding new copyright statements to items that have none[edit]

Items without copyright statement to which we can add one based on other properties

paintings who's author died more than 100 years ago[edit]

SELECT DISTINCT ?item (YEAR(?dod) as ?year)
WHERE {
  ?item wdt:P31 wd:Q3305213 .
  MINUS { ?item wdt:P6216 [] } .
  ?item wdt:P170/wdt:P570 ?dod .
  FILTER(YEAR(?dod) < 1918)
}
Limit 20000
Try it!

Use the following QuickStatements commands:

Q????? P6216 Q19652 P1001 Q60332278 P459 Q29940705

to add

copyright status
Normal rank public domain
applies to jurisdiction countries with 100 years pma or shorter
determination method 100 years or more after author(s) death
0 references
add reference


add value

publications published before 1800[edit]

SELECT DISTINCT ?item (YEAR(?dop) as ?year) WHERE {
  # look for items of type "work" or "data" (or children)
  ?item wdt:P31/wdt:P279* ?pq . 
  VALUES ?pq { wd:Q386724  wd:Q42848 } 
  # get date of publication and make sure is old enough that all the creators are dead for more than 100 years.
  ?item wdt:P577 ?dop . 
  hint:Prior hint:rangeSafe true .
  FILTER (?dop < "1800-01-01T00:00:01"^^xsd:dateTime)
  FILTER NOT EXISTS { ?item wdt:P6216 [] }   # item does not have P6216 yet
}
Try it!

Use the following QuickStatements commands:

Q????? P6216 Q19652 P1001 Q30 P459 Q47246828
Q????? P6216 Q15687061 P1001 Q60332278 P459 Q29940705

To add

publications published before 1924[edit]

SELECT DISTINCT ?item (YEAR(?dop) as ?year) WHERE {
  # look for items of type "work" or "data" (or children)
  ?item wdt:P31/wdt:P279* ?pq . 
  VALUES ?pq { wd:Q386724  wd:Q42848 } 
  # get year of publication 
  ?item p:P577 ?statement .
  ?statement psv:P577 [
                wikibase:timePrecision "9"^^xsd:integer ;
                wikibase:timeValue ?dop ;
  ] .
  hint:Prior hint:rangeSafe true .
  FILTER (?dop < "1925-00-00T00:00:00"^^xsd:dateTime)
  FILTER NOT EXISTS { ?item wdt:P6216 [] }   # item does not have P6216 yet
} limit 20000
Try it!

paintings created before 1800[edit]

For works created before 1800, we can assume that that all the creators died more than 100 years ago.

SELECT DISTINCT ?item (YEAR(?date) as ?year) WHERE {
  ?item wdt:P31 wd:Q3305213 .
  ?item wdt:P571 ?date . 
  hint:Prior hint:rangeSafe true .
  FILTER (?date < "1800-01-01T00:00:01"^^xsd:dateTime)
  FILTER NOT EXISTS { ?item wdt:P6216 [] }   # item does not have P6216 yet
}
Try it!

Use the following QuickStatements commands:

Q????? P6216 Q19652 P1001 Q60332278 P459 Q29940705

to add

works which were published more than 95 years ago and whose author died more than 100 years ago[edit]

SELECT ?item ?itemLabel ?mdod with 
{ select DISTINCT ?item WHERE 
  {
    # look for items of type "work" or "data" (or children)
    ?item wdt:P31/wdt:P279* ?pq . 
    VALUES ?pq { wd:Q386724  wd:Q42848 } 
    # get date of publication and make sure is before 1924
    ?item wdt:P577 ?dop . 
    hint:Prior hint:rangeSafe true .
    FILTER (?dop < "1925-00-00T00:00:01"^^xsd:dateTime)
    FILTER NOT EXISTS { ?item wdt:P6216 [] }  # item does not have P6216 yet
  } } as %i with {
select ?item (max(?dod) as ?mdod) where  
{ # look through all the authors and other creators of the work and look up their date of death, than find the latest
  include %i  
  ?item wdt:P50|wdt:P170|wdt:P655|wdt:P84|wdt:P110|wdt:P287|wdt:P98|wdt:P86|wdt:P87|wdt:p57|wdt:P676 ?creator .
  ?creator wdt:P570 ?dod .
} group by ?item  } as %j
where
{
  include %j
  hint:Prior hint:rangeSafe true .
  FILTER(?mdod < "1918-00-00T00:00:00"^^xsd:dateTime) . # make sure last creator date of death is before 1918
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!


Use the following QuickStatements commands:

Q????? P6216 Q19652 P1001 Q30 P459 Q47246828
Q????? P6216 Q15687061 P1001 Q60332278 P459 Q29940705

To add

Expanding existing copyright statements[edit]

works without proper qualifiers whos creators died more than 100 years ago[edit]

SELECT ?item ?itemLabel ?mdod with 
{ select DISTINCT ?item WHERE 
  {
	?item wdt:P6216 ?copyright .
	VALUES ?copyright { wd:Q19652 wd:Q15687061 } 
    hint:Prior hint:rangeSafe true .
	FILTER NOT EXISTS { ?item p:P6216/pq:P1001 wd:Q60332278} # exclude if P1001 for USA present
	FILTER NOT EXISTS { ?item p:P6216/pq:P459  wd:Q29940705} # exclude if P459  for PD-1923 present
  } } as %i with {
select ?item (max(?dod) as ?mdod) where  
{ # look through all the authors and other creators of the work and look up their date of death, than find the latest
  include %i  
  ?item wdt:P50|wdt:P170|wdt:P655|wdt:P84|wdt:P110|wdt:P287|wdt:P98|wdt:P86|wdt:P87|wdt:p57|wdt:P676 ?creator .
  ?creator wdt:P570 ?dod .
} group by ?item  } as %j
where
{
  include %j
  hint:Prior hint:rangeSafe true .
  FILTER(?mdod < "1920-00-00T00:00:00"^^xsd:dateTime) . # make sure last creator date of death is before 1918
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

works without proper qualifiers which were published more than 95 years ago[edit]

Count them
SELECT (count( ?item ) as ?cnt)  {
	?item wdt:P6216 ?copyright .
	VALUES ?copyright { wd:Q19652 wd:Q15687061 }  # P6216 main value = public domain
	?item wdt:P577 ?dop . 
	FILTER(YEAR(?dop) < 1924)              # exclude if date of publication < 1924
	FILTER NOT EXISTS { ?item p:P6216/pq:P1001 wd:Q30}        # exclude if P1001 for USA present
	FILTER NOT EXISTS { ?item p:P6216/pq:P459  wd:Q47246828 } # exclude if P459  for PD-1923 present
	SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
Try it!
Find them
SELECT distinct ?item  ?itemLabel {
	?item wdt:P6216 ?copyright .
	VALUES ?copyright { wd:Q19652 wd:Q15687061 }  # P6216 main value = public domain
	?item wdt:P577 ?dop . 
	FILTER(YEAR(?dop) < 1924)              # exclude if date of publication < 1924
	FILTER NOT EXISTS { ?item p:P6216/pq:P1001 wd:Q30}        # exclude if P1001 for USA present
	FILTER NOT EXISTS { ?item p:P6216/pq:P459  wd:Q47246828 } # exclude if P459  for PD-1923 present
	SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} LIMIT 100
Try it!

Finding items with incorrect copyright statements[edit]

Find items where one of the authors is dead less than 100 years while claiming 100 year pma[edit]

SELECT distinct ?item  ?itemLabel ?creatorLabel ?dod{
	?item wdt:P50|wdt:P170|wdt:P655|wdt:P84|wdt:P110|wdt:P287|wdt:P98|wdt:P86|wdt:P87|wdt:p57|wdt:P676 ?creator .
	?creator wdt:P570 ?dod 
	FILTER(YEAR(?dod) > 1918)            # exclude if date of death < 1919
	?item p:P6216/pq:P1001 wd:Q60332278 .
	?item p:P6216/pq:P459  wd:Q29940705 .
	MINUS {?item p:P6216/pq:P518 []} .
	SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} 
Order by ?creatorLabel
LIMIT 100
Try it!

Find items without listed authors while claiming 100 year pma[edit]

For anything created more than 200 years ago, we can assume that authors are dead for at least 100 years.

SELECT distinct ?item  ?itemLabel ?date {
	# items claiming 100 year pma
	?item p:P6216/pq:P1001 wd:Q60332278 .
	?item p:P6216/pq:P459  wd:Q29940705 . 

	# assume authors dead for more than 100 years if published or created more than 200 years ago
	?item wdt:P571|wdt:P577 ?date
	FILTER (?date > "1819-01-01T00:00:01"^^xsd:dateTime) 

	# skip if authors listed
	MINUS {?item wdt:P50|wdt:P170|wdt:P655|wdt:P84|wdt:P110|wdt:P287|wdt:P98|wdt:P86|wdt:P87|wdt:P57|wdt:P676 []} . 
	SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} 
LIMIT 200
Try it!

Find items where one of the authors is dead less than 70 years while claiming 70 year pma[edit]

SELECT distinct ?item  ?itemLabel ?creatorLabel ?dod{
	?item wdt:P50|wdt:P170|wdt:P655|wdt:P84|wdt:P110|wdt:P287|wdt:P98|wdt:P86|wdt:P87|wdt:p57|wdt:P676 ?creator .
	?creator wdt:P570 ?dod 
	FILTER(YEAR(?dod) > 1948)            # exclude if date of death < 1919
	?item p:P6216/pq:P1001 wd:Q59542795 .
	?item p:P6216/pq:P459  wd:Q29870196 .
	MINUS {?item p:P6216/pq:P518 []} .
	SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
} 
Order by ?creatorLabel
LIMIT 100
Try it!

Find items using something that is not a copyright determination method as a determination method[edit]

# Find items using something that is not a copyright determination method as a determination method
SELECT ?item ?itemLabel ?method WHERE {
  ?item p:P6216 [
    pq:P459 ?method
  ].
  MINUS {
    ?method wdt:P31 wd:Q61005213
  }
#   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

Finding items with incomplete copyright statements[edit]

Items with copyright statements but without any qualifiers[edit]

SELECT distinct ?item  ?itemLabel {
	?item p:P6216 ?statement .
	?statement ps:P6216 ?pd .                    # get P6216 main value
	VALUES ?pd { wd:Q19652 wd:Q15687061 }        # P6216 main value = public domain
  	FILTER NOT EXISTS { ?statement pq:P1001 [] } # exclude if P1001 present
 	FILTER NOT EXISTS { ?statement pq:P459  [] } # exclude if P459  present
  	SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} LIMIT 1000
Try it!
SELECT ?item 
WHERE {
	?item p:P6216 ?statement .
	?statement ps:P6216 wd:Q19652 .                    # copyright status = public domain
	OPTIONAL {?statement pq:P459  ?p .} .
	OPTIONAL {?statement pq:P1001 ?q } .
	FILTER( !BOUND( ?p ) ) . # exclude if P459 qualifier present
	FILTER( !BOUND( ?q ) ) . # exclude if P1001 qualifier present
} order by ?det
LIMIT 1000
Try it!

Items with copyright statements missing applies to jurisdiction (P1001) statement[edit]

Public domain items with determination method (P459) but missing applies to jurisdiction (P1001) statement

SELECT ?item ?itemLabel ?det ?detLabel 
WHERE {
	?item p:P6216 ?statement .
	?statement ps:P6216 ?pd .                    # copyright status = public domain
	VALUES ?pd { wd:Q19652 wd:Q15687061 } 
	OPTIONAL {?statement pq:P459 ?det .} .
	#FILTER NOT EXISTS { ?statement pq:P1001 [] } 
	OPTIONAL { ?statement pq:P1001 ?q } .
	FILTER( !BOUND( ?q ) ) . # exclude if P1001 qualifier present
	SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } .
} order by ?det
LIMIT 1000
Try it!

Items with copyright statements missing determination method (P459) statement[edit]

Public domain items with applies to jurisdiction (P1001) but missing determination method (P459) statement

SELECT distinct ?item ?itemLabel 
WHERE {
	?item p:P6216 ?statement .
	?statement ps:P6216 ?pd .                    # copyright status = public domain
	VALUES ?pd { wd:Q19652 wd:Q15687061 } 
	OPTIONAL {?statement pq:P1001 ?det .} .      # record jurisdiction if present
	FILTER NOT EXISTS { ?statement pq:P459 [] }  # item missing "determination method" statement
	SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } .
}
LIMIT 1000
Try it!

Other Maintenance[edit]

Unique qualifier combinations for public domain items[edit]

Inspect unique applies to jurisdiction (P1001) and determination method (P459) pair combinations for public domain items. Unusual combinations might indicate errors.

SELECT ?jLabel ?dLabel ?num ?sampleitem with 
{
  SELECT distinct ?j ?d (count(*) as ?num) (SAMPLE(?item) as ?sampleitem) where
  {
    ?item p:P6216 ?statement .
    ?statement ps:P6216 ?pd .                    # copyright status = public domain
    ?statement pq:P1001 ?j .
    ?statement pq:P459  ?d .
    VALUES ?pd { wd:Q19652 wd:Q15687061 } 
    
} group by ?j ?d } as %i
where
{
  include %i
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
order by desc(?num)
Limit 1000
Try it!

Unique qualifier combinations for copyrighted items[edit]

Inspect unique copyright license (P275), applies to jurisdiction (P1001) and determination method (P459) combinations for public domain items. Unusual combinations might indicate errors.

SELECT ?jLabel ?dLabel ?lLabel ?num ?sampleitem with 
{
  SELECT distinct ?j ?d ?l (count(*) as ?num) (SAMPLE(?item) as ?sampleitem) where
  {
    ?item p:P6216 ?statement .
    ?statement ps:P6216 wd:Q50423863 .                    # copyright status = copyrighted
    optional { ?statement pq:P1001 ?j . }
    optional { ?statement pq:P459  ?d . } 
    optional { ?statement pq:P275  ?l . } 
} group by ?j ?d ?l} as %i
where
{
  include %i
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
order by desc(?num)
Limit 1000
Try it!