SPARQL跟踪器无法运行更新,在本体中找不到属性

时间:2013-04-18 07:38:34

标签: rdf sparql

 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'。

我真的无法理解如何将新艺术家与现有的音乐作品联系起来。

1 个答案:

答案 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:FileDataObjectnie:InformationElementnmm:MusicPiecenfo: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'}