2014-05-13 7 views
1

나는이 온톨로지 있습니다특정 조건에 따라 개인을 클래스별로 분류하는 방법은?

  • 클래스 에이전트와 집단 소송을
  • 데이터 속성 (A dataproperty의 restrictionProperties의 상속)의 목록 (에이전트와 액션)와 범위 원시 (예의 도메인 UNION을 가지고 hasMoney, hasTime)

ag.hasTime> = ac.hasTime 및 ag.hasMoney> = ac.hasMoney 등 모든 개인을 분류하려고합니다. 여기서 ag는 Agent이고 ac는 Action 인스턴스입니다. 비교가있을 것이다 restrictionProperty의 상속 동일한 속성 ag.hasTime> = ac.hasTime

  • 모든 dataProperty 사이에 항상

    • :

      나는 이러한 조건이 몇 가지가 있다는 발언을 만들고 싶어 동일한 치료. 이 조건을 만족

    • 모든 에이전트는 내가 그 표준 아니고 내가 SPARQL 항상 그것을 할 수 있다는 것을 읽을 수 있기 때문에 SWRL을 사용하지 않으려는, 예를 들어, 클래스 AgentRestrictions

    에 속하는 것입니다.

    SPARQL로 할 수있을 것 같지만 어떻게할지는 모르겠다. 그러나 나는 protege에서 클릭하는 솔루션을 선호합니다. 또는 공리로 명세화하기.

  • +0

    "ag.hasTime> = ac.hasTime 및 ag.hasMoney> = ac.hasMoney"관련 개인 (단수)을 "분류"하는 것은 일반적으로 그것을 어떤 클래스에 할당 (또는 클래스 멤버십을 추론)하는 것을 의미합니다. 한 쌍의 개인을 분류하면 정확히 무엇을 의미합니까? 그들 사이의 관계를 추론하고 싶습니까? "이 조건을 만족하는 모든 에이전트는 Class AgentRestrictions에 속할 것입니다."하지만 어떤 작업을 말하고 싶습니까? 요원의 시간이 * some * action보다 큰 경우? * 모든 행동보다? 뭐? –

    +0

    또한 SWRL은 "표준"이지만 많은 "표준"인 "W3C 권장 사항"이 아닙니다. http://www.w3.org/Submission/SWRL/에 문서화되어 있으며 Protégé는이를 지원합니다. SWRL 규칙 (예 : Pellet, HermiT)을 지원하는 추론 도구를 사용하는 경우 Protégé에 규칙을 입력하고 추론을 실행하여 예상 결과를 얻을 수 있습니다. Protégé에서 SWRL 규칙을 사용하는 것이 SPARQL을 사용하는 것보다 쉽습니다. –

    +1

    예 : [SWRL rules in protege 3.4.8] (http://stackoverflow.com/q/21243879/1281433), [Protege-OWL/SWRL의 온톨로지 속성 정의] SWRL 규칙은 새로운 개체 및 데이터 속성 어설 션을 추론하지 않습니다. (http : //stackoverflow.com/q/21499126/1281433), [http : //stackoverflow.com/q/22534868/1281433] : //stackoverflow.com/q/21540839/1281433). 이들 중 일부는 Protege에서 SWRL 규칙을 사용하는 방법에 대한 자세한 설명을 제공합니다. –

    답변

    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 
    

    지정해야 할 유일한 것은 NO 그 YES와이다; 당신이 그것으로 무엇을하고 싶은지. 명령 CONSTRUCT를 사용하여 AgentRestrictions 클래스에 지정해야합니다.

    +0

    @ Joshua Taylor, 표준이되어 하나가 다른 것입니다. 그리고 모든 엔진에서 제대로 작동하지 않습니다. – titusfx

    +0

    그게 내가 원하는거야 !!!그리고 네, 오직 하나의 대답으로 AgentRestriction 클래스에 속하지 않을 것입니다. 고마워요 !!! – Pepita

    +0

    @Mauricio 음, SWRL의 정의와 작동 방식을 지정하는 문서가 있습니다. W3C 권장 사항인지 여부는 사람들이 채택할지 여부와 완전히 별개의 문제입니다. SPARQL 구현에는 많은 변형이있다. 예를 들어, 구현이'> ='(허용 된 기능)의 기능을 확장하는 경우, 제공 한 쿼리가 예상대로 작동하지 않을 수 있습니다. 표준으로도 모든 것이 명확한 것은 아닙니다. –