DebugQueries: Difference between revisions

(→‎Unlinked Resources: update to exclude the Resource dummy item)
 
(8 intermediate revisions by 2 users not shown)
Line 18: Line 18:
   service wikibase:label { bd:serviceParam wikibase:language "en" }
   service wikibase:label { bd:serviceParam wikibase:language "en" }
}
}
}}
== Duplicates ==
Returns a list of items that have the exact same label.
''Note: query might take a while.''
{{SPARQL2|query=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?i ?i2
WHERE {
  ?i rdfs:label ?iLabel. # Select all item with labels
  ?i2 rdfs:label ?i2Label.
 
  FILTER (str(?iLabel) = str(?i2Label)). # Only items with same label
  FILTER (?i != ?i2).
 
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}
}}
}}


Line 32: Line 52:
}
}
order by asc(UCASE(str(?itemLabel)))
order by asc(UCASE(str(?itemLabel)))
}}
== Language Labels ==
'''Returns the english or german labels for all items.'''
Items should all have a english label and can have an optional german label.
This query can also be used to check if items are missing labels in a language. ''See explanatory comments in query''.
{{SPARQL2|query=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?i ?label_en ?label_de
WHERE {
  ?i rdfs:label ?label. # Select all item with labels.
 
  OPTIONAL {?i rdfs:label ?label_en filter (lang(?label_en) = "en").}
  # Remove OPTIONAL here to get items with en label and optional de label
 
  OPTIONAL {?i rdfs:label ?label_de filter (lang(?label_de) = "de").}
  # Remove OPTIONAL here to get items with de label and optional en label
} order by ?label_en
}}
}}


Line 64: Line 106:
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?source ?sourceLabel ?resource ?resourceLabel
SELECT DISTINCT ?resource ?resourceLabel ?url ?type ?typeLabel
WHERE {
WHERE {
   # select all resources (they have urls)
   # select all resources (they have urls)
   ?source wdt:P20 ?url. # 151
   ?resource wdt:P20 ?url. # 151
   MINUS {  
   MINUS {  
     ?dependency wdt:P21 ?source
     ?dependency wdt:P21 ?resource.
   }
   }
  MINUS {?resource rdfs:label "Resource"@en.} # rm the Dummy-Item Resource (Q446)
  OPTIONAL { ?resource wdt:P3 ?type }
    
    
   service wikibase:label { bd:serviceParam wikibase:language "en". }
   service wikibase:label { bd:serviceParam wikibase:language "en". }
Line 232: Line 276:
== Orphans ==
== Orphans ==
'''Returns all items that have no Properties.''' Excludes all Property-Items, such as [[Property:P1|depends on]]
'''Returns all items that have no Properties.''' Excludes all Property-Items, such as [[Property:P1|depends on]]
{{#widget:SPARQLquery|code=
{{SPARQL2|query=
#defaultView:Table
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
Line 240: Line 284:


   ?item rdfs:label ?itemLabel. # Select all item with labels
   ?item rdfs:label ?itemLabel. # Select all item with labels
  #MINUS {?item wdt:P1 [].} # one by one
  # Remove all items that have a propery
   MINUS {?item ?predicate ?value.
   MINUS {?item ?predicate ?value.
         ?property wikibase:directClaim ?predicate}
         ?property wikibase:directClaim ?predicate}
Line 298: Line 340:


= Miscellaneous =
= Miscellaneous =
== Circle Dependency ==
== Circular Dependencies ==
'''Returns items that link back towards each other''', creating a circle dependency.
'''Returns items that directly link back towards each other''', creating a circular dependency.
(Circular dependencies with larger radii are not found with this query)
 
{{#widget:SPARQLquery|code=
{{#widget:SPARQLquery|code=
#defaultView:Graph
#defaultView:Graph
Line 325: Line 369:
   service wikibase:label { bd:serviceParam wikibase:language "en" }
   service wikibase:label { bd:serviceParam wikibase:language "en" }
}
}
}}
== Tags ==
'''Returns all Tags that are attached to a Module(position).''' Query returns the german lable (change "de" to "en" in last row)
{{SPARQL2|query=
#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT
?module ?moduleLabel
?tag ?tagLabel ?rgb
WHERE {
  wd:Q790 wdt:P14 ?module.
  ?module wdt:P3 wd:Q791.
  ?module wdt:P14 ?position.
  OPTIONAL{?module wdt:P35 ?tag.}
  OPTIONAL{?position wdt:P35 ?tag.}
  BIND (IF(BOUND(?tag), "ffeec2","FFFFFF") as ?rgb)
 
  service wikibase:label { bd:serviceParam wikibase:language "de".}
}
}}
== CGBV 23SS categories ==
'''Returns a list of all categories used for the 23SS course of CGBV and all the items that are subclasses of those categories.''' Categories have been use in 23SS CGBV if they '''don't''' ''include'' any items.
{{SPARQL2|query=
#defaultView:Table
PREFIX wd: <https://graphit.ur.de/entity/>
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
SELECT ?category ?categoryLabel ?item ?itemLabel
WHERE {
  ?category wdt:P3 wd:Q169.
  wd:Q932 wdt:P14 ?category.
  # get items that link to category
  ?item wdt:P2 ?category.
 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} ORDER BY ASC(?categoryLabel)
}}
}}

Latest revision as of 13:02, 23 September 2024

This page contains several SPARQL-Queries to help debug the graph.

Useful Queries

A List of accessible queries, that are useful to understand the structure of the graph and identify problems, such as missing links. They can be changed as needed.

Backlinks

A query that finds all backlinks to a specific item.

Items used: Polygons (Q108)


#defaultView:Graph
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?subject ?subjectLabel ?item ?itemLabel { # ?property ?propertyLabel
  values (?item) {(wd:Q108)}
  ?subject ?predicate ?item .
  ?property wikibase:directClaim ?predicate
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


Duplicates

Returns a list of items that have the exact same label. Note: query might take a while.



#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?i ?i2
WHERE {

  ?i rdfs:label ?iLabel. # Select all item with labels
  ?i2 rdfs:label ?i2Label.
  
  FILTER (str(?iLabel) = str(?i2Label)). # Only items with same label
  FILTER (?i != ?i2).
  
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


All Items

Returns a list of all items and how they are categorized in alphabetical order. In this case categories are all items that are used to structure the graph, such as Article or Markers. This list can help spot duplicates or similiar items.



#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?item ?itemLabel {
  ?item ?predicate ?dependency.
  ?property wikibase:directClaim ?predicate
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}
order by asc(UCASE(str(?itemLabel)))

Try it!


Language Labels

Returns the english or german labels for all items. Items should all have a english label and can have an optional german label. This query can also be used to check if items are missing labels in a language. See explanatory comments in query.



#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?i ?label_en ?label_de
WHERE {

  ?i rdfs:label ?label. # Select all item with labels.
  
  OPTIONAL {?i rdfs:label ?label_en filter (lang(?label_en) = "en").}
  # Remove OPTIONAL here to get items with en label and optional de label
  
  OPTIONAL {?i rdfs:label ?label_de filter (lang(?label_de) = "de").}
  # Remove OPTIONAL here to get items with de label and optional en label
 
} order by ?label_en

Try it!



Missing Properties

Resources

No Resources

Returns all Items, that don't have any resource that they link to.

Unlinked Resources

Returns all resources, that have not been linked to any item yet.

Instance-less Resources

Returns all Resources that have no Property instance of.


Properties used: resource (P21), instance of (P3)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT ?resource ?resourceLabel ?instanceOf
WHERE {
  ?source wdt:P21 ?resource.
  MINUS {?resource wdt:P3 ?instanceOf}
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


No Subclass

Returns all Items, that don't have a property subclass.


Properties used: depends on (P1), subclass of (P2)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?source ?sourceLabel ?subclass 
WHERE {
  ?source wdt:P1 ?dependency.
  MINUS {?source wdt:P2 ?class. }
  
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


No Dependencies

Returns all Items, that don't link any other items as dependency.

These items don't have a property depends on. This could mean, that they are the begining of a path.


Properties used: subclass of (P2), depends on (P1)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT ?source ?sourceLabel ?dependency
WHERE {

  ?source wdt:P2 ?class.
  MINUS {?source wdt:P1 ?dependency.}
  
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


No Links

Returns all Graph-items, that don't link to any other items and are not linked to in return. Does not return items used to structure the graph, such as Essential

No Description

Returns all items without a description.


Properties used: subclass of (P2)

PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?item ?itemLabel ?itemDescription
WHERE {
  ?item wdt:P2 ?class.
  MINUS {?item schema:description ?itemDescription }
  service wikibase:label { bd:serviceParam wikibase:language "en". }
}

Try it!


No Instance

Returns all items that have no Property instance of. Shows which items are not, e.g. Applications.


Properties used: subclass of (P2), instance of (P3)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?item ?itemLabel ?instance ?instanceLabel {
  
  ?item wdt:P2 ?class.
  optional { ?item wdt:P3 ?instance }
  # MINUS { ?item wdt:P3 ?instance } # Removes items with instance
  
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!



Access to Items

Queries that find items with specific proterties for an easier overview.

Quizzes

Returns all Items that are Quizzes.

Resources

Returns all Resources.


Properties used: url (P20)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?resource ?resourceLabel ?labelLength 
WHERE {
  ?resource wdt:P20 ?url.
  ?resource rdfs:label ?resourceLabel.
  BIND (strlen(str(?resourceLabel)) AS ?labelLength)
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


Labels

Returns the items with the longest Labels (50). Doesn't return Resources.

Here it could be useful to find shorter alias for the items, for easier viewing in a visualisation. Items used: Student (Q167)

Properties used: subclass of (P2), url (P20), instance of (P3)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?item ?itemLabel ?length ?alias { # ?property ?propertyLabel
  
  # ?item wdt:P2 ?class.
  ?item rdfs:label ?itemLabel.
  MINUS {?item wdt:P20 ?url}
  MINUS {?item wdt:P3 wd:Q167} # no Students
  BIND (strlen(str(?itemLabel)) AS ?length)
  OPTIONAL {?item skos:altLabel ?alias}
  
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}
ORDER BY DESC(strlen(str(?itemLabel))) LIMIT 50

Try it!


Orphans

Returns all items that have no Properties. Excludes all Property-Items, such as depends on



#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT ?item ?itemLabel ?property
WHERE {

  ?item rdfs:label ?itemLabel. # Select all item with labels
  MINUS {?item ?predicate ?value.
        ?property wikibase:directClaim ?predicate}
  MINUS {?item wikibase:directClaim ?property} # remove Properties
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


Categories

Returns all Categories and their sub-items. Items used: Category (Q169)

Properties used: instance of (P3), subclass of (P2)

#defaultView:Graph
#get all Items of a category
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?item ?itemLabel ?category ?categoryLabel {
  ?category wdt:P3 wd:Q169.
  ?item wdt:P2 ?category.
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


Sessions

Returns all Sessions, all Items that they include and the Course that includes them. Excludes all items that are resources. Items used: Quiz (Q162)

Properties used: includes (P14), url (P20), instance of (P3)

#defaultView:Graph
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?item ?itemLabel ?session ?sessionLabel ?course ?courseLabel ?edgeLabel
where {
  
  ?session wdt:P14 ?item.
  MINUS {?item wdt:P20 ?url.}
  MINUS {?session wdt:P3 wd:Q162.}

  service wikibase:label { bd:serviceParam wikibase:language "en".}
}

Try it!


Not in Sessions

Returns all items that are not (yet) part of a Session.


Miscellaneous

Circular Dependencies

Returns items that directly link back towards each other, creating a circular dependency. (Circular dependencies with larger radii are not found with this query)

Categories with Resources

Returns all Categories that link to resources. This could be a sign to create new items or find better item to properly link these resources to. Items used: Category (Q169)

Properties used: instance of (P3), resource (P21)

#defaultView:Graph
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
select distinct ?category ?categoryLabel ?resource ?resourceLabel { # ?property ?propertyLabel

  ?category wdt:P3 wd:Q169.
  ?category wdt:P21 ?resource.
  service wikibase:label { bd:serviceParam wikibase:language "en" }
}

Try it!


Tags

Returns all Tags that are attached to a Module(position). Query returns the german lable (change "de" to "en" in last row) Items used: Media informatics B.A. UR (Q790), Module (Q791)

Properties used: includes (P14), instance of (P3), has tag (P35)

#defaultView:Table
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
PREFIX wd: <https://graphit.ur.de/entity/>
SELECT DISTINCT
?module ?moduleLabel 
?tag ?tagLabel ?rgb
WHERE {
  wd:Q790 wdt:P14 ?module.
  ?module wdt:P3 wd:Q791.
  ?module wdt:P14 ?position.
  OPTIONAL{?module wdt:P35 ?tag.}
  OPTIONAL{?position wdt:P35 ?tag.}
  BIND (IF(BOUND(?tag), "ffeec2","FFFFFF") as ?rgb)
  
  service wikibase:label { bd:serviceParam wikibase:language "de".}
}

Try it!


CGBV 23SS categories

Returns a list of all categories used for the 23SS course of CGBV and all the items that are subclasses of those categories. Categories have been use in 23SS CGBV if they don't include any items.

Items used: Category (Q169), CGBV 24SS (Q932)

Properties used: instance of (P3), includes (P14), subclass of (P2)

#defaultView:Table
PREFIX wd: <https://graphit.ur.de/entity/>
PREFIX wdt: <https://graphit.ur.de/prop/direct/>
SELECT ?category ?categoryLabel ?item ?itemLabel
WHERE {
  ?category wdt:P3 wd:Q169.
  wd:Q932 wdt:P14 ?category.
  # get items that link to category
  ?item wdt:P2 ?category.
  
 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} ORDER BY ASC(?categoryLabel)

Try it!