Stardog 规则不会触发
Stardog rule doesn't trigger
我在编写正确的 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 .
}
这可能是由于规则的循环性质。您正在推断 :has_code
,这又将用于一次又一次地触发规则,依此类推。
当您 consider how rules with more than one atom in the header a broken up.
时,这更容易形象化
我在编写正确的 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 .
}
这可能是由于规则的循环性质。您正在推断 :has_code
,这又将用于一次又一次地触发规则,依此类推。
当您 consider how rules with more than one atom in the header a broken up.
时,这更容易形象化