在sh:lessThan

问题描述

已连接到该问题(及其先前的问题):

Using sh:maxExclusive to compare (the values of) two datatype properties

我创建了一个具有三个类的小型本体:DataSubject,MemberState和Minor。有两个数据类型属性:has-age和has-minimalage。前者是从DataSubject到整数,后者是从MemberState到整数。然后有一个对象属性具有从DataSubject到MemberState的成员状态。

现在我们有以下个人:

ontology:John
  rdf:type ontology:DataSubject ;
  ontology:has-age "20"^^xsd:positiveInteger ;
  ontology:has-member-state ontology:Spain ;
.
ontology:Spain
  rdf:type ontology:MemberState ;
  ontology:has-minimalage "16"^^xsd:positiveInteger ;
.

我想写一条SHACL规则,说每个年龄小于其成员国最小年龄的DataSubject也是Minor类的一个人。

根据我对其他问题的答复,我尝试:

  sh:rule [
      rdf:type sh:TripleRule ;
      sh:condition [
        sh:property [
          sh:path ontology:has-age ;
          sh:lessthan (ontology:has-member-state ontology:has-minimalage)
        ] ;
      ] ;
      sh:subject sh:this ;
      sh:predicate rdf:type;
      sh:object ontology:Minor ;
  ] ;

这不起作用:它将John分类为次要,但20不小于16。当然,我尝试了许多其他变体,例如“ sh:lessthan [sh:node [sh:路径(本体论:具有成员状态本体论:具有最小限度)];];”,其中许多可能没有任何意义,但是它们都不起作用。

有人可以建议我如何在sh:lessthan参数中嵌入路径吗?

很抱歉,如果我开始烦恼所有这些问题:-(我是SHACL和SPARQL的新手,但是我真的想尽我最大的努力从网络上找到的东西中学习它们。

谢谢 Livio

解决方法

(希望)官方规范非常清楚,值必须为IRI,即仅允许直接属性。但是,您可以尝试还原逻辑并在属性形状处使用路径。否则,请退回到SPARQL。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...