在具有数据属性限制的保护下创建个人

create individual in protege with dataproprety restriction

大家晚上好 我创建了一个简单的 ontology,只有一个 class(方法)并且具有数据属性 action_nb(整数)并且类型 是(字符串)并且只能是(选择, rank , sort ) 然后使用查询来搜索例如: select 方法 WHERE 操作编号 <20 & 类型 = "选择"

  1. 如何在间隔中声明 action_nb ex: methode1 => action_nb between [10, 30].

  2. 如何用三个值声明类型 ex: methode1=> type:"choice";

这是我现在拥有的代码:

SELECT ?inst 
WHERE {
   ?inst ex:action_nb ?value .
   ?inst  es:type  ?typ.

    FILTER (?value < 80)
    FILTER (?typ = " tri " )
}

对于1),可以使用数据类型属性限制,解释here

对于2),你应该使用owl:oneOf。您可以使用枚举的 class 或枚举的数据类型:

枚举 类 只能在已声明的 RDF 资源列表(个人)中拥有成员。您可以为每个选择创建一个不同的个体,然后创建一个 class MethodType 与等效的 class 列表 {choice, rank, sort}。请注意大括号是它在 Protégé 中的样子。在 Turtle 中它看起来像这样:

:MethodType
  rdf:type owl:Class ;
  owl:equivalentClass [
      rdf:type owl:Class ;
      owl:oneOf (
          :choice
          :rank
          :sort
        ) ;
    ] ;
.

枚举数据类型 是由 RDF 文字列表组成的范围限制,在您的情况下 rdfs:range 将是 owl:oneOf {"choice", "rank", "sort"}。 (注:1. 此处对花括号的注释很好;2.This 也可以通过 owl:allValuesFrom 限制来实现。)

如果 typeOPtypeDP 分别是第一种方法的对象 属性 和第二种方法的数据 属性 查询可以是:

SELECT *
WHERE {
 ?m   a :Method;
:typeOP ?t .

FILTER EXISTS {?m :typeOP :choice}
}

SELECT *
WHERE {
 ?m   a :Method;
:typeDP ?t .

FILTER EXISTS {?m :typeDP "choice"}
}

分别