【问题标题】:Modeling class relationships in OWL在 OWL 中建模类关系
【发布时间】:2018-11-12 11:17:02
【问题描述】:

我有一个本体,它代表了我对职业和教育程度的看法。该模型在视觉上是这样表示的:

作为我的本体的一部分,我想为每个学位建模学位到职业“途径”(如上图所示)。以下是我试图描述的几个例子:

  • 如果我获得了计算机科学学士学位,我可以成为任何类型的软件开发人员(包括 Web 开发人员,它是软件开发人员的一个子类)。
  • 如果我获得护理学位,我可以成为任何类型的护士,但不能成为护士经理。

到目前为止,这是我的本体:

@prefix : <http://www.test.org/jobs#> .
@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.test.org/jobs> .

<http://www.test.org/jobs> rdf:type owl:Ontology .

:hasEducationLevel rdf:type owl:ObjectProperty ;
                   rdfs:domain :Degree ;
                   rdfs:range :EducationLevel .

:hasOccupation rdf:type owl:ObjectProperty ;
               rdfs:domain :Job ;
               rdfs:range :Occupation .

:programOfStudy rdf:type owl:ObjectProperty ;
                rdfs:domain :Degree ;
                rdfs:range :ProgramOfStudy .

:requiresEducation rdf:type owl:ObjectProperty ;
                   rdfs:domain :Job ;
                   rdfs:range :Degree .

:title rdf:type owl:DatatypeProperty ;
       rdfs:domain :Job ;
       rdfs:range xsd:string .

:Accounting rdf:type owl:Class ;
            rdfs:subClassOf :Finance .

:Audit rdf:type owl:Class ;
       rdfs:subClassOf :Finance .

:BachelorsDegree rdf:type owl:Class ;
                 owl:equivalentClass [ owl:intersectionOf ( :Degree
                                                            [ rdf:type owl:Restriction ;
                                                              owl:onProperty :hasEducationLevel ;
                                                              owl:hasValue :BachelorsEducationLevel
                                                            ]
                                                          ) ;
                                       rdf:type owl:Class
                                     ] .

:Computer_Science rdf:type owl:Class ;
                  rdfs:subClassOf :ProgramOfStudy .

:Degree rdf:type owl:Class .

:EducationLevel rdf:type owl:Class .

:Finance rdf:type owl:Class ;
         rdfs:subClassOf :ProgramOfStudy .

:Job rdf:type owl:Class .

:Licensed_Practical_Nurse rdf:type owl:Class ;
                          rdfs:subClassOf :Nurse .

:MastersDegree rdf:type owl:Class ;
               owl:equivalentClass [ owl:intersectionOf ( :Degree
                                                          [ rdf:type owl:Restriction ;
                                                            owl:onProperty :hasEducationLevel ;
                                                            owl:hasValue :MastersEducationLevel
                                                          ]
                                                        ) ;
                                     rdf:type owl:Class
                                   ] .

:Mobile_Developer rdf:type owl:Class ;
                  rdfs:subClassOf :Software_Developer .

:Nurse rdf:type owl:Class ;
       rdfs:subClassOf :Nursing_Occupation .

:Nurse_Manager rdf:type owl:Class ;
               rdfs:subClassOf :Nursing_Occupation .

:Nursing rdf:type owl:Class ;
         rdfs:subClassOf :ProgramOfStudy .

:NursingDegree rdf:type owl:Class ;
               owl:equivalentClass [ owl:intersectionOf ( :Degree
                                                          [ rdf:type owl:Restriction ;
                                                            owl:onProperty :programOfStudy ;
                                                            owl:someValuesFrom :Nursing
                                                          ]
                                                        ) ;
                                     rdf:type owl:Class
                                   ] .

:Nursing_Occupation rdf:type owl:Class ;
                    rdfs:subClassOf :Occupation .

:Occupation rdf:type owl:Class .

:ProgramOfStudy rdf:type owl:Class .

:Registered_Nurse rdf:type owl:Class ;
                  rdfs:subClassOf :Nurse .

:Software_Developer rdf:type owl:Class ;
                    rdfs:subClassOf :Occupation .

:Web_Developer rdf:type owl:Class ;
               rdfs:subClassOf :Software_Developer .

:BachelorsEducationLevel rdf:type owl:NamedIndividual ,
                                  :EducationLevel .

:MastersEducationLevel rdf:type owl:NamedIndividual ,
                                :EducationLevel .

我考虑过使用对象属性和个体,但我不确定如何在为个体的对象属性指定值时实现我正在寻找的概括。

有人可以就我如何将这些学位建模为 OWL 中的职业途径提出建议吗?谢谢。

【问题讨论】:

    标签: rdf owl ontology


    【解决方案1】:

    如果 Software developer 是你的 CS 学位兼容职业层次结构的顶部,那么你会断言类似

    Software developersubClassOf 存在 hasDegree CS degree

    要阻止 Nurse manager 只需要 Nursing degree(我怀疑他们需要某种管理课程?)您可以做类似的事情:

    Nurse managersubClassOf 存在 hasDegree Management role

    现在,没有这种学位的个人将不会被归类为Nurse manager(潜在)。但是,如果您断言他们是护士长,系统不会抱怨。

    【讨论】:

      猜你喜欢
      • 2016-12-05
      • 1970-01-01
      • 2011-02-02
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多