PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?school ?schoolLabel WHERE {
  wd:Q127417 wdt:P69 ?school .
  ?school rdfs:label ?schoolLabel .
  FILTER ( LANG( ?schoolLabel ) = "en" )
}

Using entities:
- Douglas MacArthur (wd:Q127417), also known as D. MacArthur, General Douglas MacArthur, General MacArthur, MacArthur: has occupation military officer / has occupation officer / has occupation army officer / is instance of human / United States Army general in WWI, WWII and Korea (1880–1964) / Untied States Army general in WWI, WWII, and Korea (1880-1964)

Using properties:
- educated at (wd:P69 as wdt), also known as alma mater, alumna of, alumni of, alumnus of, attended, etc.: is subproperty of affiliation / educational institution attended by subject / educational institution attended by the subject / educational institution attended by the subject

Got 3 rows and 2 columns:
| school                                                             | schoolLabel                                                    |
| ------------------------------------------------------------------ | -------------------------------------------------------------- |
| United States Army Command and General Staff College (wd:Q1115050) | United States Army Command and General Staff College (lang:en) |
| Milwaukee High School of the Arts (wd:Q6861744)                    | Milwaukee High School of the Arts (lang:en)                    |
| United States Military Academy (wd:Q9219)                          | United States Military Academy (lang:en)                       |

Answer: Douglas MacArthur attended the United States Military Academy (West Point), Milwaukee High School of the Arts, and the United States Army Command and General Staff College. The most notable of these is the United States Military Academy.

Douglas MacArthur attended the United States Military Academy (West Point), Milwaukee High School of the Arts, and the United States Army Command and General Staff College. The most notable of these is the United States Military Academy.

SPARQL query over wikidata:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?school ?schoolLabel WHERE {
  wd:Q127417 wdt:P69 ?school .
  ?school rdfs:label ?schoolLabel .
  FILTER ( LANG( ?schoolLabel ) = "en" )
}

Using entities:
- Douglas MacArthur (wd:Q127417), also known as D. MacArthur, General Douglas MacArthur, General MacArthur, MacArthur: has occupation military officer / has occupation officer / has occupation army officer / is instance of human / United States Army general in WWI, WWII and Korea (1880–1964) / Untied States Army general in WWI, WWII, and Korea (1880-1964)

Using properties:
- educated at (wd:P69 as wdt), also known as alma mater, alumna of, alumni of, alumnus of, attended, etc.: is subproperty of affiliation / educational institution attended by subject / educational institution attended by the subject / educational institution attended by the subject

Execution result:
Got 3 rows and 2 columns:
| school                                                             | schoolLabel                                                    |
| ------------------------------------------------------------------ | -------------------------------------------------------------- |
| United States Army Command and General Staff College (wd:Q1115050) | United States Army Command and General Staff College (lang:en) |
| Milwaukee High School of the Arts (wd:Q6861744)                    | Milwaukee High School of the Arts (lang:en)                    |
| United States Military Academy (wd:Q9219)                          | United States Military Academy (lang:en)                       |

[System]
You are a question answering assistant. Your job is to generate a SPARQL query to answer a given user question.

You should follow a step-by-step approach to generate the SPARQL query:
1. Determine possible entities and properties implied by the user question.
2. Search for the entities and properties in the knowledge graphs. Where applicable, constrain the searches with already identified entities and properties.
3. Gradually build up the SPARQL query using the identified entities and properties. Start with simple queries and add more complexity as needed. Execute intermediate queries to get feedback and to verify your assumptions. You may need to refine or rethink your current plan based on the query results and go back to step 2 if needed, possibly multiple times.
4. Use the answer or cancel function to finalize your answer and stop the generation process.

Available knowledge graphs:
- wikidata at http://localhost:7001 with prefix index for entities and similarity index for properties, and notes:
  - P106 = occupation. Use wdt:P106 to get occupations and fetch English labels with rdfs:label + FILTER(LANG(?label)="en"). When returning human occupations confirm the subject is human (wdt:P31 wd:Q5) to avoid non-human items.
  - Population (P1082) and tabular (P4179): use wdt:P1082 for quick/direct values; for time-series/point-in-time use p:P1082 + ps:P1082 + pq:P585 and ORDER BY pq:P585 DESC. Inspect statement qualifiers (e.g., 'applies to part') and prov:wasDerivedFrom references (pr:P854 etc.) to detect city-proper vs metro/prefecture scopes before using values.
  - Common person properties: P31 (instance of human Q5), P106 (occupation), P569 (date of birth), P19 (place of birth), P27 (country of citizenship), P21 (sex/gender), P166 (award received). Use wdt: for direct values when possible.
  - P17 (country) can be incomplete/misleading for places (historical/overseas tags). To get modern cities in a country combine: instance-of city (P31=Q515) + wdt:P17 OR use wdt:P131* to find an admin parent whose wdt:P17 = the country. Also cross-check coordinates (P625) or admin hierarchy to spot outliers.
  - When filtering by date of birth (P569) use xsd:dateTime comparisons (e.g. >= "1900-01-01T00:00:00Z"^^xsd:dateTime). Be aware many items have year-only or imprecise dates and coverage is biased toward notable/public figures (sportspeople, politicians, artists).
  - To retrieve qualifiers (e.g., award year) use the statement/qualifier pattern: p:Pxxx / ps:Pxxx / pq:P585. Use wdt:Pxxx for normalized/direct values when you don't need qualifiers. Example: p:P166 + pq:P585 gives award year.
  - To get a person's occupations: use wdt:P106 for direct/normalized values and rdfs:label for human-readable names (FILTER(LANG(...))). Example: wd:Q... wdt:P106 ?occ . ?occ rdfs:label ?occLabel . FILTER(LANG(?occLabel)="en").
  - P166 = award received. Use wdt:P166 for normalized/direct values when you only need award items. To get award years or qualifiers use p:P166 / ps:P166 / pq:P585. Many statements lack pq:P585 — use OPTIONAL { ?stmt pq:P585 ?date } and ORDER BY DESC(?date). When listing award winners, filter ?person wdt:P31 wd:Q5 to ensure humans.
  - Population time-series pattern: wd:Q... p:P1082 ?stmt . ?stmt ps:P1082 ?pop . OPTIONAL { ?stmt pq:P585 ?date } . ORDER BY DESC(?date). pq:P585 is the point-in-time qualifier. IMPORTANT: time-series may mix scopes (city proper vs metro) — e.g., Tokyo has a 2016 entry ~38,140,000 likely metro vs smaller city figures. Inspect qualifiers/references for scope before use.
  - Use wdt:P131* to traverse the admin hierarchy and compare wdt:P17 on the place vs an admin parent to detect historical/colonial country assignments. When mismatches appear, inspect the admin parent's instance-of (P31), labels, qualifiers and references to interpret the historical scope.
  - wdt:P106 often yields multiple occupations for a person. Use GROUP_CONCAT(DISTINCT ?occLabel; separator=", ") or return multiple rows. Always fetch labels with rdfs:label + FILTER(LANG(?label)="en") to get readable occupation names.
  - When a search_entity returns multiple hits (person vs sculpture vs memorial), confirm you selected the human/statements by checking wdt:P31 (instance of) and relevant wdt: properties (e.g., wdt:P106). This avoids using a non-human QID by mistake.
  - search_autocomplete can be constrained with a SPARQL pattern containing ?search (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }). Use constraints to focus results (e.g., humans) and avoid ambiguous fallbacks; if it returns no results, fallback to search_entity and verify wdt:P31.
  - Use search_property_of_entity to find relevant properties for an entity (e.g., 'award' -> P166) and search_object_of_property to discover candidate objects (e.g., 'physicist' for P106). This reduces guessing P/Q ids and surfaces qualifiers.
  - Inspect statement references and qualifiers: use prov:wasDerivedFrom on p: statements to find sources, and check qualifiers (e.g., 'applies to part' or other scope qualifiers) to disambiguate city vs metro vs admin area. Reference labels can be empty; inspect reference node properties for URLs or publication dates.

Index types used for entities and properties:
- Prefix index: Retrieves items by overlap between query keywords and item words. The query keywords can match item words exactly or as prefixes.
- Similarity index: Retrieves items by cosine similarity between their embeddings and the query embedding.

General notes across knowledge graphs:
- Use rdfs:label + FILTER(LANG(?label)="en") for labels; avoid SERVICE wikibase:label. Use wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access statement qualifiers (e.g., award year via pq:P585). When dates matter, prefer xsd:dateTime and watch for year-only precision.
- Practical query patterns: use rdfs:label + FILTER(LANG(...)) for labels. Use wdt:Pxxx for direct/normalized values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (dates via pq:P585). For dates use xsd:dateTime and expect year-only precision. For places: combine P17 with P131 or coordinate (P625) filters to avoid historical/overseas mismatches.
- Use OPTIONAL for pq: qualifiers (e.g., pq:P585), sort by qualifier (ORDER BY pq:P585 DESC) to prefer recent values. Use GROUP_CONCAT to combine multiple labels/values in one row. Watch for typed literals (xsd:dateTime, xsd:decimal) when filtering or sorting.
- Before querying, use search_entity to resolve human-friendly names to wd:Q identifiers and verify instance-of (e.g., check wdt:P31 = wd:Q5 for humans) to avoid ambiguous matches. Prefer the top match but programmatically confirm P31 before using its data.
- Use search_property to confirm property identifiers (e.g., "country" -> P17) before embedding them in queries. This prevents mistakes from assuming an ID and helps pick the best property if multiple choices exist.
- search_autocomplete can fall back to an unconstrained search or error when there are too many candidates. If this happens (e.g., "more than the maximum supported number of subject candidates"), retry with narrower constraints such as instance-of (wdt:P31), additional type filters, or short prefixes to reduce the candidate set; otherwise fallback to search_entity and verify wdt:P31.
- Use list(...) to inspect all triples on an entity for exploration, but expect large results for notable items. Prefer wdt: properties or targeted p:/ps:/pq: patterns in SPARQL when you need normalized values or qualifiers, respectively.
- Before embedding property or item IDs in SPARQL, use search_property, search_property_of_entity, and search_object_of_property to discover the appropriate P/PID or object QIDs. This reduces errors from guessing IDs and surfaces better property alternatives and qualifiers.
- search_constrained and search_autocomplete can return no results for constrained queries or when the index is large. If they fail, fallback to search_entity + verify P31 (or use search_property_of_entity). Constrain with instance-of (wdt:P31) or other properties in the SPARQL to improve matches.
- When selecting awards by year, prefer xsd:dateTime range filters (e.g., >= "2001-01-01T00:00:00Z"^^xsd:dateTime && < "2002-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for portability and precision.
- When selecting award winners via wdt:P166, filter ?person wdt:P31 wd:Q5 to ensure humans — fictional characters or non-humans may have award claims. If you need award years use p:P166 / ps:P166 / pq:P585 and OPTIONAL { ?stmt pq:P585 ?year } to retrieve qualifier years.
- Use wdt:P625 (coordinates) together with wdt:P131* and wdt:P17 checks to validate a place's modern country or to filter by geography. When country labels mismatch historically, inspect admin parents and coordinates to resolve whether the item refers to historical/colonial scope or current boundaries.
- Prefer wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (e.g., pq:P585 for award year). Always fetch labels with rdfs:label + FILTER(LANG(?label) = "en").
- If search_autocomplete returns too many candidates or errors, retry with constraints (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }) or narrower query text. If still failing, fallback to search_entity and verify wdt:P31 for type checks.
- For award-year queries use p:P166 / ps:P166 / pq:P585 to access award statements and year qualifiers. Filter by xsd:dateTime ranges (e.g., >= "2020-01-01T00:00:00Z"^^xsd:dateTime && < "2021-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for robustness.
- Use search_property_of_entity to surface relevant properties for an entity (e.g., 'birth' -> P569/P19). list(...) can inspect triples but may return large results for notable items—prefer targeted wdt: patterns (wdt:Pxxx) or p:/ps:/pq: patterns when you need qualifiers.

SPARQL prefixes for use in function calls:
- bd: <http://www.bigdata.com/rdf#
- cc: <http://creativecommons.org/ns#
- data: <https://www.wikidata.org/wiki/Special:EntityData/
- dc: <http://purl.org/dc/elements/1.1/
- dct: <http://purl.org/dc/terms/
- foaf: <http://xmlns.com/foaf/0.1/
- geo: <http://www.opengis.net/ont/geosparql#
- geof: <http://www.opengis.net/def/function/geosparql/
- gn: <http://www.geonames.org/ontology#
- hint: <http://www.bigdata.com/queryHints#
- imdb: <https://www.imdb.com/
- math: <http://www.w3.org/2005/xpath-functions/math#
- ontolex: <http://www.w3.org/ns/lemon/ontolex#
- owl: <http://www.w3.org/2002/07/owl#
- p: <http://www.wikidata.org/prop/
- pq: <http://www.wikidata.org/prop/qualifier/
- pqn: <http://www.wikidata.org/prop/qualifier/value-normalized/
- pqv: <http://www.wikidata.org/prop/qualifier/value/
- pr: <http://www.wikidata.org/prop/reference/
- prn: <http://www.wikidata.org/prop/reference/value-normalized/
- prov: <http://www.w3.org/ns/prov#
- prv: <http://www.wikidata.org/prop/reference/value/
- ps: <http://www.wikidata.org/prop/statement/
- psn: <http://www.wikidata.org/prop/statement/value-normalized/
- psv: <http://www.wikidata.org/prop/statement/value/
- qb: <http://purl.org/linked-data/cube#
- qfn: <http://qlever.cs.uni-freiburg.de/function#
- ql: <http://qlever.cs.uni-freiburg.de/builtin-functions/
- qlss: <https://qlever.cs.uni-freiburg.de/spatialSearch/
- rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
- rdfs: <http://www.w3.org/2000/01/rdf-schema#
- ref: <http://www.wikidata.org/reference/
- s: <http://www.wikidata.org/entity/statement/
- schema: <http://schema.org/
- skos: <http://www.w3.org/2004/02/skos/core#
- v: <http://www.wikidata.org/value/
- void: <http://rdfs.org/ns/void#
- wd: <http://www.wikidata.org/entity/
- wdno: <http://www.wikidata.org/prop/novalue/
- wdt: <http://www.wikidata.org/prop/direct/
- wdtn: <http://www.wikidata.org/prop/direct-normalized/
- wikibase: <http://wikiba.se/ontology#
- xsd: <http://www.w3.org/2001/XMLSchema#

Additional rules to follow:
- Explain your thought process before and after each step and function call.
- Do not just use or make up entity or property identifiers without verifying their existence in the knowledge graphs first.
- Do not ask the user for clarifications without first attempting to complete the task. If the task input is incomplete or ambiguous, try to make reasonable assumptions and document them.
- Do not use "SERVICE wikibase:label { bd:serviceParam wikibase:language ..." in SPARQL queries. It is not SPARQL standard and unsupported by the used QLever SPARQL endpoints. Use rdfs:label or similar properties to get labels instead.
- Always execute your final SPARQL query before giving an answer to make sure it returns the expected results.
- The SPARQL query should always return the actual identifiers / IRIs of the items in its result. It additionally may return labels or other human-readable information, but they are optional and should be put within optional clauses unless explicitly requested by the user.
- Do not stop early if there are still obvious improvements to be made to the SPARQL query. For example, keep refining your SPARQL query if its result contains irrelevant items or is missing items you expected.
- Do not perform additional computation (e.g. filtering, sorting, calculations) on the result of the SPARQL query to determine the answer. All computation should be done solely within SPARQL.
- For questions with a "True" or "False" answer the SPARQL query should be an ASK query.

[User] what school did douglas macarthur go to?

[Assistant]
To determine the school Douglas MacArthur attended, I will follow these steps:

1. Identify the entity for Douglas MacArthur in Wikidata.
2. Search for properties related to education or schools associated with him.
3. Construct a SPARQL query to retrieve the educational institution(s) he attended.
4. Execute the query and verify the results.

### Step 1: Search for Douglas MacArthur in Wikidata
I will use `search_entity` to find the Wikidata entity for Douglas MacArthur.

Question: douglas macarthur

Top 10 entity alternatives:
1. Douglas MacArthur (wd:Q127417), also known as D. MacArthur, General Douglas MacArthur, General MacArthur, MacArthur: Untied States Army general in WWI, WWII, and Korea (1880-1964) / United States Army general in WWI, WWII and Korea (1880–1964) / has occupation military officer / has occupation army officer / has occupation officer / is instance of human
2. Douglas Macarthur (wd:Q110179636): is instance of human
3. Douglas MacArthur (wd:Q47512806): painting by Howard Chandler Christy / painting by Howard Chandler Christy / is instance of painting
4. Douglas MacArthur (wd:Q47509083): painting by Rudolphe Kiss / is instance of painting
5. Douglas Allan Hamilton MacArthur (wd:Q76272190, matched via Douglas MacArthur), also known as Douglas MacArthur: Peerage person ID=653481 / is instance of human
6. Douglas MacArthur II (wd:Q269483): American diplomat (1909-1997) / has occupation diplomat / is instance of human
7. General Douglas MacArthur (wd:Q5531839): is instance of sculpture / artwork by Robert Dean
8. Douglas Hastings Macarthur (wd:Q5301578): has occupation politician / New Zealand politician / New Zealand politician / New Zealand politician / is instance of human
9. Douglas MacArthur Park (wd:Q49483969): park in Los Angeles County, California, United States of America / is instance of park
10. Douglas MacArthur Park (wd:Q49483971): park in Bexar County, Texas, United States of America / is instance of park

[Assistant]
The correct entity for Douglas MacArthur is `wd:Q127417`, which is identified as a human and a United States Army general. I will now explore his properties to find information about his education.

### Step 2: Search for properties related to education
I will use `search_property_of_entity` to find properties related to education or schools for Douglas MacArthur (`wd:Q127417`).

Question: education

Top 10 property alternatives:
1. educated at (wd:P69 as p/wdt, matched via education), also known as alma mater, alumna of, alumni of, alumnus of, attended, etc.: educational institution attended by the subject / educational institution attended by the subject / educational institution attended by subject / is subproperty of affiliation
2. occupation (wd:P106 as p/wdt, matched via career), also known as avocation, career, craft, employ, employment, etc.: occupation of a person; see also "field of work" (Property:P101), "position held" (Property:P39) / occupation of a person; see also "field of work" (Property:P101), "position held" (Property:P39) / occupation of a person; see also "field of work" (Property:P101), "position held" (Property:P39)
3. topic's main category (wd:P910 as p/wdt, matched via category), also known as article's main category, category, category for this topic, catmain, has category, etc.: main category of this topic / main Wikimedia category
4. award received (wd:P166 as p/wdt, matched via honors), also known as award, awarded, awards, awards received, award won, etc.: award or recognition received by a person, organisation or creative work / award or recognition received by a person, organization or creative work / award or recognition received by a person, organization or creative work / awards received by a person, organisation or creative work
5. country of citizenship (wd:P27 as p/wdt, matched via nation), also known as citizen of, citizenship, country, (legal) nationality, nation, etc.: the object is a country that recognizes the subject as its citizen / the object is a country that recognizes the subject as its citizen / is subproperty of country
6. described by source (wd:P1343 as p/wdt, matched via entry), also known as defined in, described by biography, described by encyclopedia, described by obituary, described by reference work, etc.: dictionary, encyclopaedia, etc. where this item is described / work where this item is described / is subproperty of attested in
7. sibling (wd:P3373 as p/wdt, matched via sis), also known as bro, brother, brother of, brother or sister, brothers, etc.: the subject and the object have at least one common parent ... etc.) and step-siblings (step-brothers, step-sisters, etc.) / the subject has the object as their sibling (brother, sister, ... etc.) and step-siblings (step-brothers, step-sisters, etc.) / is subproperty of relative
8. work period (start) (wd:P2031 as p/wdt, matched via career began), also known as active since, career began, career start, date of activity (start), debut, etc.: start of period during which a person or group flourished (fl. = "floruit") in their professional activity / start of period during which a person or group flourished (fl. = "floruit") in their professional activity / is subproperty of start time / is subproperty of floruit
9. military branch (wd:P241 as p/wdt, matched via formation), also known as branch, formation, service branch, unit branch, P241: branch to which this military unit, award, office, or person belongs, e.g. Royal Navy / is subproperty of part of
10. Commons category (wd:P373 as p/wdt, matched via category Commons), also known as category Commons, category on Commons, category on Wikimedia Commons, category Wikipedia Commons, commonscat, etc.: name of the Wikimedia Commons category containing files related to this item (without the prefix "Category:") / name of the Wikimedia Commons category containing files related to this item (without the prefix "Category") / name of the Wikimedia Commons category containing files related to this item (without the prefix "Category")

No other items found

[Assistant]
The property `wd:P69` (educated at) is the most relevant for finding the educational institutions Douglas MacArthur attended. I will now construct a SPARQL query to retrieve the schools he attended using this property.

### Step 3: Construct SPARQL query
I will write a SPARQL query to fetch the educational institutions (`wd:P69`) associated with Douglas MacArthur (`wd:Q127417`) and retrieve their labels in English.

### Step 4: Execute the query
I will execute the SPARQL query to get the results.

execute

SELECT ?school ?schoolLabel WHERE { wd:Q127417 wdt:P69 ?school . SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } }

SPARQL execution failed:
Error while executing a SERVICE request to <http://wikiba.se:80/ontology#label>: SERVICE responded with HTTP status code: 301, Moved Permanently. First 100 bytes of the response: '
<title>301 Moved Permanently</title>

301 Moved Permanently'

[Assistant]
The error occurred because I used `SERVICE wikibase:label`, which is not supported in this environment. I need to use `rdfs:label` with a language filter instead.

I will revise the SPARQL query to use `rdfs:label` with `FILTER(LANG(?schoolLabel) = "en")` to get the English labels of the schools.

### Revised SPARQL Query:
```sparql
SELECT ?school ?schoolLabel
WHERE {
  wd:Q127417 wdt:P69 ?school .
  ?school rdfs:label ?schoolLabel .
  FILTER(LANG(?schoolLabel) = "en")
}
```

Now I will execute this corrected query.

SELECT ?school ?schoolLabel WHERE { wd:Q127417 wdt:P69 ?school . ?school rdfs:label ?schoolLabel . FILTER(LANG(?schoolLabel) = "en") }

Got 3 rows and 2 columns:
| school                                                             | schoolLabel                                                    |
| ------------------------------------------------------------------ | -------------------------------------------------------------- |
| United States Army Command and General Staff College (wd:Q1115050) | United States Army Command and General Staff College (lang:en) |
| Milwaukee High School of the Arts (wd:Q6861744)                    | Milwaukee High School of the Arts (lang:en)                    |
| United States Military Academy (wd:Q9219)                          | United States Military Academy (lang:en)                       |

[Assistant]
The query successfully returned the educational institutions Douglas MacArthur attended:

1. **United States Military Academy** (West Point)
2. **Milwaukee High School of the Arts**
3. **United States Army Command and General Staff College**

The most prominent and well-known institution he attended is the **United States Military Academy**, where he graduated in 1903. This is typically the school most associated with him.

### Final Answer:
Douglas MacArthur attended the United States Military Academy (West Point), Milwaukee High School of the Arts, and the United States Army Command and General Staff College. The most notable of these is the United States Military Academy.

I will now provide the final SPARQL query and answer.

answer

SELECT ?school ?schoolLabel WHERE { wd:Q127417 wdt:P69 ?school . ?school rdfs:label ?schoolLabel . FILTER(LANG(?schoolLabel) = "en") }

Answer: Douglas MacArthur attended the United States Military Academy (West Point), Milwaukee High School of the Arts, and the United States Army Command and General Staff College. The most notable of these is the United States Military Academy.


[System]
You are a question answering assistant. Your job is to generate a SPARQL query to answer a given user question.

You should follow a step-by-step approach to generate the SPARQL query:
1. Determine possible entities and properties implied by the user question.
2. Search for the entities and properties in the knowledge graphs. Where applicable, constrain the searches with already identified entities and properties.
3. Gradually build up the SPARQL query using the identified entities and properties. Start with simple queries and add more complexity as needed. Execute intermediate queries to get feedback and to verify your assumptions. You may need to refine or rethink your current plan based on the query results and go back to step 2 if needed, possibly multiple times.
4. Use the answer or cancel function to finalize your answer and stop the generation process.

Available knowledge graphs:
- wikidata at http://localhost:7001 with prefix index for entities and similarity index for properties, and notes:
  - P106 = occupation. Use wdt:P106 to get occupations and fetch English labels with rdfs:label + FILTER(LANG(?label)="en"). When returning human occupations confirm the subject is human (wdt:P31 wd:Q5) to avoid non-human items.
  - Population (P1082) and tabular (P4179): use wdt:P1082 for quick/direct values; for time-series/point-in-time use p:P1082 + ps:P1082 + pq:P585 and ORDER BY pq:P585 DESC. Inspect statement qualifiers (e.g., 'applies to part') and prov:wasDerivedFrom references (pr:P854 etc.) to detect city-proper vs metro/prefecture scopes before using values.
  - Common person properties: P31 (instance of human Q5), P106 (occupation), P569 (date of birth), P19 (place of birth), P27 (country of citizenship), P21 (sex/gender), P166 (award received). Use wdt: for direct values when possible.
  - P17 (country) can be incomplete/misleading for places (historical/overseas tags). To get modern cities in a country combine: instance-of city (P31=Q515) + wdt:P17 OR use wdt:P131* to find an admin parent whose wdt:P17 = the country. Also cross-check coordinates (P625) or admin hierarchy to spot outliers.
  - When filtering by date of birth (P569) use xsd:dateTime comparisons (e.g. >= "1900-01-01T00:00:00Z"^^xsd:dateTime). Be aware many items have year-only or imprecise dates and coverage is biased toward notable/public figures (sportspeople, politicians, artists).
  - To retrieve qualifiers (e.g., award year) use the statement/qualifier pattern: p:Pxxx / ps:Pxxx / pq:P585. Use wdt:Pxxx for normalized/direct values when you don't need qualifiers. Example: p:P166 + pq:P585 gives award year.
  - To get a person's occupations: use wdt:P106 for direct/normalized values and rdfs:label for human-readable names (FILTER(LANG(...))). Example: wd:Q... wdt:P106 ?occ . ?occ rdfs:label ?occLabel . FILTER(LANG(?occLabel)="en").
  - P166 = award received. Use wdt:P166 for normalized/direct values when you only need award items. To get award years or qualifiers use p:P166 / ps:P166 / pq:P585. Many statements lack pq:P585 — use OPTIONAL { ?stmt pq:P585 ?date } and ORDER BY DESC(?date). When listing award winners, filter ?person wdt:P31 wd:Q5 to ensure humans.
  - Population time-series pattern: wd:Q... p:P1082 ?stmt . ?stmt ps:P1082 ?pop . OPTIONAL { ?stmt pq:P585 ?date } . ORDER BY DESC(?date). pq:P585 is the point-in-time qualifier. IMPORTANT: time-series may mix scopes (city proper vs metro) — e.g., Tokyo has a 2016 entry ~38,140,000 likely metro vs smaller city figures. Inspect qualifiers/references for scope before use.
  - Use wdt:P131* to traverse the admin hierarchy and compare wdt:P17 on the place vs an admin parent to detect historical/colonial country assignments. When mismatches appear, inspect the admin parent's instance-of (P31), labels, qualifiers and references to interpret the historical scope.
  - wdt:P106 often yields multiple occupations for a person. Use GROUP_CONCAT(DISTINCT ?occLabel; separator=", ") or return multiple rows. Always fetch labels with rdfs:label + FILTER(LANG(?label)="en") to get readable occupation names.
  - When a search_entity returns multiple hits (person vs sculpture vs memorial), confirm you selected the human/statements by checking wdt:P31 (instance of) and relevant wdt: properties (e.g., wdt:P106). This avoids using a non-human QID by mistake.
  - search_autocomplete can be constrained with a SPARQL pattern containing ?search (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }). Use constraints to focus results (e.g., humans) and avoid ambiguous fallbacks; if it returns no results, fallback to search_entity and verify wdt:P31.
  - Use search_property_of_entity to find relevant properties for an entity (e.g., 'award' -> P166) and search_object_of_property to discover candidate objects (e.g., 'physicist' for P106). This reduces guessing P/Q ids and surfaces qualifiers.
  - Inspect statement references and qualifiers: use prov:wasDerivedFrom on p: statements to find sources, and check qualifiers (e.g., 'applies to part' or other scope qualifiers) to disambiguate city vs metro vs admin area. Reference labels can be empty; inspect reference node properties for URLs or publication dates.

Index types used for entities and properties:
- Prefix index: Retrieves items by overlap between query keywords and item words. The query keywords can match item words exactly or as prefixes.
- Similarity index: Retrieves items by cosine similarity between their embeddings and the query embedding.

General notes across knowledge graphs:
- Use rdfs:label + FILTER(LANG(?label)="en") for labels; avoid SERVICE wikibase:label. Use wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access statement qualifiers (e.g., award year via pq:P585). When dates matter, prefer xsd:dateTime and watch for year-only precision.
- Practical query patterns: use rdfs:label + FILTER(LANG(...)) for labels. Use wdt:Pxxx for direct/normalized values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (dates via pq:P585). For dates use xsd:dateTime and expect year-only precision. For places: combine P17 with P131 or coordinate (P625) filters to avoid historical/overseas mismatches.
- Use OPTIONAL for pq: qualifiers (e.g., pq:P585), sort by qualifier (ORDER BY pq:P585 DESC) to prefer recent values. Use GROUP_CONCAT to combine multiple labels/values in one row. Watch for typed literals (xsd:dateTime, xsd:decimal) when filtering or sorting.
- Before querying, use search_entity to resolve human-friendly names to wd:Q identifiers and verify instance-of (e.g., check wdt:P31 = wd:Q5 for humans) to avoid ambiguous matches. Prefer the top match but programmatically confirm P31 before using its data.
- Use search_property to confirm property identifiers (e.g., "country" -> P17) before embedding them in queries. This prevents mistakes from assuming an ID and helps pick the best property if multiple choices exist.
- search_autocomplete can fall back to an unconstrained search or error when there are too many candidates. If this happens (e.g., "more than the maximum supported number of subject candidates"), retry with narrower constraints such as instance-of (wdt:P31), additional type filters, or short prefixes to reduce the candidate set; otherwise fallback to search_entity and verify wdt:P31.
- Use list(...) to inspect all triples on an entity for exploration, but expect large results for notable items. Prefer wdt: properties or targeted p:/ps:/pq: patterns in SPARQL when you need normalized values or qualifiers, respectively.
- Before embedding property or item IDs in SPARQL, use search_property, search_property_of_entity, and search_object_of_property to discover the appropriate P/PID or object QIDs. This reduces errors from guessing IDs and surfaces better property alternatives and qualifiers.
- search_constrained and search_autocomplete can return no results for constrained queries or when the index is large. If they fail, fallback to search_entity + verify P31 (or use search_property_of_entity). Constrain with instance-of (wdt:P31) or other properties in the SPARQL to improve matches.
- When selecting awards by year, prefer xsd:dateTime range filters (e.g., >= "2001-01-01T00:00:00Z"^^xsd:dateTime && < "2002-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for portability and precision.
- When selecting award winners via wdt:P166, filter ?person wdt:P31 wd:Q5 to ensure humans — fictional characters or non-humans may have award claims. If you need award years use p:P166 / ps:P166 / pq:P585 and OPTIONAL { ?stmt pq:P585 ?year } to retrieve qualifier years.
- Use wdt:P625 (coordinates) together with wdt:P131* and wdt:P17 checks to validate a place's modern country or to filter by geography. When country labels mismatch historically, inspect admin parents and coordinates to resolve whether the item refers to historical/colonial scope or current boundaries.
- Prefer wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (e.g., pq:P585 for award year). Always fetch labels with rdfs:label + FILTER(LANG(?label) = "en").
- If search_autocomplete returns too many candidates or errors, retry with constraints (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }) or narrower query text. If still failing, fallback to search_entity and verify wdt:P31 for type checks.
- For award-year queries use p:P166 / ps:P166 / pq:P585 to access award statements and year qualifiers. Filter by xsd:dateTime ranges (e.g., >= "2020-01-01T00:00:00Z"^^xsd:dateTime && < "2021-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for robustness.
- Use search_property_of_entity to surface relevant properties for an entity (e.g., 'birth' -> P569/P19). list(...) can inspect triples but may return large results for notable items—prefer targeted wdt: patterns (wdt:Pxxx) or p:/ps:/pq: patterns when you need qualifiers.

SPARQL prefixes for use in function calls:
- bd: <http://www.bigdata.com/rdf#
- cc: <http://creativecommons.org/ns#
- data: <https://www.wikidata.org/wiki/Special:EntityData/
- dc: <http://purl.org/dc/elements/1.1/
- dct: <http://purl.org/dc/terms/
- foaf: <http://xmlns.com/foaf/0.1/
- geo: <http://www.opengis.net/ont/geosparql#
- geof: <http://www.opengis.net/def/function/geosparql/
- gn: <http://www.geonames.org/ontology#
- hint: <http://www.bigdata.com/queryHints#
- imdb: <https://www.imdb.com/
- math: <http://www.w3.org/2005/xpath-functions/math#
- ontolex: <http://www.w3.org/ns/lemon/ontolex#
- owl: <http://www.w3.org/2002/07/owl#
- p: <http://www.wikidata.org/prop/
- pq: <http://www.wikidata.org/prop/qualifier/
- pqn: <http://www.wikidata.org/prop/qualifier/value-normalized/
- pqv: <http://www.wikidata.org/prop/qualifier/value/
- pr: <http://www.wikidata.org/prop/reference/
- prn: <http://www.wikidata.org/prop/reference/value-normalized/
- prov: <http://www.w3.org/ns/prov#
- prv: <http://www.wikidata.org/prop/reference/value/
- ps: <http://www.wikidata.org/prop/statement/
- psn: <http://www.wikidata.org/prop/statement/value-normalized/
- psv: <http://www.wikidata.org/prop/statement/value/
- qb: <http://purl.org/linked-data/cube#
- qfn: <http://qlever.cs.uni-freiburg.de/function#
- ql: <http://qlever.cs.uni-freiburg.de/builtin-functions/
- qlss: <https://qlever.cs.uni-freiburg.de/spatialSearch/
- rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
- rdfs: <http://www.w3.org/2000/01/rdf-schema#
- ref: <http://www.wikidata.org/reference/
- s: <http://www.wikidata.org/entity/statement/
- schema: <http://schema.org/
- skos: <http://www.w3.org/2004/02/skos/core#
- v: <http://www.wikidata.org/value/
- void: <http://rdfs.org/ns/void#
- wd: <http://www.wikidata.org/entity/
- wdno: <http://www.wikidata.org/prop/novalue/
- wdt: <http://www.wikidata.org/prop/direct/
- wdtn: <http://www.wikidata.org/prop/direct-normalized/
- wikibase: <http://wikiba.se/ontology#
- xsd: <http://www.w3.org/2001/XMLSchema#

Additional rules to follow:
- Explain your thought process before and after each step and function call.
- Do not just use or make up entity or property identifiers without verifying their existence in the knowledge graphs first.
- Do not ask the user for clarifications without first attempting to complete the task. If the task input is incomplete or ambiguous, try to make reasonable assumptions and document them.
- Do not use "SERVICE wikibase:label { bd:serviceParam wikibase:language ..." in SPARQL queries. It is not SPARQL standard and unsupported by the used QLever SPARQL endpoints. Use rdfs:label or similar properties to get labels instead.
- Always execute your final SPARQL query before giving an answer to make sure it returns the expected results.
- The SPARQL query should always return the actual identifiers / IRIs of the items in its result. It additionally may return labels or other human-readable information, but they are optional and should be put within optional clauses unless explicitly requested by the user.
- Do not stop early if there are still obvious improvements to be made to the SPARQL query. For example, keep refining your SPARQL query if its result contains irrelevant items or is missing items you expected.
- Do not perform additional computation (e.g. filtering, sorting, calculations) on the result of the SPARQL query to determine the answer. All computation should be done solely within SPARQL.
- For questions with a "True" or "False" answer the SPARQL query should be an ASK query.

[User] who played donna on west wing?

[Assistant]
To find out who played Donna on The West Wing, I need to identify the character "Donna" from the TV show "The West Wing" and then find the actor who portrayed that character.

### Step 1: Identify the TV show "The West Wing"
First, I'll search for the entity for "The West Wing" to confirm its Wikidata ID.

Question: The West Wing

Top 10 entity alternatives:
1. The West Wing (wd:Q3577037), also known as West Wing: American political drama series created by Aaron Sorkin for NBC (1999–2006) / is instance of television series / is instance of serial
2. West Wing (wd:Q1932621, matched via the West Wing), also known as the West Wing, West Wing of the White House, White House West Wing: west office section of the White House, Washington DC, USA / is instance of office building / is instance of wing
3. McGuffey Hall (wd:Q123015331, matched via The West Wing), also known as The West Wing: building of Ohio University in Athens, Ohio, USA / is instance of university building
4. The West Wing (wd:Q130511005): instrumental track by Akuma Kira, Jarren Crist and Nolan Reese; 2015 studio recording / is instance of music track with vocals
5. The West Wing (wd:Q130511003): is instance of musical work/composition / song by Akuma Kira
6. Pilot (wd:Q7194391, matched via The West Wing pilot), also known as The West Wing pilot: is instance of television series episode / episode of The West Wing (S1 E1) / is instance of television pilot
7. The West Wing Thing (wd:Q104867287): is instance of podcast show / American podcast series / is instance of podcast
8. The West Wing Weekly (wd:Q28127811): is instance of podcast show / is instance of podcast / American podcast
9. The West Wing, season 5 (wd:Q3730540): is instance of television series season / season of television series / is instance of series
10. The West Wing, season 4 (wd:Q3730539): is instance of television series season / season of television series / is instance of series

[Assistant]
The correct entity for the TV show "The West Wing" is `wd:Q3577037`. Now, I need to find the character "Donna" from this show. I'll search for properties related to characters in the show.

### Step 2: Search for properties related to characters in "The West Wing"
I'll use `search_property_of_entity` to find properties that might link the show to its characters.
<tool_call>
{"name": "search_property_of_entity", "kg": "wikidata", "entity": "wd:Q3577037", "query": "character"}
</tool_call>


PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?country ?countryLabel WHERE {
  ?country wdt:P37 wd:Q188 .
  ?country wdt:P31 wd:Q3624078 .
  FILTER ( ?country != wd:Q43287 ) .
  ?country rdfs:label ?countryLabel .
  FILTER ( LANG( ?countryLabel ) = "en" )
}

Using entities:
- German (wd:Q188), also known as de, German language: is instance of modern language / is instance of language / is subclass of South Germanic / is subclass of West Germanic / West Germanic language spoken in and around Germany / West-Germanic language spoken in and around Germany / West Germanic language spoken mainly in Central Europe / West Germanic language spoken mainly in Central Europe
- sovereign state (wd:Q3624078), also known as country, nation, sovereign country, sovereign nation, Westphalian state: is subclass of country / is subclass of state / political organisation with a centralised independent government / political organisation with a centralised independent government / state that has the highest authority over a territory
- German Empire (wd:Q43287), also known as Deutsches Kaiserreich, German Reich, Imperial Germany, Second Reich: is instance of historical period / is instance of empire / is instance of sovereign state / empire from 1871 to 1918 in Central Europe / empire in Central Europe between 1871 and 1918 / German nation-state in Central Europe from 1871 to 1918

Using properties:
- instance of (wd:P31 as wdt), also known as example of, has type, is a, is an, is of type, etc.: that class of which this subject is a particular example and ... a subclass of mountain (and an instance of volcanic landform) / type to which this subject corresponds/belongs. Different ... and the volcano is a type (instance) of volcanic landform
- official language (wd:P37 as wdt), also known as language official, language spoken, speaking, spoken in, P37: is subproperty of language used / language designated as official by this item / language designated as official by this item / language designated as official by this item / language designated as official by this item

Got 6 rows and 2 columns:
| country                 | countryLabel            |
| ----------------------- | ----------------------- |
| Germany (wd:Q183)       | Germany (lang:en)       |
| Belgium (wd:Q31)        | Belgium (lang:en)       |
| Luxembourg (wd:Q32)     | Luxembourg (lang:en)    |
| Liechtenstein (wd:Q347) | Liechtenstein (lang:en) |
| Switzerland (wd:Q39)    | Switzerland (lang:en)   |
| Austria (wd:Q40)        | Austria (lang:en)       |

Answer: The countries where German is an official language are Germany, Austria, Switzerland, Luxembourg, Belgium, and Liechtenstein.

The countries where German is an official language are Germany, Austria, Switzerland, Luxembourg, Belgium, and Liechtenstein.

SPARQL query over wikidata:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?country ?countryLabel WHERE {
  ?country wdt:P37 wd:Q188 .
  ?country wdt:P31 wd:Q3624078 .
  FILTER ( ?country != wd:Q43287 ) .
  ?country rdfs:label ?countryLabel .
  FILTER ( LANG( ?countryLabel ) = "en" )
}

Using entities:
- German (wd:Q188), also known as de, German language: is instance of modern language / is instance of language / is subclass of South Germanic / is subclass of West Germanic / West Germanic language spoken in and around Germany / West-Germanic language spoken in and around Germany / West Germanic language spoken mainly in Central Europe / West Germanic language spoken mainly in Central Europe
- sovereign state (wd:Q3624078), also known as country, nation, sovereign country, sovereign nation, Westphalian state: is subclass of country / is subclass of state / political organisation with a centralised independent government / political organisation with a centralised independent government / state that has the highest authority over a territory
- German Empire (wd:Q43287), also known as Deutsches Kaiserreich, German Reich, Imperial Germany, Second Reich: is instance of historical period / is instance of empire / is instance of sovereign state / empire from 1871 to 1918 in Central Europe / empire in Central Europe between 1871 and 1918 / German nation-state in Central Europe from 1871 to 1918

Using properties:
- instance of (wd:P31 as wdt), also known as example of, has type, is a, is an, is of type, etc.: that class of which this subject is a particular example and ... a subclass of mountain (and an instance of volcanic landform) / type to which this subject corresponds/belongs. Different ... and the volcano is a type (instance) of volcanic landform
- official language (wd:P37 as wdt), also known as language official, language spoken, speaking, spoken in, P37: is subproperty of language used / language designated as official by this item / language designated as official by this item / language designated as official by this item / language designated as official by this item

Execution result:
Got 6 rows and 2 columns:
| country                 | countryLabel            |
| ----------------------- | ----------------------- |
| Germany (wd:Q183)       | Germany (lang:en)       |
| Belgium (wd:Q31)        | Belgium (lang:en)       |
| Luxembourg (wd:Q32)     | Luxembourg (lang:en)    |
| Liechtenstein (wd:Q347) | Liechtenstein (lang:en) |
| Switzerland (wd:Q39)    | Switzerland (lang:en)   |
| Austria (wd:Q40)        | Austria (lang:en)       |

[System]
You are a question answering assistant. Your job is to generate a SPARQL query to answer a given user question.

You should follow a step-by-step approach to generate the SPARQL query:
1. Determine possible entities and properties implied by the user question.
2. Search for the entities and properties in the knowledge graphs. Where applicable, constrain the searches with already identified entities and properties.
3. Gradually build up the SPARQL query using the identified entities and properties. Start with simple queries and add more complexity as needed. Execute intermediate queries to get feedback and to verify your assumptions. You may need to refine or rethink your current plan based on the query results and go back to step 2 if needed, possibly multiple times.
4. Use the answer or cancel function to finalize your answer and stop the generation process.

Available knowledge graphs:
- wikidata at http://localhost:7001 with prefix index for entities and similarity index for properties, and notes:
  - P106 = occupation. Use wdt:P106 to get occupations and fetch English labels with rdfs:label + FILTER(LANG(?label)="en"). When returning human occupations confirm the subject is human (wdt:P31 wd:Q5) to avoid non-human items.
  - Population (P1082) and tabular (P4179): use wdt:P1082 for quick/direct values; for time-series/point-in-time use p:P1082 + ps:P1082 + pq:P585 and ORDER BY pq:P585 DESC. Inspect statement qualifiers (e.g., 'applies to part') and prov:wasDerivedFrom references (pr:P854 etc.) to detect city-proper vs metro/prefecture scopes before using values.
  - Common person properties: P31 (instance of human Q5), P106 (occupation), P569 (date of birth), P19 (place of birth), P27 (country of citizenship), P21 (sex/gender), P166 (award received). Use wdt: for direct values when possible.
  - P17 (country) can be incomplete/misleading for places (historical/overseas tags). To get modern cities in a country combine: instance-of city (P31=Q515) + wdt:P17 OR use wdt:P131* to find an admin parent whose wdt:P17 = the country. Also cross-check coordinates (P625) or admin hierarchy to spot outliers.
  - When filtering by date of birth (P569) use xsd:dateTime comparisons (e.g. >= "1900-01-01T00:00:00Z"^^xsd:dateTime). Be aware many items have year-only or imprecise dates and coverage is biased toward notable/public figures (sportspeople, politicians, artists).
  - To retrieve qualifiers (e.g., award year) use the statement/qualifier pattern: p:Pxxx / ps:Pxxx / pq:P585. Use wdt:Pxxx for normalized/direct values when you don't need qualifiers. Example: p:P166 + pq:P585 gives award year.
  - To get a person's occupations: use wdt:P106 for direct/normalized values and rdfs:label for human-readable names (FILTER(LANG(...))). Example: wd:Q... wdt:P106 ?occ . ?occ rdfs:label ?occLabel . FILTER(LANG(?occLabel)="en").
  - P166 = award received. Use wdt:P166 for normalized/direct values when you only need award items. To get award years or qualifiers use p:P166 / ps:P166 / pq:P585. Many statements lack pq:P585 — use OPTIONAL { ?stmt pq:P585 ?date } and ORDER BY DESC(?date). When listing award winners, filter ?person wdt:P31 wd:Q5 to ensure humans.
  - Population time-series pattern: wd:Q... p:P1082 ?stmt . ?stmt ps:P1082 ?pop . OPTIONAL { ?stmt pq:P585 ?date } . ORDER BY DESC(?date). pq:P585 is the point-in-time qualifier. IMPORTANT: time-series may mix scopes (city proper vs metro) — e.g., Tokyo has a 2016 entry ~38,140,000 likely metro vs smaller city figures. Inspect qualifiers/references for scope before use.
  - Use wdt:P131* to traverse the admin hierarchy and compare wdt:P17 on the place vs an admin parent to detect historical/colonial country assignments. When mismatches appear, inspect the admin parent's instance-of (P31), labels, qualifiers and references to interpret the historical scope.
  - wdt:P106 often yields multiple occupations for a person. Use GROUP_CONCAT(DISTINCT ?occLabel; separator=", ") or return multiple rows. Always fetch labels with rdfs:label + FILTER(LANG(?label)="en") to get readable occupation names.
  - When a search_entity returns multiple hits (person vs sculpture vs memorial), confirm you selected the human/statements by checking wdt:P31 (instance of) and relevant wdt: properties (e.g., wdt:P106). This avoids using a non-human QID by mistake.
  - search_autocomplete can be constrained with a SPARQL pattern containing ?search (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }). Use constraints to focus results (e.g., humans) and avoid ambiguous fallbacks; if it returns no results, fallback to search_entity and verify wdt:P31.
  - Use search_property_of_entity to find relevant properties for an entity (e.g., 'award' -> P166) and search_object_of_property to discover candidate objects (e.g., 'physicist' for P106). This reduces guessing P/Q ids and surfaces qualifiers.
  - Inspect statement references and qualifiers: use prov:wasDerivedFrom on p: statements to find sources, and check qualifiers (e.g., 'applies to part' or other scope qualifiers) to disambiguate city vs metro vs admin area. Reference labels can be empty; inspect reference node properties for URLs or publication dates.

Index types used for entities and properties:
- Prefix index: Retrieves items by overlap between query keywords and item words. The query keywords can match item words exactly or as prefixes.
- Similarity index: Retrieves items by cosine similarity between their embeddings and the query embedding.

General notes across knowledge graphs:
- Use rdfs:label + FILTER(LANG(?label)="en") for labels; avoid SERVICE wikibase:label. Use wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access statement qualifiers (e.g., award year via pq:P585). When dates matter, prefer xsd:dateTime and watch for year-only precision.
- Practical query patterns: use rdfs:label + FILTER(LANG(...)) for labels. Use wdt:Pxxx for direct/normalized values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (dates via pq:P585). For dates use xsd:dateTime and expect year-only precision. For places: combine P17 with P131 or coordinate (P625) filters to avoid historical/overseas mismatches.
- Use OPTIONAL for pq: qualifiers (e.g., pq:P585), sort by qualifier (ORDER BY pq:P585 DESC) to prefer recent values. Use GROUP_CONCAT to combine multiple labels/values in one row. Watch for typed literals (xsd:dateTime, xsd:decimal) when filtering or sorting.
- Before querying, use search_entity to resolve human-friendly names to wd:Q identifiers and verify instance-of (e.g., check wdt:P31 = wd:Q5 for humans) to avoid ambiguous matches. Prefer the top match but programmatically confirm P31 before using its data.
- Use search_property to confirm property identifiers (e.g., "country" -> P17) before embedding them in queries. This prevents mistakes from assuming an ID and helps pick the best property if multiple choices exist.
- search_autocomplete can fall back to an unconstrained search or error when there are too many candidates. If this happens (e.g., "more than the maximum supported number of subject candidates"), retry with narrower constraints such as instance-of (wdt:P31), additional type filters, or short prefixes to reduce the candidate set; otherwise fallback to search_entity and verify wdt:P31.
- Use list(...) to inspect all triples on an entity for exploration, but expect large results for notable items. Prefer wdt: properties or targeted p:/ps:/pq: patterns in SPARQL when you need normalized values or qualifiers, respectively.
- Before embedding property or item IDs in SPARQL, use search_property, search_property_of_entity, and search_object_of_property to discover the appropriate P/PID or object QIDs. This reduces errors from guessing IDs and surfaces better property alternatives and qualifiers.
- search_constrained and search_autocomplete can return no results for constrained queries or when the index is large. If they fail, fallback to search_entity + verify P31 (or use search_property_of_entity). Constrain with instance-of (wdt:P31) or other properties in the SPARQL to improve matches.
- When selecting awards by year, prefer xsd:dateTime range filters (e.g., >= "2001-01-01T00:00:00Z"^^xsd:dateTime && < "2002-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for portability and precision.
- When selecting award winners via wdt:P166, filter ?person wdt:P31 wd:Q5 to ensure humans — fictional characters or non-humans may have award claims. If you need award years use p:P166 / ps:P166 / pq:P585 and OPTIONAL { ?stmt pq:P585 ?year } to retrieve qualifier years.
- Use wdt:P625 (coordinates) together with wdt:P131* and wdt:P17 checks to validate a place's modern country or to filter by geography. When country labels mismatch historically, inspect admin parents and coordinates to resolve whether the item refers to historical/colonial scope or current boundaries.
- Prefer wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (e.g., pq:P585 for award year). Always fetch labels with rdfs:label + FILTER(LANG(?label) = "en").
- If search_autocomplete returns too many candidates or errors, retry with constraints (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }) or narrower query text. If still failing, fallback to search_entity and verify wdt:P31 for type checks.
- For award-year queries use p:P166 / ps:P166 / pq:P585 to access award statements and year qualifiers. Filter by xsd:dateTime ranges (e.g., >= "2020-01-01T00:00:00Z"^^xsd:dateTime && < "2021-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for robustness.
- Use search_property_of_entity to surface relevant properties for an entity (e.g., 'birth' -> P569/P19). list(...) can inspect triples but may return large results for notable items—prefer targeted wdt: patterns (wdt:Pxxx) or p:/ps:/pq: patterns when you need qualifiers.

SPARQL prefixes for use in function calls:
- bd: <http://www.bigdata.com/rdf#
- cc: <http://creativecommons.org/ns#
- data: <https://www.wikidata.org/wiki/Special:EntityData/
- dc: <http://purl.org/dc/elements/1.1/
- dct: <http://purl.org/dc/terms/
- foaf: <http://xmlns.com/foaf/0.1/
- geo: <http://www.opengis.net/ont/geosparql#
- geof: <http://www.opengis.net/def/function/geosparql/
- gn: <http://www.geonames.org/ontology#
- hint: <http://www.bigdata.com/queryHints#
- imdb: <https://www.imdb.com/
- math: <http://www.w3.org/2005/xpath-functions/math#
- ontolex: <http://www.w3.org/ns/lemon/ontolex#
- owl: <http://www.w3.org/2002/07/owl#
- p: <http://www.wikidata.org/prop/
- pq: <http://www.wikidata.org/prop/qualifier/
- pqn: <http://www.wikidata.org/prop/qualifier/value-normalized/
- pqv: <http://www.wikidata.org/prop/qualifier/value/
- pr: <http://www.wikidata.org/prop/reference/
- prn: <http://www.wikidata.org/prop/reference/value-normalized/
- prov: <http://www.w3.org/ns/prov#
- prv: <http://www.wikidata.org/prop/reference/value/
- ps: <http://www.wikidata.org/prop/statement/
- psn: <http://www.wikidata.org/prop/statement/value-normalized/
- psv: <http://www.wikidata.org/prop/statement/value/
- qb: <http://purl.org/linked-data/cube#
- qfn: <http://qlever.cs.uni-freiburg.de/function#
- ql: <http://qlever.cs.uni-freiburg.de/builtin-functions/
- qlss: <https://qlever.cs.uni-freiburg.de/spatialSearch/
- rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
- rdfs: <http://www.w3.org/2000/01/rdf-schema#
- ref: <http://www.wikidata.org/reference/
- s: <http://www.wikidata.org/entity/statement/
- schema: <http://schema.org/
- skos: <http://www.w3.org/2004/02/skos/core#
- v: <http://www.wikidata.org/value/
- void: <http://rdfs.org/ns/void#
- wd: <http://www.wikidata.org/entity/
- wdno: <http://www.wikidata.org/prop/novalue/
- wdt: <http://www.wikidata.org/prop/direct/
- wdtn: <http://www.wikidata.org/prop/direct-normalized/
- wikibase: <http://wikiba.se/ontology#
- xsd: <http://www.w3.org/2001/XMLSchema#

Additional rules to follow:
- Explain your thought process before and after each step and function call.
- Do not just use or make up entity or property identifiers without verifying their existence in the knowledge graphs first.
- Do not ask the user for clarifications without first attempting to complete the task. If the task input is incomplete or ambiguous, try to make reasonable assumptions and document them.
- Do not use "SERVICE wikibase:label { bd:serviceParam wikibase:language ..." in SPARQL queries. It is not SPARQL standard and unsupported by the used QLever SPARQL endpoints. Use rdfs:label or similar properties to get labels instead.
- Always execute your final SPARQL query before giving an answer to make sure it returns the expected results.
- The SPARQL query should always return the actual identifiers / IRIs of the items in its result. It additionally may return labels or other human-readable information, but they are optional and should be put within optional clauses unless explicitly requested by the user.
- Do not stop early if there are still obvious improvements to be made to the SPARQL query. For example, keep refining your SPARQL query if its result contains irrelevant items or is missing items you expected.
- Do not perform additional computation (e.g. filtering, sorting, calculations) on the result of the SPARQL query to determine the answer. All computation should be done solely within SPARQL.
- For questions with a "True" or "False" answer the SPARQL query should be an ASK query.

[User] which countries speak german officially?

[Assistant]
To determine which countries have German as an official language, I need to find entities (countries) that have German listed as an official language.

### Step 1: Identify relevant property
The property for "official language" in Wikidata is `P37`. I will confirm this using `search_property`.

Question: official language

Top 10 property alternatives:
1. official language (wd:P37 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn), also known as language official, language spoken, speaking, spoken in, P37: language designated as official by this item / language designated as official by this item / language designated as official by this item / language designated as official by this item / is subproperty of language used
2. native label (wd:P1705 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via official language name), also known as autonym, label in official language, label in original language, name in official language, name in original language, etc.: label for the items in their official language (P37) or their original language (P364) / label for the items in their official language (P37) or their original language (P364) / label for the items in their official language (P37) or their original language (P364) / label for the items in their official language  or their original language / is subproperty of name
3. original language of film or TV show (wd:P364 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via original language), also known as created on language, language of the original work, media language, original language, P364: language in which a film or a performance work was originally ... and songs; use P407 ("language of work or name") instead. / language in which a film or a performance work was originally ... written works; use P407 ("language of work or name") instead. / language in which a film or a performance work was originally ... written works; use P407 ("language of work or name") instead. / is subproperty of language of work or name
4. language used (wd:P2936 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via working language), also known as languages used, medium of instruction, used language, uses language, working language, etc.: language widely used (spoken or written) in this place or at this event or organisation
5. native language (wd:P103 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via first language), also known as first language, L1 speaker of, language native, mother tongue, P103: language or languages a person has learned from early childhood / is subproperty of languages spoken, written or signed / language or languages a person has learned from birth / language or languages a person has learned from birth
6. language regulatory body (wd:P1018 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via language authority), also known as language authority, regulatory body, P1018: regulatory body of a language
7. language of work or name (wd:P407 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via used language), also known as audio language, available in, broadcasting language, language, language of name, etc.: language associated with this creative work (such as books, ... (P103) and "languages spoken, written or signed" (P1412)) / language associated with this creative work (such as books, ... (P103) and "languages spoken, written or signed" (P1412)) / language associated with this work or name (for persons use P103 and P1412)
8. languages spoken, written or signed (wd:P1412 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via used language), also known as language, language of expression, language read, language signed, languages of expression, etc.: language(s) that a person or a people speaks, writes or signs, including the native language(s) / language(s) that a person speaks or writes, including the native language(s) / language(s) that a person speaks or writes, including the native language(s)
9. programmed in (wd:P277 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via language), also known as language, programming language, written in, P277: the programming language(s) in which the software is developed
10. Ethnologue language status (wd:P3823 as ps/psv/p/pqv/pqn/psn/pq/wdt/pr/prn/prv/wdtn, matched via language status), also known as EGIDS, language status, P3823: language status identifier by Ethnologue.com using EGIDS scale / language status identifier by Ethnologue.com using EGIDS scale

[Assistant]
The property `P37` (official language) is the correct one to use for identifying countries where German is an official language.

### Step 2: Find the QID for German
I need to find the Wikidata item for the German language. I'll use `search_entity` for this.

Question: German language

Top 10 entity alternatives:
1. German (wd:Q188, matched via German language), also known as de, German language: West Germanic language spoken mainly in Central Europe / West Germanic language spoken mainly in Central Europe / West Germanic language spoken in and around Germany / West-Germanic language spoken in and around Germany / is instance of modern language / is subclass of South Germanic / is subclass of West Germanic / is instance of language
2. German Language (wd:Q110262520): Stack Exchange site for speakers of German wanting to discuss the finer points of the language and translation / is instance of Stack Exchange forum site
3. Germanic (wd:Q21200, matched via Germanic language), also known as Germanic family, Germanic language, Germanic language family, Germanic language group, Germanic languages, etc.: branch of the Indo-European language family / is instance of language family / is subclass of Indo-European
4. German Wikipedia (wd:Q48183, matched via German language Wikipedia), also known as dewiki, Dewiki, de.wikipedia, dewikipedia, de.wikipedia.org, etc.: is instance of Wikipedia language edition / German-language edition of Wikipedia / German-language edition of Wikipedia / is instance of MediaWiki instance
5. Pennsylvania German (wd:Q22711, matched via Pennsylvania German language), also known as Amish High German, Amish language, Pennsylvania Dutch, Pennsylvania Dutch language, Pennsylvania German language, etc.: is subclass of Rhine Franconian / is instance of sacred language / is instance of modern language / variety of West Central German / is instance of language
6. German-language literature (wd:Q181287, matched via German language literature), also known as German language literature, German literature, literature written in the German language: overview of German-language literature / is instance of sub-set of literature
7. Palatinate German (wd:Q23014, matched via Palatinate German language), also known as Pakatinate German dialect group, Palatinate German dialect, Palatinate German language, Palatine Dutch, Palatine German, etc.: West Franconian dialect of German / is subclass of Rhine Franconian / is instance of modern language / is instance of language
8. Austrian German (wd:Q306626, matched via Austrian German language), also known as .AT, AT, Austria/Language, AustriaLanguage, Austrian accent, etc.: variety of Standard German written and spoken in Austria and North Italy / is subclass of Standard High German / is instance of variety of German / is subclass of Standard German / is instance of language / is subclass of German
9. German Sign Language (wd:Q33282), also known as Deutsche Gebärdensprache, DGS, gsg, GSL: sign language in which the deaf community and hearing people communicate with each other in Germany / is subclass of German Sign Language family / is instance of modern language / is instance of sign language
10. history of German (wd:Q470606, matched via German language history), also known as German language history, history of the German language: is instance of aspect of history / aspect of history / aspect of history

[Assistant]
The correct Wikidata item for the German language is `wd:Q188`.

### Step 3: Find countries where German is an official language
Now I will construct a SPARQL query to find all countries (`wd:Q3624078` - country) that have German (`wd:Q188`) as an official language (`wdt:P37`).

I will execute the query:

execute

SELECT ?country ?countryLabel WHERE { ?country wdt:P37 wd:Q188 . ?country wdt:P31 wd:Q3624078 . SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } }

SPARQL execution failed:
Error while executing a SERVICE request to <http://wikiba.se:80/ontology#label>: SERVICE responded with HTTP status code: 301, Moved Permanently. First 100 bytes of the response: '
<title>301 Moved Permanently</title>

301 Moved Permanently'

[Assistant]
The error occurred because I used `SERVICE wikibase:label`, which is not supported in this environment. I need to use `rdfs:label` with a language filter instead.

I will rewrite the query to use `rdfs:label` with `FILTER(LANG(?countryLabel) = "en")` to get English labels for the countries.

### Updated SPARQL Query:
```sparql
SELECT ?country ?countryLabel WHERE {
  ?country wdt:P37 wd:Q188 .
  ?country wdt:P31 wd:Q3624078 .
  ?country rdfs:label ?countryLabel .
  FILTER(LANG(?countryLabel) = "en")
}
```

Now I will execute this corrected query:

SELECT ?country ?countryLabel WHERE { ?country wdt:P37 wd:Q188 . ?country wdt:P31 wd:Q3624078 . ?country rdfs:label ?countryLabel . FILTER(LANG(?countryLabel) = "en") }

Got 7 rows and 2 columns:
| country                   | countryLabel            |
| ------------------------- | ----------------------- |
| Germany (wd:Q183)         | Germany (lang:en)       |
| Belgium (wd:Q31)          | Belgium (lang:en)       |
| Luxembourg (wd:Q32)       | Luxembourg (lang:en)    |
| Liechtenstein (wd:Q347)   | Liechtenstein (lang:en) |
| Switzerland (wd:Q39)      | Switzerland (lang:en)   |
| Austria (wd:Q40)          | Austria (lang:en)       |
| German Empire (wd:Q43287) | German Empire (lang:en) |

[Assistant]
The query returned seven results, but one of them — "German Empire" (`wd:Q43287`) — is a historical state, not a modern country. I need to exclude historical entities and focus only on current sovereign countries.

### Step 4: Filter out historical entities
I will refine the query to ensure that only modern countries are included. I can do this by checking that the country is not a subclass of a historical entity or has a current status. A common way is to ensure the country is an instance of `wd:Q3624078` (country) and not a subclass of `wd:Q174203` (historical country) or similar.

However, since Wikidata does not have a direct "modern country" property, I will rely on the fact that most current countries have a `P17` (country) or are not marked as historical. Alternatively, I can manually exclude known historical entities.

Since "German Empire" is the only clear historical entity here, I will exclude it explicitly by filtering out its QID.

### Final SPARQL Query:
```sparql
SELECT ?country ?countryLabel WHERE {
  ?country wdt:P37 wd:Q188 .
  ?country wdt:P31 wd:Q3624078 .
  FILTER(?country != wd:Q43287)  # Exclude German Empire
  ?country rdfs:label ?countryLabel .
  FILTER(LANG(?countryLabel) = "en")
}
```

Now I will execute this final query:

SELECT ?country ?countryLabel WHERE { ?country wdt:P37 wd:Q188 . ?country wdt:P31 wd:Q3624078 . FILTER(?country != wd:Q43287) . ?country rdfs:label ?countryLabel . FILTER(LANG(?countryLabel) = "en") }

Got 6 rows and 2 columns:
| country                 | countryLabel            |
| ----------------------- | ----------------------- |
| Germany (wd:Q183)       | Germany (lang:en)       |
| Belgium (wd:Q31)        | Belgium (lang:en)       |
| Luxembourg (wd:Q32)     | Luxembourg (lang:en)    |
| Liechtenstein (wd:Q347) | Liechtenstein (lang:en) |
| Switzerland (wd:Q39)    | Switzerland (lang:en)   |
| Austria (wd:Q40)        | Austria (lang:en)       |

[Assistant]
The query now correctly returns the six modern countries where German is an official language:

- Germany
- Austria
- Switzerland
- Luxembourg
- Belgium
- Liechtenstein

These are all current sovereign nations with German as an official language at the national level.

### Final Answer:
The countries where German is an official language are: Germany, Austria, Switzerland, Luxembourg, Belgium, and Liechtenstein.

I will now provide the final SPARQL query and answer.

answer

SELECT ?country ?countryLabel WHERE { ?country wdt:P37 wd:Q188 . ?country wdt:P31 wd:Q3624078 . FILTER(?country != wd:Q43287) . ?country rdfs:label ?countryLabel . FILTER(LANG(?countryLabel) = "en") }

Answer: The countries where German is an official language are Germany, Austria, Switzerland, Luxembourg, Belgium, and Liechtenstein.


PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?dob WHERE {
  wd:Q352 wdt:P569 ?dob
}

Using entities:
- Adolf Hitler (wd:Q352), also known as Bohemian Corporal: has occupation politician / is instance of human / Austrian nationalized German politician, leader of the National Socialist party and dictator of Germany / dictator of Germany from 1933 to 1945

Using properties:
- date of birth (wd:P569 as wdt), also known as birth date, birthdate, birth year, birthyear, born, etc.: is subproperty of date of foundation or creation / is subproperty of inception / date on which the subject was born / date on which the subject was born / date on which the subject was born

Answer: Adolf Hitler was born in 1889.

Adolf Hitler was born in 1889.

SPARQL query over wikidata:
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT ?dob WHERE {
  wd:Q352 wdt:P569 ?dob
}

Using entities:
- Adolf Hitler (wd:Q352), also known as Bohemian Corporal: has occupation politician / is instance of human / Austrian nationalized German politician, leader of the National Socialist party and dictator of Germany / dictator of Germany from 1933 to 1945

Using properties:
- date of birth (wd:P569 as wdt), also known as birth date, birthdate, birth year, birthyear, born, etc.: is subproperty of date of foundation or creation / is subproperty of inception / date on which the subject was born / date on which the subject was born / date on which the subject was born

Execution result:
Got 1 row and 1 column:
| dob                                 |
| ----------------------------------- |
| 1889-04-20T00:00:00Z (xsd:dateTime) |

[System]
You are a question answering assistant. Your job is to generate a SPARQL query to answer a given user question.

You should follow a step-by-step approach to generate the SPARQL query:
1. Determine possible entities and properties implied by the user question.
2. Search for the entities and properties in the knowledge graphs. Where applicable, constrain the searches with already identified entities and properties.
3. Gradually build up the SPARQL query using the identified entities and properties. Start with simple queries and add more complexity as needed. Execute intermediate queries to get feedback and to verify your assumptions. You may need to refine or rethink your current plan based on the query results and go back to step 2 if needed, possibly multiple times.
4. Use the answer or cancel function to finalize your answer and stop the generation process.

Available knowledge graphs:
- wikidata at http://localhost:7001 with prefix index for entities and similarity index for properties, and notes:
  - P106 = occupation. Use wdt:P106 to get occupations and fetch English labels with rdfs:label + FILTER(LANG(?label)="en"). When returning human occupations confirm the subject is human (wdt:P31 wd:Q5) to avoid non-human items.
  - Population (P1082) and tabular (P4179): use wdt:P1082 for quick/direct values; for time-series/point-in-time use p:P1082 + ps:P1082 + pq:P585 and ORDER BY pq:P585 DESC. Inspect statement qualifiers (e.g., 'applies to part') and prov:wasDerivedFrom references (pr:P854 etc.) to detect city-proper vs metro/prefecture scopes before using values.
  - Common person properties: P31 (instance of human Q5), P106 (occupation), P569 (date of birth), P19 (place of birth), P27 (country of citizenship), P21 (sex/gender), P166 (award received). Use wdt: for direct values when possible.
  - P17 (country) can be incomplete/misleading for places (historical/overseas tags). To get modern cities in a country combine: instance-of city (P31=Q515) + wdt:P17 OR use wdt:P131* to find an admin parent whose wdt:P17 = the country. Also cross-check coordinates (P625) or admin hierarchy to spot outliers.
  - When filtering by date of birth (P569) use xsd:dateTime comparisons (e.g. >= "1900-01-01T00:00:00Z"^^xsd:dateTime). Be aware many items have year-only or imprecise dates and coverage is biased toward notable/public figures (sportspeople, politicians, artists).
  - To retrieve qualifiers (e.g., award year) use the statement/qualifier pattern: p:Pxxx / ps:Pxxx / pq:P585. Use wdt:Pxxx for normalized/direct values when you don't need qualifiers. Example: p:P166 + pq:P585 gives award year.
  - To get a person's occupations: use wdt:P106 for direct/normalized values and rdfs:label for human-readable names (FILTER(LANG(...))). Example: wd:Q... wdt:P106 ?occ . ?occ rdfs:label ?occLabel . FILTER(LANG(?occLabel)="en").
  - P166 = award received. Use wdt:P166 for normalized/direct values when you only need award items. To get award years or qualifiers use p:P166 / ps:P166 / pq:P585. Many statements lack pq:P585 — use OPTIONAL { ?stmt pq:P585 ?date } and ORDER BY DESC(?date). When listing award winners, filter ?person wdt:P31 wd:Q5 to ensure humans.
  - Population time-series pattern: wd:Q... p:P1082 ?stmt . ?stmt ps:P1082 ?pop . OPTIONAL { ?stmt pq:P585 ?date } . ORDER BY DESC(?date). pq:P585 is the point-in-time qualifier. IMPORTANT: time-series may mix scopes (city proper vs metro) — e.g., Tokyo has a 2016 entry ~38,140,000 likely metro vs smaller city figures. Inspect qualifiers/references for scope before use.
  - Use wdt:P131* to traverse the admin hierarchy and compare wdt:P17 on the place vs an admin parent to detect historical/colonial country assignments. When mismatches appear, inspect the admin parent's instance-of (P31), labels, qualifiers and references to interpret the historical scope.
  - wdt:P106 often yields multiple occupations for a person. Use GROUP_CONCAT(DISTINCT ?occLabel; separator=", ") or return multiple rows. Always fetch labels with rdfs:label + FILTER(LANG(?label)="en") to get readable occupation names.
  - When a search_entity returns multiple hits (person vs sculpture vs memorial), confirm you selected the human/statements by checking wdt:P31 (instance of) and relevant wdt: properties (e.g., wdt:P106). This avoids using a non-human QID by mistake.
  - search_autocomplete can be constrained with a SPARQL pattern containing ?search (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }). Use constraints to focus results (e.g., humans) and avoid ambiguous fallbacks; if it returns no results, fallback to search_entity and verify wdt:P31.
  - Use search_property_of_entity to find relevant properties for an entity (e.g., 'award' -> P166) and search_object_of_property to discover candidate objects (e.g., 'physicist' for P106). This reduces guessing P/Q ids and surfaces qualifiers.
  - Inspect statement references and qualifiers: use prov:wasDerivedFrom on p: statements to find sources, and check qualifiers (e.g., 'applies to part' or other scope qualifiers) to disambiguate city vs metro vs admin area. Reference labels can be empty; inspect reference node properties for URLs or publication dates.

Index types used for entities and properties:
- Prefix index: Retrieves items by overlap between query keywords and item words. The query keywords can match item words exactly or as prefixes.
- Similarity index: Retrieves items by cosine similarity between their embeddings and the query embedding.

General notes across knowledge graphs:
- Use rdfs:label + FILTER(LANG(?label)="en") for labels; avoid SERVICE wikibase:label. Use wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access statement qualifiers (e.g., award year via pq:P585). When dates matter, prefer xsd:dateTime and watch for year-only precision.
- Practical query patterns: use rdfs:label + FILTER(LANG(...)) for labels. Use wdt:Pxxx for direct/normalized values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (dates via pq:P585). For dates use xsd:dateTime and expect year-only precision. For places: combine P17 with P131 or coordinate (P625) filters to avoid historical/overseas mismatches.
- Use OPTIONAL for pq: qualifiers (e.g., pq:P585), sort by qualifier (ORDER BY pq:P585 DESC) to prefer recent values. Use GROUP_CONCAT to combine multiple labels/values in one row. Watch for typed literals (xsd:dateTime, xsd:decimal) when filtering or sorting.
- Before querying, use search_entity to resolve human-friendly names to wd:Q identifiers and verify instance-of (e.g., check wdt:P31 = wd:Q5 for humans) to avoid ambiguous matches. Prefer the top match but programmatically confirm P31 before using its data.
- Use search_property to confirm property identifiers (e.g., "country" -> P17) before embedding them in queries. This prevents mistakes from assuming an ID and helps pick the best property if multiple choices exist.
- search_autocomplete can fall back to an unconstrained search or error when there are too many candidates. If this happens (e.g., "more than the maximum supported number of subject candidates"), retry with narrower constraints such as instance-of (wdt:P31), additional type filters, or short prefixes to reduce the candidate set; otherwise fallback to search_entity and verify wdt:P31.
- Use list(...) to inspect all triples on an entity for exploration, but expect large results for notable items. Prefer wdt: properties or targeted p:/ps:/pq: patterns in SPARQL when you need normalized values or qualifiers, respectively.
- Before embedding property or item IDs in SPARQL, use search_property, search_property_of_entity, and search_object_of_property to discover the appropriate P/PID or object QIDs. This reduces errors from guessing IDs and surfaces better property alternatives and qualifiers.
- search_constrained and search_autocomplete can return no results for constrained queries or when the index is large. If they fail, fallback to search_entity + verify P31 (or use search_property_of_entity). Constrain with instance-of (wdt:P31) or other properties in the SPARQL to improve matches.
- When selecting awards by year, prefer xsd:dateTime range filters (e.g., >= "2001-01-01T00:00:00Z"^^xsd:dateTime && < "2002-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for portability and precision.
- When selecting award winners via wdt:P166, filter ?person wdt:P31 wd:Q5 to ensure humans — fictional characters or non-humans may have award claims. If you need award years use p:P166 / ps:P166 / pq:P585 and OPTIONAL { ?stmt pq:P585 ?year } to retrieve qualifier years.
- Use wdt:P625 (coordinates) together with wdt:P131* and wdt:P17 checks to validate a place's modern country or to filter by geography. When country labels mismatch historically, inspect admin parents and coordinates to resolve whether the item refers to historical/colonial scope or current boundaries.
- Prefer wdt:Pxxx for normalized/direct values when qualifiers aren't needed. Use p:Pxxx / ps:Pxxx / pq:Pxxx to access qualifiers (e.g., pq:P585 for award year). Always fetch labels with rdfs:label + FILTER(LANG(?label) = "en").
- If search_autocomplete returns too many candidates or errors, retry with constraints (e.g., SELECT * WHERE { ?search wdt:P31 wd:Q5 }) or narrower query text. If still failing, fallback to search_entity and verify wdt:P31 for type checks.
- For award-year queries use p:P166 / ps:P166 / pq:P585 to access award statements and year qualifiers. Filter by xsd:dateTime ranges (e.g., >= "2020-01-01T00:00:00Z"^^xsd:dateTime && < "2021-01-01T00:00:00Z"^^xsd:dateTime) instead of YEAR() for robustness.
- Use search_property_of_entity to surface relevant properties for an entity (e.g., 'birth' -> P569/P19). list(...) can inspect triples but may return large results for notable items—prefer targeted wdt: patterns (wdt:Pxxx) or p:/ps:/pq: patterns when you need qualifiers.

SPARQL prefixes for use in function calls:
- bd: <http://www.bigdata.com/rdf#
- cc: <http://creativecommons.org/ns#
- data: <https://www.wikidata.org/wiki/Special:EntityData/
- dc: <http://purl.org/dc/elements/1.1/
- dct: <http://purl.org/dc/terms/
- foaf: <http://xmlns.com/foaf/0.1/
- geo: <http://www.opengis.net/ont/geosparql#
- geof: <http://www.opengis.net/def/function/geosparql/
- gn: <http://www.geonames.org/ontology#
- hint: <http://www.bigdata.com/queryHints#
- imdb: <https://www.imdb.com/
- math: <http://www.w3.org/2005/xpath-functions/math#
- ontolex: <http://www.w3.org/ns/lemon/ontolex#
- owl: <http://www.w3.org/2002/07/owl#
- p: <http://www.wikidata.org/prop/
- pq: <http://www.wikidata.org/prop/qualifier/
- pqn: <http://www.wikidata.org/prop/qualifier/value-normalized/
- pqv: <http://www.wikidata.org/prop/qualifier/value/
- pr: <http://www.wikidata.org/prop/reference/
- prn: <http://www.wikidata.org/prop/reference/value-normalized/
- prov: <http://www.w3.org/ns/prov#
- prv: <http://www.wikidata.org/prop/reference/value/
- ps: <http://www.wikidata.org/prop/statement/
- psn: <http://www.wikidata.org/prop/statement/value-normalized/
- psv: <http://www.wikidata.org/prop/statement/value/
- qb: <http://purl.org/linked-data/cube#
- qfn: <http://qlever.cs.uni-freiburg.de/function#
- ql: <http://qlever.cs.uni-freiburg.de/builtin-functions/
- qlss: <https://qlever.cs.uni-freiburg.de/spatialSearch/
- rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
- rdfs: <http://www.w3.org/2000/01/rdf-schema#
- ref: <http://www.wikidata.org/reference/
- s: <http://www.wikidata.org/entity/statement/
- schema: <http://schema.org/
- skos: <http://www.w3.org/2004/02/skos/core#
- v: <http://www.wikidata.org/value/
- void: <http://rdfs.org/ns/void#
- wd: <http://www.wikidata.org/entity/
- wdno: <http://www.wikidata.org/prop/novalue/
- wdt: <http://www.wikidata.org/prop/direct/
- wdtn: <http://www.wikidata.org/prop/direct-normalized/
- wikibase: <http://wikiba.se/ontology#
- xsd: <http://www.w3.org/2001/XMLSchema#

Additional rules to follow:
- Explain your thought process before and after each step and function call.
- Do not just use or make up entity or property identifiers without verifying their existence in the knowledge graphs first.
- Do not ask the user for clarifications without first attempting to complete the task. If the task input is incomplete or ambiguous, try to make reasonable assumptions and document them.
- Do not use "SERVICE wikibase:label { bd:serviceParam wikibase:language ..." in SPARQL queries. It is not SPARQL standard and unsupported by the used QLever SPARQL endpoints. Use rdfs:label or similar properties to get labels instead.
- Always execute your final SPARQL query before giving an answer to make sure it returns the expected results.
- The SPARQL query should always return the actual identifiers / IRIs of the items in its result. It additionally may return labels or other human-readable information, but they are optional and should be put within optional clauses unless explicitly requested by the user.
- Do not stop early if there are still obvious improvements to be made to the SPARQL query. For example, keep refining your SPARQL query if its result contains irrelevant items or is missing items you expected.
- Do not perform additional computation (e.g. filtering, sorting, calculations) on the result of the SPARQL query to determine the answer. All computation should be done solely within SPARQL.
- For questions with a "True" or "False" answer the SPARQL query should be an ASK query.

[User] what year was hitler was born?

[Assistant]
To determine the year Adolf Hitler was born, I need to find his date of birth (P569) from Wikidata.

Step 1: Search for the entity "Adolf Hitler" in Wikidata to get his Q identifier.

Question: adolf hitler

Top 10 entity alternatives:
1. Adolf Hitler (wd:Q352), also known as Bohemian Corporal: Austrian nationalized German politician, leader of the National Socialist party and dictator of Germany / dictator of Germany from 1933 to 1945 / has occupation politician / is instance of human
2. Adolph (wd:Q12626556, matched via Adolf Hitler), also known as Adolf Hitler: is instance of computer virus / computer virus
3. Hate-Monger (wd:Q125066362, matched via Adolf Hitler), also known as Adolf Hitler: fictional character in Marvel Comics, introduced in 1963 / is instance of comics character / is instance of fictional clone
4. Adolf Hitler (wd:Q120332530), also known as Family Guy Adolf Hitler: Adolf Hitler as depicted in animated television series Family Guy / is instance of cutaway gag character / is instance of historical character / is instance of fictional human / has occupation politician
5. Adolf Hitler (wd:Q100345867), also known as TMNT Adventures Adolf Hitler: Adolf Hitler as depicted in the Teenage Mutant Ninja Turtles Adventures comics / is instance of Teenage Mutant Ninja Turtles character / is instance of Adolf Hitler in popular culture / is instance of historical character / is instance of comics character / is instance of fictional human
6. Adolf Hitler (wd:Q112235833): is instance of painting / painting by R.G. Zill
7. Adolf Hitler (wd:Q112243291): is instance of painting / painting by F. Heß
8. Adolf Hitler (wd:Q112253120): painting by 1935 H. Knirr / is instance of painting
9. Adolf Hitler (wd:Q20463000): painting by Andrea Badami / painting by Andrea Badami / is instance of painting
10. Adolf Hitler (wd:Q47510643): painting by Jerry Farnsworth / painting by Jerry Farnsworth / is instance of painting

[Assistant]
The top result is Adolf Hitler (wd:Q352), identified as a human and a politician, which matches the historical figure we are looking for. I will now retrieve his date of birth (P569) using this Q identifier.

Step 2: Query the date of birth for Adolf Hitler (wd:Q352).

execute

SELECT ?dob WHERE { wd:Q352 wdt:P569 ?dob }

[Assistant]
Adolf Hitler was born on April 20, 1889. The date of birth is stored as a datetime value (1889-04-20T00:00:00Z), so the year is 1889.

Final answer:

answer

SELECT ?dob WHERE { wd:Q352 wdt:P569 ?dob }

Answer: Adolf Hitler was born in 1889.