DBPedia предоставляет несколько способов доступа к данным, каждый из которых подходит для разных сценариев использования:
Основной способ взаимодействия с DBPedia - через SPARQL endpoint, который позволяет выполнять сложные запросы к базе знаний.
URL: https://dbpedia.org/sparql
SPARQL endpoint работает на базе OpenLink Virtuoso
Пример использования:
curl -H "Accept: application/json" "https://dbpedia.org/sparql?query=select+distinct+%3FConcept+where+%7B%5B%5D+a+%3FConcept%7D+LIMIT+100"Позволяет получать информацию о конкретных сущностях через https-запросы.
Формат URL: https://dbpedia.org/resource/{Entity_Name}
Механизм работы:
- Всегда возвращают http 303 See Other (например,
https://dbpedia.org/resource/Berlin) - В заголовке Location указывается URI в формате
https://dbpedia.org/data/{Entity_Name}.{extension}
Поддерживаемые форматы:
- RDF/XML (
application/rdf+xml) - Turtle (
text/turtle) - JSON-LD (
application/ld+json) - N-Triples (
application/n-triples) - TriG (
application/trig) - Atom (
application/atom+xml) - JSON (
application/json)
Пример использования:
curl -L -H "Accept: application/rdf+xml" https://dbpedia.org/resource/Apache_KafkaДополнительные параметры:
https://dbpedia.org/page/{Entity_Name}: HTML страница с описанием сущностиhttps://dbpedia.org/data/{Entity_Name}.rdf: Прямой доступ к RDF/XML представлению
Новый интерфейс на основе Spring и Swagger, предоставляющий более удобный способ доступа к данным.
Особенности:
- Более простой в использовании по сравнению с SPARQL
- Доступ через DBpedia Ontology
- Поддержка Swagger UI для тестирования и документации
- RESTful архитектура с предсказуемыми URL путями
Доступные endpoints:
/api/entity/{entityId}: Получение информации о сущности/api/search: Поиск сущностей по ключевым словам/api/category/{categoryId}: Получение сущностей из категории
| Характеристика | DBPedia | Wikidata |
|---|---|---|
| Источник данных | Автоматически извлекается из Wikipedia | Создается и поддерживается сообществом |
| Структура | Структурированная, основанная на шаблонах Wikipedia | Гибкая, пользовательская структура с произвольными свойствами |
| Онтология | DBpedia Ontology с предопределенными классами и свойствами | Гибкие свойства у каждой модели |
| Покрытие | Основано на статьях Wikipedia всех языковых версий | Более широкое, включая внешние источники |
| Качество данных | Зависит от качества статей Wikipedia | Проверяется сообществом |
| Язык запросов | SPARQL | SPARQL |
| Идентификаторы | URI на основе названий статей Wikipedia (https://dbpedia.org/resource/...) | Q-идентификаторы (Q1, Q2, ...) с мультиязычными метками |
| Связи | Автоматически извлеченные связи из текста и структуры Wikipedia | Ручное создание связей сообществом |
URI для конкретных сущностей. Формируется на основе названия статьи в Wikipedia с заменой пробелов на подчеркивания.
Примеры:
https://dbpedia.org/resource/Apache_Kafkahttps://dbpedia.org/resource/Googlehttps://dbpedia.org/resource/Python_(programming_language)https://dbpedia.org/resource/New_York_Cityhttps://dbpedia.org/resource/Barack_Obama
Онтология DBpedia с предопределенными классами и свойствами для структурирования данных.
Основные классы:
dbo:Software- программное обеспечениеdbo:Company- компанияdbo:Person- персоналияdbo:ProgrammingLanguage- язык программирования- и т.д.
Основные свойства:
dbo:abstract- описание/аннотация статьиdbo:developer- разработчик (организация или персона)dbo:product- продукт компанииdbo:license- лицензия- и т.д.
https://www.w3.org/2000/01/rdf-schema#
Основные свойства:
rdfs:label- название сущности (может быть на разных языках)rdfs:comment- комментарий или описаниеrdfs:subClassOf- отношение подкласса (наследование)- и т.д.
https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
Основные свойства:
dct:title- заголовокdct:creator- создательdct:subject- тема/категорияdct:description- описание- и т.д.
https://xmlns.com/foaf/spec/
Для получения информации о технологии Apache Kafka, можно использовать следующий SPARQL-запрос:
SELECT ?label ?abstract ?developer ?license ?homepage ?type ?releaseDate ?latestReleaseVersion ?programmingLanguage ?category ?influenced ?influencedBy ?relatedTechnologies
WHERE {
dbr:Apache_Kafka rdfs:label ?label .
OPTIONAL { dbr:Apache_Kafka dbo:abstract ?abstract . }
OPTIONAL { dbr:Apache_Kafka dbo:developer ?developer . }
OPTIONAL { dbr:Apache_Kafka dbo:license ?license . }
OPTIONAL { dbr:Apache_Kafka dbo:homepage ?homepage . }
OPTIONAL { dbr:Apache_Kafka a ?type . }
OPTIONAL { dbr:Apache_Kafka dbo:releaseDate ?releaseDate . }
OPTIONAL { dbr:Apache_Kafka dbo:latestReleaseVersion ?latestReleaseVersion . }
OPTIONAL { dbr:Apache_Kafka dbo:programmingLanguage ?programmingLanguage . }
OPTIONAL { dbr:Apache_Kafka dct:subject ?category . }
OPTIONAL { ?influenced dbo:influencedBy dbr:Apache_Kafka . }
OPTIONAL { dbr:Apache_Kafka dbo:influencedBy ?influencedBy . }
OPTIONAL { ?relatedTechnologies dbo:wikiPageWikiLink dbr:Apache_Kafka .
FILTER (?relatedTechnologies != dbr:Apache_Kafka) }
FILTER (lang(?label) = 'en')
}
LIMIT 3Пример ответа:
{
"head": {
"link": [],
"vars": [
"label",
"abstract",
"developer",
"license",
"homepage",
"type",
"releaseDate",
"latestReleaseVersion",
"programmingLanguage",
"category",
"influenced",
"influencedBy",
"relatedTechnologies"
]
},
"results": {
"distinct": false,
"ordered": true,
"bindings": [
{
"label": {
"type": "literal",
"xml:lang": "en",
"value": "Apache Kafka"
},
"developer": {
"type": "uri",
"value": "http://dbpedia.org/resource/The_Apache_Software_Foundation"
},
"license": {
"type": "uri",
"value": "http://dbpedia.org/resource/Apache_License"
},
"type": {
"type": "uri",
"value": "http://www.w3.org/2002/07/owl#Thing"
},
"programmingLanguage": {
"type": "uri",
"value": "http://dbpedia.org/resource/Scala_(programming_language)"
},
"category": {
"type": "uri",
"value": "http://dbpedia.org/resource/Category:Free_software_programmed_in_Java_(programming_language)"
},
"relatedTechnologies": {
"type": "uri",
"value": "http://dbpedia.org/resource/IBM_System_Management_Facilities"
}
},
{
"label": {
"type": "literal",
"xml:lang": "en",
"value": "Apache Kafka"
},
"developer": {
"type": "uri",
"value": "http://dbpedia.org/resource/The_Apache_Software_Foundation"
},
"license": {
"type": "uri",
"value": "http://dbpedia.org/resource/Apache_License"
},
"type": {
"type": "uri",
"value": "http://www.w3.org/2002/07/owl#Thing"
},
"programmingLanguage": {
"type": "uri",
"value": "http://dbpedia.org/resource/Scala_(programming_language)"
},
"category": {
"type": "uri",
"value": "http://dbpedia.org/resource/Category:Free_software_programmed_in_Java_(programming_language)"
},
"relatedTechnologies": {
"type": "uri",
"value": "http://dbpedia.org/resource/List_of_Apache_Software_Foundation_projects"
}
},
{
"label": {
"type": "literal",
"xml:lang": "en",
"value": "Apache Kafka"
},
"developer": {
"type": "uri",
"value": "http://dbpedia.org/resource/The_Apache_Software_Foundation"
},
"license": {
"type": "uri",
"value": "http://dbpedia.org/resource/Apache_License"
},
"type": {
"type": "uri",
"value": "http://www.w3.org/2002/07/owl#Thing"
},
"programmingLanguage": {
"type": "uri",
"value": "http://dbpedia.org/resource/Scala_(programming_language)"
},
"category": {
"type": "uri",
"value": "http://dbpedia.org/resource/Category:Free_software_programmed_in_Java_(programming_language)"
},
"relatedTechnologies": {
"type": "uri",
"value": "http://dbpedia.org/resource/Message_broker"
}
}
]
}
}