簡體   English   中英

課堂上的OWL交叉

[英]OWL Intersection on class level

我有這樣的類層次結構:

Thing
  - ClassA
    -ClassC
    -ClassD
  - ClassB
    -ClassC
    -ClassE

C類是ClassA和ClassB的子類,而ClassD和ClassE只是ClassA或ClassB的子類

現在我想指定一個類,它等同於ClassA和ClassB的子類的交集。 以下不起作用:

NamedClass a owl:Class
NamedClass owl:equivalentClass (ClassA and ClassB)

原因是推理器使用這種規則來對個體進行分類,即我有一個類型為ClassA和ClassB的個體Ind1,它將被歸類為NamedClass類型。 這不是(僅)我想要的。 我希望ClassC本身是NamedClass的子類。

我知道這是可以使用規則(例如SPIN)實現的,但它可以在沒有規則的情況下完成嗎?

讓我們從初始層次結構開始,包括F,但在我們聲明F等於A和B的交集之前:

在此輸入圖像描述

然后我們將(A和B)作為等價於F的類添加.Protégé足夠聰明,可以在每個相交的類下呈現相等或交叉子類,所以我們在這里看到F出現在兩個地方。

在此輸入圖像描述

推理者也可以確認這種關系。 在這里,我打開了Pellet,將F輸入到DL查詢中,並詢問了子類。 果然,C是F的子類:

在此輸入圖像描述

這是您可以復制和粘貼的本體:

@prefix :      <http://stackoverflow.com/q/22221549/1281433/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:ontology a owl:Ontology .

:A a owl:Class .
:B a owl:Class .
:C a owl:Class ; rdfs:subClassOf  :A , :B .
:D a owl:Class ; rdfs:subClassOf  :A .
:E a owl:Class ; rdfs:subClassOf  :B .
:F a owl:Class ;
     owl:equivalentClass [ a owl:Class ;
                           owl:intersectionOf  ( :A :B ) ] .

是的,您可以定義一個類被定義為使用OWL的兩個其他類的交集。 檢查OWL 2 Primer

希望我幫忙!

PS如果您想對模型應用更高級的規則,我建議使用SWRL ,這是一個w3c推薦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM