[英]create individual in protege with dataproprety restriction
大家晚上好,我已经创建了一个只有一个类(方法)的简单本体,并具有数据属性action_nb(整数),类型witch是(String),并且只能是(choice,rank,sort),然后使用查询来进行搜索,例如:选择WHERE操作编号<20且类型=“ choice”的方法
如何在间隔ex中声明action_nb,例如:methode1 => action_nb在[10,30]之间。
如何使用三个值来声明类型,例如:methode1 => type:“ choice”;
这是我现在拥有的代码:
SELECT ?inst
WHERE {
?inst ex:action_nb ?value .
?inst es:type ?typ.
FILTER (?value < 80)
FILTER (?typ = " tri " )
}
对于1),您可以使用数据类型属性限制, 在此处进行说明
对于2),您应该使用owl:oneOf
。 您可以使用枚举类或枚举数据类型执行此操作:
枚举类只能在RDF资源(个人)的声明列表中具有成员。 您可以为每个选择创建一个不同的个体,然后为列表{choice, rank, sort}
等效类创建一个MethodType
类。 请注意,大括号是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限制来实现。)
如果typeOP
和typeDP
分别是第一种方法的对象属性和typeDP
方法的data属性,则查询可以是:
SELECT *
WHERE {
?m a :Method;
:typeOP ?t .
FILTER EXISTS {?m :typeOP :choice}
}
和
SELECT *
WHERE {
?m a :Method;
:typeDP ?t .
FILTER EXISTS {?m :typeDP "choice"}
}
分别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.