如何根据保护的特定条件对班级中的个人进行分类?

时间:2014-05-13 08:28:26

标签: sparql semantic-web owl protege4 description-logic

我有一个本体论:

  • 班级代理和班级行动
  • 数据属性列表(继承dataproperty restrictionProperties)具有域UNION(代理和操作)和范围原语(示例hasMoney,hasTime)

我想将所有个体分类为ag.hasTime> = ac.hasTime和ag.hasMoney> = ac.hasMoney等,其中ag是Agent,ac是Action实例。

我想说的是这些条件有几个方面:

  • 比较始终在同一属性ag.hasTime> = ac.hasTime
  • 之间
  • 继承restrictionProperty的所有dataProperty将具有相同的处理。
  • 满足此条件的所有代理都属于(例如,Class AgentRestrictions
  • 类)

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

我猜SPARQL可以做到,但我不确定如何。但我更喜欢一个点击保护的解决方案。或者用公理制作规范。

1 个答案:

答案 0 :(得分: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类。