音乐知识图谱用例
例子用的是音樂的例子,數據和代碼在百度網盤,鏈接: https://pan.baidu.com/s/1Uj5VgwRMBtWxVIcPxtLpbQ 密碼: mv76:
使用python代碼隨機生成一些數據示例,為了演示方便,生成的數據中沒有artist_name這個屬性,后面演示通過SPARQLUpdate語句添加
首先執行腳本python kg_music_triples.py,默認生成1000個三元組,生成的文件在當前目錄,文件名為music_1000_triples.nt (例如,python kg_music_triples.py 500 ,傳入參數500,則會生成500個三元組,文件名為music_500_triples.nt)
接下來啟動服務/usr/local/apache-jena-fuseki-3.12.0/fuseki-server,并在瀏覽器中打開http://localhost:3030/(在linux系統中)
導入剛才生成的music_1000_triples.nt文件,導入成功后,并查看導入了多少三元組/usr/local/apache-jena-fuseki-3.12.0/run/databases/music
好數據已經準備好了,接下來進行查詢和更新,在中間的編輯器中國添加我們自己的SPARQL語句,然后點擊編輯器右上的執行按鈕就可以執行SPARQL查詢了
點擊query,來到SPARQL查詢界面,選擇對應的設置,我們就可以開始查詢圖譜了
1.查詢某一藝術家的所有歌曲
1 PREFIX music: <http://kg.course/music/>
2 SELECT DISTINCT ?trackID
3 WHERE {
4 ?trackID music:track_artist music:artist_001
5 }
2.查詢某一藝術家的所有歌曲的歌曲名
PREFIX music: <http://kg.course/music/>
SELECT ?name
WHERE {
?trackID music:track_artist music:artist_01 .
?trackID music:track_name ?name
}
3.查詢某一首歌曲名的專輯信息
PREFIX music: <http://kg.course/music/>
SELECT ?trackID ?ablumID ?name
WHERE {
?trackID music:track_name "track_name_00001" .
?trackID music:track_album ?ablumID .
?ablumID music:ablum_name ?name
}
4. 查詢某一首歌曲名的專輯信息,使用中文來當變量名
PREFIX music: <http://kg.course/music/>
SELECT ?歌曲id ?專輯id ?專輯名
WHERE {
?歌曲id music:track_name "track_name_00001" .
?歌曲id music:track_album ?專輯id .
?專輯id music:album_name ?專輯名
}
5.查詢某一首歌曲名的專輯信息,變量名添加描述
PREFIX music: <http://kg.course/music/>
SELECT ?歌曲id ?專輯id (CONCAT("專輯名",":",?專輯名) AS ?專輯信息)
WHERE {
?歌曲id music:track_name "track_name_00001" .
?歌曲id music:track_album ?專輯id .
?專輯id music:album_name ?專輯名
}
6.查詢某個專輯里面的所有歌曲
PREFIX music: <http://kg.course/music/>
SELECT ?trackID
WHERE {
?albumID music:album_name "album_name_0002" .
?trackID music:track_album ?albumID
}
7.查詢某個專輯里面的所有歌曲,限制前2
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?trackID
WHERE {
?albumID music:album_name "album_name_0002" .
?trackID music:track_album ?albumID
}
limit 2
8.對某個專輯里面的所有歌曲計數
PREFIX music: <http://kg.course/music/>
SELECT (COUNT(?trackID) as ?num)
WHERE {
?albumID music:album_name "album_name_0002" .
?trackID music:track_album ?albumID
}
9.查詢某一首歌是哪一個藝術家的作品
PREFIX music: <http://kg.course/music/>
SELECT ?trackID ?artistID
WHERE {
?trackID music:track_name "track_name_00001" .
?trackID music:track_artist ?artistID
}
10.查詢某一首歌屬于什么歌曲類型
PREFIX music: <http://kg.course/music/>
SELECT ?trackID ?tag_name
WHERE {
?trackID music:track_name "track_name_00001" .
?trackID music:track_tag ?tag_name
}
11.查詢某一藝術家唱過歌曲的所有標簽
PREFIX music: <http://kg.course/music/>
SELECT DISTINCT ?tag_name
WHERE {
?trackID music:track_artist music:artist_001 .
?trackID music:track_tag ?tag_name
}
12.查詢某一藝術家唱過歌曲的所有類型并排序
PREFIX music: <http://kg.course/music/>
SELECT DISTINCT ?tag_name
WHERE {
?trackID music:track_artist music:artist_001 .
?trackID music:track_tag ?tag_name
}
ORDER BY ?tag_name
13.查詢某幾類歌曲標簽中的歌曲的數目
PREFIX music: <http://kg.course/music/>
SELECT (COUNT(?trackID ) AS ?num)
WHERE {
{
?trackID music:track_tag "tag_name_01" .
}
UNION
{
?trackID music:track_tag "tag_name_02" .
}
}
PREFIX music: <http://kg.course/music/>
SELECT (count(?trackID ) as ?num)
WHERE {
?trackID music:track_tag ?tag_name
FILTER (?tag_name = "tag_name_01"|| ?tag_name = "tag_name_02")
}
14.查詢所有歌曲中帶有’xx’字符的歌曲名
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?subject ?object
WHERE {
?subject <http://kg.course/music/track_name> ?object .
FILTER regex(?object,"088")
}
15.詢問是否存在帶有’xx’字符的歌曲名
PREFIX music: <http://kg.course/music/>
ASK
{
?trackID music:track_name ?track_name .
FILTER regex(?track_name,"008")
}
16.給藝術家id新增屬性藝術家名字
PREFIX music: <http://kg.course/music/>
INSERT DATA
{
music:arttist_01 music:artist_name "artist_name_01" .
music:arttist_02 music:artist_name "artist_name_02" .
music:arttist_03 music:artist_name "artist_name_03" .
}
PREFIX music: <http://kg.course/music/>
SELECT ?artistID ?artist_name
WHERE {
?artistID music:artist_name ?artist_name
}
17.刪除增加的屬性藝術家名字
PREFIX music: <http://kg.course/music/>
DELETE
{
music:artist_02 music:artist_name ?x .
}
WHERE
{
music:artist_02 music:artist_name ?x .
}
PREFIX music: <http://kg.course/music/>
SELECT ?artistID ?artist_name
WHERE {
?artistID music:artist_name ?artist_name
}
總結
- 上一篇: PSPnet模型结构及实现代码
- 下一篇: HTML——左右側边栏布局