tracker-sparql -qu "INSERT SILENT INTO <urn:uuid:38f> { <urn:uuid:38f> a nfo:FileDataObject , nie:InformationElement ;nie:isStoredAs <urn:uuid:38f> ; nie:url 'file.mp3' ; nie:dataSource <urn:nepomuk:datasource:840494F4EDG> ;nie:deviceId '840494F4EDG';nmm:audioType 128 ; tracker:available true; a nmm:MusicPiece , nfo:Audio; nie:title 'Abandoner' .}"
tracker-sparql -qu "INSERT {<urn:artist:38caadd1f13bf78a26aca0e7d42a8f58> a nmm:Artist ;nmm:artistName 'Aesop'; ?f nmm:performer <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>; nmm:extEnsemble <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58> } WHERE { ?f nie:url 'file.mp3'}"
第一次插入返回Done。 第二个插入返回无法运行更新,在本体中找不到属性'urn:uuid:38f'。
我真的无法理解如何将新艺术家与现有的音乐作品联系起来。
答案 0 :(得分:3)
您的第二个SPARQL INSERT语句格式错误:
INSERT {
<urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>
a nmm:Artist ;
nmm:artistName 'Aesop';
?f nmm:performer <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>;
nmm:extEnsemble <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>
} WHERE { ?f nie:url 'file.mp3'}
有一个;
,其中.
应关闭三元组并启动一个新的三元组,这意味着?f
具有三元组中谓词的位置。由于<urn:uuid:38f>
被定义为nfo:FileDataObject
,nie:InformationElement
,nmm:MusicPiece
和nfo:Audio
,而不是rdfs:Property
或OWL属性,因此跟踪器发出信号表明没有由URI <urn:uuid38f>
标识的属性。
正确的陈述是
INSERT {
<urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>
a nmm:Artist ;
nmm:artistName 'Aesop' .
?f nmm:performer <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>;
nmm:extEnsemble <urn:artist:38caadd1f13bf78a26aca0e7d42a8f58>
} WHERE { ?f nie:url 'file.mp3'}