我正在嘗試與Protege創建交集。如何填充定義爲兩個其他類的交集的類?
我創建了兩個類A和B.類A包含兩個人John和Mary。 B類還包含兩個人,簡和瑪麗。我已經然後,創建一個AB類,我已經定義爲A的交點和B.
由於單個瑪麗是A類和B類的一部分,我期待它被添加到AB類。但是當我運行推理者(隱士)時,什麼都沒有發生。我在這裏做錯了什麼?
我正在嘗試與Protege創建交集。如何填充定義爲兩個其他類的交集的類?
我創建了兩個類A和B.類A包含兩個人John和Mary。 B類還包含兩個人,簡和瑪麗。我已經然後,創建一個AB類,我已經定義爲A的交點和B.
由於單個瑪麗是A類和B類的一部分,我期待它被添加到AB類。但是當我運行推理者(隱士)時,什麼都沒有發生。我在這裏做錯了什麼?
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<rdf:RDF xmlns="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#"
xml:base="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<owl:Ontology rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#A -->
<owl:Class rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#A">
<rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>
<!-- http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#AB -->
<owl:Class rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#AB">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#A"/>
<rdf:Description rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#B"/>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<!-- http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#B -->
<owl:Class rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#B">
<rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Individuals
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#Mary -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#Mary">
<rdf:type rdf:resource="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#A"/>
<rdf:type rdf:resource="http://www.semanticweb.org/i.gurjanov/ontologies/2014/8/untitled-ontology-6#B"/>
</owl:NamedIndividual>
</rdf:RDF>
<!-- Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net -->
這是一個答案?如果是這樣,請不要轉儲代碼。請添加解釋。 – 2014-10-01 02:11:55
您的代碼片段中有大量的評論/空白空間。您應該嘗試縮小您的代碼註釋和換行符,以便佔用較少的空間,但不能縮小到無法讀取的位置。它也鼓勵解釋你的代碼,而不是隻編寫答案。原始的海報可能不會理解你的代碼如何工作。 – davidcondrey 2014-10-01 02:34:48
Mary必須是A的實例。Mary必須是B的實例。在Mary的類型(實體選項卡)中添加這兩個類,或者只需按Ctrl + C和Ctrl + V我的代碼並查找差異 – 2014-10-01 03:53:46
我試過你的例子,你沒有做錯任何事。 當我選擇Mary時,它推斷它來自AB類型。瀏覽課程時推斷不顯示,但在選擇個人時不顯示。也許這就是爲什麼你感到困惑。 查看我的屏幕截圖以獲取詳細信息:
「但是當我運行推理者(隱士)時,什麼都沒有發生。」你什麼意思?如果您瀏覽個人選項卡並選擇Mary,您不會將AB類視爲其類型之一?如果您轉到DL查詢標籤並輸入AB(並檢查個人複選框),您是否看不到Mary列出?什麼「沒有發生」意味着什麼?你期望會發生什麼?你沒有給我們足夠的幫助診斷問題,甚至不知道問題出在哪裏。 – 2014-09-29 00:44:44
我的意思是AB類不包含任何個人。 我希望個人瑪麗能夠被推理者添加到AB級。我不知道如何做得更清楚。 – kormak 2014-09-30 07:14:10
「我希望個人瑪麗能夠被推理者加入AB類。」那麼,那可能意味着一些不同的事情。你如何檢查*「是否將瑪麗個人添加到AB類」?因爲Protégé以不同的方式顯示了reasoners的結果,所以即使推理者確實推斷Mary是一個AB,那麼這個結果也許並不會出現在任何地方。例如,在你張貼的截圖中,我沒有看到任何我期望的「瑪麗」出現。 (也許如果你在「描述:AB」面板中向下滾動,可能會有一個個人列表?) – 2014-09-30 11:10:16