sparql - 使用 SPIN 将默认值设置为属性

标签 sparql rules topbraid-composer spin-rdf

我是 SPIN 新手。我想知道将它用于以下目的是否有意义。假设我有以下类层次结构:

ex:Vehicle
 ex:Car
   ex:Sedan

某些类将属性 owl:equivalenClass 设置为某个值,例如:

ex:Vehicle
 owl:equivalentClass wd:MeanOfTransportation 
ex:Sedan
  owl:equivalentClass wd:Sedan 

如果 owl:equivalentClass 未设置值,则它应该采用其父类的值。在上面的例子中:

ex:Car
  owl:equivalentClass wd:MeanOfTransportation 

这可以通过 SPIN 来完成吗(在我的例子中使用 TopBraid)?

最佳答案

使用 SPIN 来实现这些目的是有意义的,因为 SPIN 推理引擎是 TopBraid Composer 免费版中唯一可用的推理引擎。

在其他 TopBraid Composer 版本中,适当性以及获得的结果可能会有所不同,具体取决于您的 inferencing configuration (推理 > 配置推理)。

规则是:

rdfs:Class spin:rule [
    rdf:type sp:Construct ;
    sp:text """
    CONSTRUCT {
        ?this owl:equivalentClass ?equivalentClass .
    }
    WHERE {
        ?this rdfs:subClassOf ?superClass .
        ?superClass owl:equivalentClass|^owl:equivalentClass ?equivalentClass .
        FILTER NOT EXISTS {
            ?this owl:equivalentClass|^owl:equivalentClass [] .
        } 
    } """ 
] .

请注意,此 SPIN 规则附加到 rdfs:Class :一个实例化所有这些 ex:Carex:Vehicle 的类是。 ?this 是一个特殊变量,引用此类的“当前”实例。

看来spl:InferDefaultValue SPIN 模板无法在您的情况下使用,因为 spl:InferDefaultValue 不接受 SPARQL 变量作为其 spl:defaultValue 参数。

关于sparql - 使用 SPIN 将默认值设置为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067947/

相关文章:

javascript - 使用 Mozilla Rhino 的 HTTP 请求

sparql - DELETE WHERE 查询中的可选三元组

rdf - 选择主题和 rdf :type in a SPARQL query

list - 使用 SPARQL 创建 RDF 列表

owl - SHACL 规则中的多路径和存在量化(我应该使用 sh :oneOrMorePath perhaps? )

java - 在文本 SPARQL 语法和 SPIN RDF 词汇之间进行转换 : How to add rdfs:comment and sp:text

sparql - 什么是 SPARQL 查询来获取我的三元组中存在的所有图的名称?

css 选择器规则——选择器中所有元素的规则集?

ruby - Nanoc布局编译规则

ruby-on-rails - 使用规则引擎