rdf - SPARQL Tracker 无法运行更新,在本体中找不到属性

标签 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'}"

第一次插入返回完成。 第二次插入返回无法运行更新,在本体中找不到属性“urn:uuid:38f”。

我真的不明白如何将新艺术家与现有的音乐作品联系起来。

最佳答案

您的第二个 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: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'}

关于rdf - SPARQL Tracker 无法运行更新,在本体中找不到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077143/

相关文章:

java - addproperty() 函数中不同类型的属性?

c# - 使用数组的 RdfProperty 自定义类

rdf - 如何在现有数据集上使用替代/新本体

distinct - 在 SPARQL 中选择一些不同的和一些不明显的标签

semantics - 查询以显示 DBpedia 的所有类和所有谓词

join - Sparql 加入问题

types - 语义网语言(RDF/Owl/等)中的 3d 矢量是否有事实上的标准数据类型?

java - Apache TDB 如何存储 RDF 数据?

sparql - 本体从类及其子类中查找属性

database - SPARQL 中的递归查询以浏览集合的集合