1

我正在向我的本地 blazegraph 发出 DELETE REST 调用: http://localhost:9999/blazegraph/namespace/GraphInfo

与身体:

PREFIX rsabox:<http:\/\/ibm.com\/ResultSetABox#>  
PREFIX rstbox:<http:\/\/ibm.com\/ResultSetTBox#>  
CONSTRUCT {
  ?result ?pred ?obj .
  ?resultSet rstbox:hasResult ?result .
} WHERE {
    SELECT ?result ?pred ?obj ?resultSet
    WHERE {
      ?result rdf:type rstbox:queryResult .
      ?resultSet rstbox:hasResult ?result .
      ?resultSet rdf:type rstbox:resultSet .
      ?resultSet rstbox:setID ?setID .
      FILTER (?setID = 1) .
      ?result ?pred ?obj .
      FILTER (?pred NOT IN (
        owl:topObjectProperty,
        rstbox:topObjectProperty,
        rstbox:hasRefInst,
        rstbox:resultOf,
        rdf:type
      )
    )
  }
}

但结果是删除了整个命名空间,而不仅仅是构造中的主语、谓语、宾语条目。

blazegraph 的响应是:“已删除:GraphInfo”

也许我从这里没有正确理解 REST API:https ://wiki.blazegraph.com/wiki/index.php/REST_API#DELETE

基本上,我通过发布我现在想要从图表(命名空间)中删除的文本/乌龟创建了一组结果。我应该发布(而不是删除)相同的查询,而不是 CONSTRUCT,使用 DELETE?

另外,我需要过滤器还是应该删除所有包含推断关系的内容(例如,仅使用 ?result ?pred ?obj )

4

1 回答 1

1

事实证明,我需要使用 update= 和 DELETE 查询来发布正文,如下所示:

update=PREFIX rsabox:<http://ibm.com/ResultSetABox#>  
PREFIX rstbox:<http://ibm.com/ResultSetTBox#>  
DELETE {
    ?result ?pred ?obj .
    ?resultSet rstbox:hasResult ?result .
  } WHERE {
SELECT ?result ?pred ?obj ?resultSet
WHERE {
      ?result rdf:type rstbox:queryResult .
      ?resultSet rstbox:hasResult ?result .
      ?resultSet rdf:type rstbox:resultSet .
      ?resultSet rstbox:setID ?setID .
      FILTER (?setID = 1) .
      ?result ?pred ?obj .
  }
}

我对他们在 URI 上显示 ?update 并谈论发出查询感到困惑......

于 2018-06-01T14:37:05.087 回答