✓ Verified 💻 Development ✓ Enhanced Data

Query Wikidata

Transform natural language questions into SPARQL queries for Wikidata and generate beautiful HTML re

Rating
4.1 (264 reviews)
Downloads
1,291 downloads
Version
1.0.0

Overview

Transform natural language questions into SPARQL queries for Wikidata and generate beautiful HTML results pages.

Complete Documentation

View Source →

Wikidata Query Skill

When to Use This Skill

Use this skill when users want to:

  • Query Wikidata using natural language
  • Get comprehensive, multilingual data about entities
  • Access property-rich information (Wikidata has extensive properties)
  • Create visualizations of Wikidata query results
  • Generate HTML reports from SPARQL queries
  • Query data with better temporal coverage than DBpedia

Core Capabilities

Natural Language to SPARQL: Convert user questions into valid Wikidata SPARQL ✅ Query Execution: Execute queries against Wikidata Query Service ✅ HTML Generation: Create beautiful, interactive HTML result pages ✅ Multiple Output Formats: JSON, Markdown tables, or HTML ✅ Label Service: Automatic label resolution for human-readable results

Wikidata Endpoint

SPARQL Endpoint: https://query.wikidata.org/sparql Accept Header: application/sparql-results+json Method: HTTP GET with URL-encoded query User-Agent: Required (use Claude-Code-Wikidata-Skill/1.0)

Wikidata Naming Convention

Properties: wdt:P### (e.g., wdt:P57 for director) Entities: wd:Q### (e.g., wd:Q51566 for Spike Lee) Service: wikibase:label for automatic label resolution

Common Wikidata Properties

text
P31  - instance of
P57  - director
P577 - publication date
P2130 - cost/budget
P50  - author
P170 - creator
P19  - place of birth
P20  - place of death
P569 - date of birth
P570 - date of death
P27  - country of citizenship
P106 - occupation
P735 - given name
P734 - family name
P1082 - population
P36  - capital

Query Conversion Workflow

When a user provides a natural language prompt:

1. Identify Entity

Find the Wikidata Q-number for the main subject:

  • Use descriptive search if needed
  • Example: "Spike Lee" → wd:Q51566

2. Map to Wikidata Properties

Common mappings:

  • "directed by" → wdt:P57
  • "release date" / "published" → wdt:P577
  • "budget" → wdt:P2130
  • "born in" → wdt:P19
  • "author" / "written by" → wdt:P50
  • "population" → wdt:P1082
  • "capital" → wdt:P36

3. Construct SPARQL Query

Template with Label Service:

sparql
SELECT DISTINCT ?item ?itemLabel ?property
WHERE {
  ?item wdt:P### wd:Q### ;     # property: entity
        wdt:P31 wd:Q### .       # instance of: type
  OPTIONAL { ?item wdt:P### ?property . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY <sort_criteria>
LIMIT <number>

CRITICAL: Always include the label service for human-readable output!

4. Execute Query

Use curl with proper headers:

bash
curl -s -G "https://query.wikidata.org/sparql" \
  -H "Accept: application/sparql-results+json" \
  -H "User-Agent: Claude-Code-Wikidata-Skill/1.0" \
  --data-urlencode "query=<SPARQL_QUERY>"

5. Generate Output

Options:

  • JSON: Raw query results
  • Markdown Table: Formatted for terminal display
  • HTML Page: Interactive, styled results page with Wikidata branding

Example Query Patterns

Pattern 1: Films by Director

User: "Show me movies directed by Spike Lee"

SPARQL:

sparql
SELECT DISTINCT ?film ?filmLabel ?publicationDate ?budget
WHERE {
  ?film wdt:P57 wd:Q51566 ;        # director: Spike Lee
        wdt:P31 wd:Q11424 .         # instance of: film
  OPTIONAL { ?film wdt:P577 ?publicationDate . }
  OPTIONAL { ?film wdt:P2130 ?budget . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?publicationDate)

Pattern 2: Books by Author

User: "List books written by J.K. Rowling"

SPARQL:

sparql
SELECT DISTINCT ?book ?bookLabel ?publicationDate
WHERE {
  ?book wdt:P50 wd:Q34660 ;        # author: J.K. Rowling
        wdt:P31 wd:Q7725634 .      # instance of: literary work
  OPTIONAL { ?book wdt:P577 ?publicationDate . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?publicationDate

Pattern 3: People by Occupation

User: "Who are famous physicists born in the 20th century?"

SPARQL:

sparql
SELECT ?person ?personLabel ?birthDate ?birthPlaceLabel
WHERE {
  ?person wdt:P106 wd:Q169470 ;     # occupation: physicist
          wdt:P569 ?birthDate .     # date of birth
  OPTIONAL { ?person wdt:P19 ?birthPlace . }
  FILTER(YEAR(?birthDate) >= 1900 && YEAR(?birthDate) < 2000)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?birthDate
LIMIT 50

Pattern 4: Geographic Queries

User: "What are the capitals of European countries?"

SPARQL:

sparql
SELECT ?country ?countryLabel ?capital ?capitalLabel ?population
WHERE {
  ?country wdt:P30 wd:Q46 ;         # continent: Europe
           wdt:P36 ?capital .       # capital
  ?capital wdt:P1082 ?population .  # population
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?population)

Pattern 5: Award Winners

User: "List Nobel Prize in Literature winners"

SPARQL:

sparql
SELECT ?person ?personLabel ?awardYear
WHERE {
  ?person wdt:P166 wd:Q37922 ;      # award received: Nobel Prize in Literature
          wdt:P569 ?birthDate .
  OPTIONAL { ?person wdt:P166 ?award .
             ?award wdt:P585 ?awardYear . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?awardYear)

Finding Wikidata Entities

If you need to find a Q-number for an entity:

Method 1: Search Query

sparql
SELECT ?item ?itemLabel ?itemDescription
WHERE {
  ?item rdfs:label "Spike Lee"@en .
  ?item wdt:P106 wd:Q2526255 .      # occupation: film director
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
LIMIT 5

Method 2: Use Wikidata search

  • Go to https://www.wikidata.org
  • Search for the entity
  • Note the Q-number in the URL

HTML Template Generation

When generating HTML results:

Required Elements

  • Title: Question or query description
  • Statistics: Number of results
  • Table: Results with hyperlinked Wikidata entities
  • SPARQL Query Display: Show the executed query with syntax highlighting
  • Footer: Link to Wikidata, attribution, license info

Wikidata Branding

  • Use blue/green color scheme (Wikidata colors)
  • Include Wikidata logo reference
  • Link to https://www.wikidata.org
  • Mention collaborative nature

HTML Template Structure

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>[Query Description] - Wikidata</title>
    <style>
        /* Blue/green Wikidata theme */
        /* Responsive design */
        /* Interactive elements */
    </style>
</head>
<body>
    <div class="container">
        <h1>[Question/Title]</h1>
        <div class="wikidata-badge">Wikidata</div>
        <div class="stats">[Results count]</div>
        <table>[Results with Wikidata links]</table>
        <div class="sparql-query">[Query code]</div>
        <div class="footer">[Attribution + CC0 license]</div>
    </div>
</body>
</html>

Error Handling

Timeout Errors

Wikidata Query Service has query timeout limits:
  • Add LIMIT clause (default: 100)
  • Simplify complex joins
  • Remove unnecessary OPTIONAL clauses

No Results

  • Check entity Q-numbers
  • Verify property P-numbers
  • Suggest using Wikidata search

Label Service Issues

  • Always include: SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  • Use ?variableLabel to get human-readable names

Best Practices

  • Always use Label Service: Makes results human-readable
  • Check Q/P numbers: Verify entity and property identifiers
  • Add LIMIT: Default to LIMIT 100
  • Use OPTIONAL: For properties that may not exist
  • Filter by language: When not using label service
  • Order results: Make output meaningful
  • Include User-Agent: Required by Wikidata Query Service

Wikidata vs DBpedia

Use Wikidata when:

  • Need better temporal data (publication dates, birth dates)
  • Want multilingual support
  • Need comprehensive property coverage
  • Require structured identifiers (Q/P system)
Use DBpedia when:
  • Querying Wikipedia-specific data
  • Need budget/financial information (better coverage)
  • Working with English-only queries

Example Session

User: "List all films directed by Christopher Nolan with release dates and budgets"

Assistant: "I'll query Wikidata for Christopher Nolan's films.

First, I need to find his Wikidata ID..." [Searches and finds wd:Q25191]

"Executing SPARQL query against Wikidata Query Service..."

[Constructs and executes query]

"Found 12 films! Would you like the results as:

  • JSON
  • Markdown table
  • HTML page"
User: "HTML page"

Assistant: [Generates beautiful HTML page with Wikidata branding]

"✓ HTML page generated and saved to: ./christopher_nolan_films.html ✓ 12 films found ✓ 10 films with release dates ✓ 5 films with budget information"

Output Preferences

Always ask the user:

text
"Would you like the results as:
1. JSON (raw data)
2. Markdown table (terminal display)
3. HTML page (interactive visualization)"

Scope

This skill handles:

  • Queries about entities in Wikidata
  • Structured data extraction with properties
  • Multi-property queries
  • Temporal queries (dates, years)
  • Result formatting and visualization
This skill does NOT handle:
  • Full-text search (use Wikidata search instead)
  • Data modification (read-only queries)
  • Non-English labels (configure in label service)

Important Notes

  • User-Agent Required: Always include User-Agent header
  • Rate Limiting: Be respectful of query service limits
  • Query Timeout: 60 seconds maximum
  • License: All Wikidata data is CC0 (public domain)

Version: 1.0.0 Endpoint: https://query.wikidata.org/sparql Data Source: Wikidata (collaborative knowledge base) License: CC0 (public domain)

Installation

Terminal bash

openclaw install query-wikidata
    
Copied!

💻Code Examples

P36 - capital

p36---capital.txt
## Query Conversion Workflow

When a user provides a natural language prompt:

### 1. Identify Entity

Find the Wikidata Q-number for the main subject:
- Use descriptive search if needed
- Example: "Spike Lee" → `wd:Q51566`

### 2. Map to Wikidata Properties

**Common mappings:**
- "directed by" → `wdt:P57`
- "release date" / "published" → `wdt:P577`
- "budget" → `wdt:P2130`
- "born in" → `wdt:P19`
- "author" / "written by" → `wdt:P50`
- "population" → `wdt:P1082`
- "capital" → `wdt:P36`

### 3. Construct SPARQL Query

**Template with Label Service:**

LIMIT <number>

limit-number.txt
**CRITICAL**: Always include the label service for human-readable output!

### 4. Execute Query

Use curl with proper headers:

--data-urlencode "query=<SPARQL_QUERY>"

---data-urlencode-querysparqlquery.txt
### 5. Generate Output

**Options:**
- **JSON**: Raw query results
- **Markdown Table**: Formatted for terminal display
- **HTML Page**: Interactive, styled results page with Wikidata branding

## Example Query Patterns

### Pattern 1: Films by Director
**User**: "Show me movies directed by Spike Lee"

**SPARQL**:

ORDER BY DESC(?publicationDate)

order-by-descpublicationdate.txt
### Pattern 2: Books by Author
**User**: "List books written by J.K. Rowling"

**SPARQL**:

ORDER BY ?publicationDate

order-by-publicationdate.txt
### Pattern 3: People by Occupation
**User**: "Who are famous physicists born in the 20th century?"

**SPARQL**:

LIMIT 50

limit-50.txt
### Pattern 4: Geographic Queries
**User**: "What are the capitals of European countries?"

**SPARQL**:

ORDER BY DESC(?population)

order-by-descpopulation.txt
### Pattern 5: Award Winners
**User**: "List Nobel Prize in Literature winners"

**SPARQL**:

ORDER BY DESC(?awardYear)

order-by-descawardyear.txt
## Finding Wikidata Entities

If you need to find a Q-number for an entity:

**Method 1: Search Query**

LIMIT 5

limit-5.txt
**Method 2: Use Wikidata search**
- Go to https://www.wikidata.org
- Search for the entity
- Note the Q-number in the URL

## HTML Template Generation

When generating HTML results:

### Required Elements
1. **Title**: Question or query description
2. **Statistics**: Number of results
3. **Table**: Results with hyperlinked Wikidata entities
4. **SPARQL Query Display**: Show the executed query with syntax highlighting
5. **Footer**: Link to Wikidata, attribution, license info

### Wikidata Branding
- Use blue/green color scheme (Wikidata colors)
- Include Wikidata logo reference
- Link to https://www.wikidata.org
- Mention collaborative nature

### HTML Template Structure

</html>

html.txt
## Error Handling

### Timeout Errors
Wikidata Query Service has query timeout limits:
- Add LIMIT clause (default: 100)
- Simplify complex joins
- Remove unnecessary OPTIONAL clauses

### No Results
- Check entity Q-numbers
- Verify property P-numbers
- Suggest using Wikidata search

### Label Service Issues
- Always include: `SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }`
- Use `?variableLabel` to get human-readable names

## Best Practices

1. **Always use Label Service**: Makes results human-readable
2. **Check Q/P numbers**: Verify entity and property identifiers
3. **Add LIMIT**: Default to LIMIT 100
4. **Use OPTIONAL**: For properties that may not exist
5. **Filter by language**: When not using label service
6. **Order results**: Make output meaningful
7. **Include User-Agent**: Required by Wikidata Query Service

## Wikidata vs DBpedia

**Use Wikidata when:**
- Need better temporal data (publication dates, birth dates)
- Want multilingual support
- Need comprehensive property coverage
- Require structured identifiers (Q/P system)

**Use DBpedia when:**
- Querying Wikipedia-specific data
- Need budget/financial information (better coverage)
- Working with English-only queries

## Example Session

**User**: "List all films directed by Christopher Nolan with release dates and budgets"

**Assistant**:
"I'll query Wikidata for Christopher Nolan's films.

First, I need to find his Wikidata ID..."
[Searches and finds wd:Q25191]

"Executing SPARQL query against Wikidata Query Service..."

[Constructs and executes query]

"Found 12 films! Would you like the results as:
1. JSON
2. Markdown table
3. HTML page"

**User**: "HTML page"

**Assistant**:
[Generates beautiful HTML page with Wikidata branding]

"✓ HTML page generated and saved to: ./christopher_nolan_films.html
✓ 12 films found
✓ 10 films with release dates
✓ 5 films with budget information"

## Output Preferences

Always ask the user:

Tags

#web_and-frontend-development #data

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author kidehen
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install query-wikidata