【问题标题】:Stardog rule doesn't triggerStardog 规则不会触发
【发布时间】:2015-03-31 09:27:56
【问题描述】:

我无法编写正确的 Stardog 规则。由于我还没有找到验证规则语法的方法,所以我现在不知道它是语法错误还是逻辑错误。无论哪种方式,启用推理时似乎都不会触发规则(版本 2 中的reasoning=SL,版本 3 中的reasoning=true)。

@prefix : <http://www.example.org/rules#> .
@prefix rule: <tag:stardog:api:rule:> .
@base <http://www.example.org/rules#> .

[] a rule:SPARQLRule ;
  rule:content """
PREFIX : <http://www.example.org/rules#>
PREFIX draft: <http://our/prefix#>
IF {
    ?x a draft:Obs; draft:has_code ?code .
    ?z a <http://www.w3.org/ns/sparql#UUID> . // OR: BIND (UUID() AS ?z)
   }
THEN {
    ?z a draft:Code .
    ?x draft:has_code ?z .
}
""" .

我正在尝试使用以下 SPARQL 查询触发规则:

PREFIX : <http://our/prefix>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?code
FROM <tag:stardog:api:context:default> 
FROM <http://our/graph> 
WHERE {
    ?s rdf:type :Obs .
    ?obs :has_code ?code .
}

【问题讨论】:

    标签: sparql triplestore stardog


    【解决方案1】:

    这可能是由于规则的循环性质。您在推断 :has_code 将依次用于再次触发规则,以此类推。

    consider how rules with more than one atom in the header a broken up 时,这更容易可视化。

    【讨论】:

      猜你喜欢
      • 2015-05-22
      • 2013-08-21
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多