通过数据发送限制来创建个体

时间:2016-04-23 18:28:04

标签: sparql ontology protege

大家晚上好 我创建了一个只有一个类(方法)的简单本体,并且有dataproperty action_nb(整数)和类型女巫(String),并且只能(选择,排名,排序)然后使用查询来搜索例如: 选择方法WHERE动作号< 20& type ="选择"

  1. 如何在intervale ex中声明action_nb:methode1 => action_nb介于[10,30]之间。

  2. 如何使用三个值来声明类型ex:methode1 =>类型:"选择&#34 ;;

  3. 这是我现在的代码:

    SELECT ?inst 
    WHERE {
       ?inst ex:action_nb ?value .
       ?inst  es:type  ?typ.
    
        FILTER (?value < 80)
        FILTER (?typ = " tri " )
    }
    

1 个答案:

答案 0 :(得分:1)

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

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

枚举类只能在声明的RDF资源列表(个人)中拥有成员。您可以为每个选项创建不同的个人,然后创建一个类MethodType,其类别与列表{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.这也可以用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"}
}

分别