1

我有一个本体:

  • 集体代理人和集体诉讼
  • 数据属性列表(继承数据属性限制属性)具有域 UNION(代理和操作)和范围原语(例如 hasMoney、hasTime)

我想对 ag.hasTime >= ac.hasTime 和 ag.hasMoney >= ac.hasMoney 等所有个体进行分类,其中 ag 是代理,ac 是动作实例。

我想说一下,这些条件有几件事:

  • 比较总是在同一个属性 ag.hasTime >= ac.hasTime
  • 继承自restrictionProperty 的所有dataProperty 都会有同样的处理。
  • 所有满足此条件的代理都将属于,例如,AgentRestrictions 类

我不想使用 SWRL,因为我读到这不是标准,而且我总是可以使用 SPARQL 做到这一点。

我想用 SPARQL 可以做到,但我不知道怎么做。但我更喜欢点击 protege 的解决方案。或者用公理制定规范。

4

1 回答 1

0

我认为你的意思是这样的:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX urPrefx :<http://YOUR ONTOLOGY PATH HERE>
SELECT ?r (COUNT( DISTINCT ?r) AS ?countNo)
WHERE
{   
    #Query 1.1 Where urPrefx:greaterOrEqualThan is a restricted property
    ?data_property_individual_categorie rdfs:subPropertyOf urPrefx:greaterOrEqualThan.

    #Query 1.2 Get all the action classes with those restricted property
    {SELECT DISTINCT * WHERE {?individuals_actions rdf:type ?ActionsClasses.?individuals_actions ?data_property_individual_categorie ?values_action}}

    #Query 1.3 Get all the agents with those restricted property
    {SELECT DISTINCT * WHERE {?individuals_agents rdf:type ?AgentClasses. ?individuals_agents ?data_property_individual_categorie ?values_agent}}

    #Get all No and Yes
    BIND(if( ?values_agent >=?values_action, urPrefx:Yes, urPrefx:No) AS ?r).
}GROUP BY ?r

您唯一需要指定的是 YES 和 NO;你想用它做什么。您将需要使用命令 CONSTRUCT 分配给类 AgentRestrictions。

于 2014-05-14T11:04:24.903 回答