代码之家  ›  专栏  ›  技术社区  ›  moondaisy

传递性的等价类

  •  0
  • moondaisy  · 技术社区  · 6 年前

    我有一个对象属性 partOf 这是可传递的。

    我想说:

    • a partOf Year 然后 a 是一个 Term
    • b partOf Term 然后 b 是一个 Course

    同时:

    • a partOf Knowledge_Group 然后 是一个 Knowledge_Area
    • b partOf Knowledge_Area 然后 是一个 课程

    为此我用这个来说 b partOf Term or Knowledge_Area 然后 是一个 课程 :

    :Course rdf:type owl:Class ;
            owl:equivalentClass [ rdf:type owl:Restriction ;
                                  owl:onProperty :partOf ;
                                  owl:someValuesFrom [ rdf:type owl:Class ;
                                                       owl:unionOf ( :Knowledge_Area
                                                                     :Term
                                                                   )
                                                     ]
                                ] .
    

    但当我运行推理机时,我会将所有课程列为类的实例 术语 同样地 知识领域 :

    enter image description here

    enter image description here

    如果我不使用 or 设定的航向只相当于 partOf some Term partOf some Knowledge_Area (分开,一次一个)我不明白这个问题。

    有没有一种方法可以让我说出我在开始时所解释的,而不是让我推断出的课程类型 术语 ?

    Here there is a minimal example :

    @prefix : <http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#> .
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix xml: <http://www.w3.org/XML/1998/namespace> .
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @base <http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27> .
    
    <http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27> rdf:type owl:Ontology .
    
    #################################################################
    #    Object Properties
    #################################################################
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#partOf
    :partOf rdf:type owl:ObjectProperty ,
                     owl:TransitiveProperty .
    
    
    #################################################################
    #    Classes
    #################################################################
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Course
    :Course rdf:type owl:Class ;
            owl:equivalentClass [ rdf:type owl:Restriction ;
                                  owl:onProperty :partOf ;
                                  owl:someValuesFrom [ rdf:type owl:Class ;
                                                       owl:unionOf ( :Knowledge_Area
                                                                     :Term
                                                                   )
                                                     ]
                                ] .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Knowledge_Area
    :Knowledge_Area rdf:type owl:Class ;
                    owl:equivalentClass [ rdf:type owl:Restriction ;
                                          owl:onProperty :partOf ;
                                          owl:someValuesFrom :Knowledge_Group
                                        ] .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Knowledge_Group
    :Knowledge_Group rdf:type owl:Class ;
                     owl:disjointWith :Year .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Term
    :Term rdf:type owl:Class ;
          owl:equivalentClass [ rdf:type owl:Restriction ;
                                owl:onProperty :partOf ;
                                owl:someValuesFrom :Year
                              ] .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Year
    :Year rdf:type owl:Class .
    
    
    #################################################################
    #    Individuals
    #################################################################
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Course_1
    :Course_1 rdf:type owl:NamedIndividual ;
              :partOf :Knowledge_Area_1 ,
                      :Term_1 .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Knowledge_Area_1
    :Knowledge_Area_1 rdf:type owl:NamedIndividual ;
                      :partOf :Knowledge_Group_1 .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Knowledge_Group_1
    :Knowledge_Group_1 rdf:type owl:NamedIndividual ,
                                :Knowledge_Group .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Term_1
    :Term_1 rdf:type owl:NamedIndividual ;
            :partOf :Year_1 .
    
    
    ###  http://www.semanticweb.org/lucia/ontologies/2018/5/untitled-ontology-27#Year_1
    :Year_1 rdf:type owl:NamedIndividual ,
                     :Year .
    
    
    ###  Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Henriette Harmse    6 年前

    传递角色的语义是 (x, y) \in R (y, z) \in R 然后 (x, z) \in R . 基于你的本体论,你有:

    (1) Course_1 partOf Knowledge_Area_1 partOf Knowledge_Group_1 这意味着什么 Course_1 partOf Knowledge_Group_1 相当于 Knowledge_Area .

    (2) Course_1 partOf Term_1 partOf partOf Year_1 这意味着什么 Course_1 partOf Year_1 相当于 Term .

    因此 Course_1 是一个 术语 和A 知识领域 而且自从 Course 相当于 Term or Knowledge_Area , 课程1 也是一个 课程 ,这就是为什么 课程1 是一个 术语 .

    在我看来,在这里要意识到的关键是你实际上在处理不同的问题 partOf 关系,不是一个。这个事实的线索是,在不同的上下文中,您希望从 部分 关系。owl中关系的类型信息主要是根据域和范围限制推断出来的。以下是解决您问题的可能方法:

    ObjectProperty: partOf
    
    ObjectProperty: partOfKA
        SubPropertyOf: partOf
        Domain: Course
    
    ObjectProperty: partOfKG
        SubPropertyOf: partOf
        Domain: Knowledge_Area
    
    ObjectProperty: partOfTerm
        SubPropertyOf: partOf
        Domain: Course
    
    ObjectProperty: partOfYear
        SubPropertyOf: partOf
        Domain: Term
    
    Class: Course
    Class: Knowledge_Area
    
    
    Class: Knowledge_Group
        DisjointWith: Year
    
    Class: Term
    
    Class: Year
        DisjointWith: Knowledge_Group
    
    Individual: Course_1
        Facts:  
         partOfKA  Knowledge_Area_1,
         partOfTerm  Term_1
    
    Individual: Knowledge_Area_1
        Facts:  partOfKG  Knowledge_Group_1
    
    Individual: Knowledge_Group_1
        Types: Knowledge_Group
    
    
    Individual: Term_1
        Facts: partOfYear  Year_1
    
    Individual: Year_1
        Types: Year
    

    严格来说你不需要 部分 我的示例本体中的属性。我添加它只是为了概念清晰。此外,在我的示例本体中,不需要传递属性。