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