2015-05-28 3 views
1

Я пытаюсь правильно пометить всю свою музыку. Я уже повторил свою музыку через musicbrainz picard и MediaGo, но все же некоторые из песен не помечены или частично помечены. Я наткнулся на DBpedia и SPARQL. Теперь запрос, который я хочу задать SPARQL, это: «Покажите мне все музыкальные альбомы в период между 2010-2015 годами,« Исполнитель альбома »,« Все названия в альбоме »,« Genere »,« Год выпуска и обложка »» Сначала я попробовал следующий запрос но я не могу понять, как он не показывает все альбомы. Я искал «Гибридную теорию», которой не было.DBpedia SPARQL запрос для информации о песне для тега ID3

PREFIX dbpedia0: <http://dbpedia.org/ontology/> 
SELECT ?album ?album_name WHERE { 
?album a dbpedia0:Album . 
?album dbpedia2:name ?album_name . 
} 

Я также хочу искать информацию об альбоме/фильмах позже, в частности, в классе Cinema_of_India.

Просьба направлять меня в правильном направлении.

ответ

2

С помощью DBpedia сначала необходимо определить тип экземпляра, который вы пытаетесь извлечь. В этом конкретном примере, вы ищете альбомы таким образом:

?album a dbpedia-owl:Album . 

Затем вам нужно искать свойства, которые принадлежат к этому альбому. Как вы назвали их, вы ищете:

rdfs:label 
dbpedia-owl:artist 
dbpedia-owl:genre 
dbpedia-owl:releaseDate 
dbpprop:title 

И, наконец, вы хотите отфильтровать названия альбомов содержать только на английском языке (или любой другой язык, который вы ищете) этикетки. Кроме того, у вас есть ограничение на дату выпуска.

SELECT distinct * 
WHERE { 
    ?album a dbpedia-owl:Album . 
    ?album rdfs:label ?albumName. 
    ?album dbpedia-owl:artist ?Artist. 
Optional{ 
    ?album dbpedia-owl:genre ?genre. 
    ?album dbpedia-owl:releaseDate ?date. 
    ?album dbpprop:title ?title. 
} 
Filter ( 
    lang(?albumName)='en' && 
    xsd:dateTime(?date) >= '2010-01-01T00:00:00Z'^^xsd:dateTime) 
} 

Причина я положил некоторые из переменных в факультативном, что если есть альбом, который DBpedia не содержит эту информацию, он все равно будет отображаться.

Следующий запрос также должен следовать той же логике. Например, если вы ищете конкретный альбом, вы можете использовать этот запрос и получить другие ограничения на альбом.

SELECT distinct * WHERE { 
    ?album a dbpedia-owl:Album. 
Filter(?album=dbpedia:Hybrid_Theory) 
} 
+0

Отлично! Чисто и понятно! И спасибо за правильное объяснение. Я отредактировал блок фильтра с помощью 'Filter ( lang (? AlbumName) = 'en' && xsd: dateTime (? Date)> = '1990-01-01T00: 00: 00Z' ^^ xsd : dateTime) } ', чтобы увидеть альбом ** Hybrid Theory ** (выпущенный 1999/2000), но я не нашел этот альбом в выводе запроса. Я прошел через dbpedia.org/page/Hybrid_Theory, чтобы увидеть, что художник и ярлык существуют. Я что-то упустил? – Alex

+0

Даже я не могу увидеть альбом Hybrid Theory со следующим запросом: SELECT distinct * WHERE { ? Альбом a dbpedia-owl: Album.} 'Eventhough [dbpedia.org/page/Hybrid_Theory](http://dbpedia .org/page/Hybrid_Theory) обладает свойством 'dbpedia-owl: Album' под' rdf: type' – Alex

+0

Это ответ на ваш вопрос? – Artemis

Смежные вопросы