denason / wikimind
A powerful Laravel package for accessing structured knowledge from Wikidata. WikiMind helps you extract entities, properties, relationships, and metadata with intelligent query support. Ideal for building smart apps, auto-blogging systems, and AI-powered knowledge tools.
Requires
- php: >=8.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0
This package is auto-updated.
Last update: 2025-05-11 14:16:25 UTC
README
🧠A robust and developer-friendly Laravel package for querying Wikidata using SPARQL. With this package, you can seamlessly connect your Laravel application to Wikidata's vast and structured knowledge base, enabling access to entities, properties, and their relations in a programmatic and efficient manner.
Whether you're building educational tools, conducting data analysis, or enriching content with real-time knowledge, this package provides a fluent interface to fetch structured data directly from Wikidata.
Perfect for applications needing semantic data, linked entities, and flexible filters — with full Laravel
Say goodbye to raw API calls! With this package, you get full Laravel Facade support, smart query enhancements, and a streamlined interface for precise data retrieval.
Features
- Retrieve entity data (labels, descriptions, properties, etc.) from Wikidata.
- Fluent interface for constructing and executing SPARQL queries.
- Multi-language support (English, Persian, French, etc.).
- Efficient data filtering and advanced querying (supports DISTINCT queries).
- Retrieve related entity labels and descriptions.
- Easily integrate into your Laravel applications with Facade and Dependency Injection.
Requirements
- PHP >= 8.0
- Laravel >= 9.x
Installation
composer require denason/wikimind
Usage Examples
You can use the global wikiMindQuery()
helper or dependency injection with the interface to access all features.
Using Helper :
$streetEntity = \Denason\Wikimind\Facades\Wikimind::getEntityId('street'); // Q79007 return wikiMindQuery() ->lang('fa') ->where('street', 'P31', $streetEntity) ->where('street', 'P17', 'Q794') // ایران ->select(['street', 'streetLabel']) ->filter('!BOUND(?place)') ->limit(50) ->get('collection');
Available Methods
All methods are accessible via the wikiMindQuery()
helper or through dependency injection using the WikimindInterface
.
Method | Description |
---|---|
select() |
Specifies the variables to select in the query. |
where() |
Adds conditions to the query (subject, predicate, object). |
optional() |
Adds optional parts to the query. |
filter() |
Adds a filter condition. |
lang() |
Sets the language for the query (e.g., 'fa', 'en'). |
limit() |
Sets the number of results to return. |
distinct() |
Ensures the results are distinct (removes duplicates). |
orderBy() |
Specifies the variable and direction for ordering results. |
get() |
Executes the query and returns the results in the specified format (e.g., 'array', 'collection'). |
Dependency Injection Example
Instead of using the global wikiMindQuery()
helper, you can inject the WikimindInterface
directly into your controller, service, or job.
This approach takes advantage of Laravel's service container to resolve the interface to its concrete implementation automatically.
- Full support for Facades: You can use
WikimindFacade
for quick access to methods.
License
This package is open-sourced software licensed under the MIT license.