2017-09-20 40 views
2

對於學校練習,我有一個RDF文件和一個OWL文件。如何創建一個owl:intersectionOf兩個owl:類?

有一個owl:Class Lecturer和一個owl:Class Researcher。兩者的交集應該是教授。我已經把我的RDF和OWL文件放在下面。

問題是:當我查詢時,沒有資源是Professor的類型,而在RDF文件中,我們可以看到Laura應該是教授。

減少RDF文件的版本:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE rdf:RDF [ 
<!ENTITY humans "http://www.inria.fr/2007/09/11/humans.rdfs"> 
<!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#"> ]> 
<rdf:RDF 
    xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:xsd ="&xsd;" 
    xmlns  ="&humans;#" 
    xml:base ="&humans;-instances" > 
    <Person rdf:ID="Laura"> 
     <name>Laura</name> 
    </Person> 
    <Lecturer rdf:about="#Laura"/> 
    <Researcher rdf:about="#Laura"> 
     <name>Laura</name> 
    </Researcher> 
</rdf:RDF> 

減少貓頭鷹文件的版本:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns="http://www.w3.org/2000/01/rdf-schema#" 
xml:base="http://www.inria.fr/2007/09/11/humans.rdfs" 
xmlns:owl="http://www.w3.org/2002/07/owl#"> 

    <owl:Class rdf:ID="Person"> 
    </owl:Class> 

    <owl:Class rdf:ID="Lecturer"> 
     <subClassOf rdf:resource="#Person"/> 
    </owl:Class> 

    <owl:Class rdf:ID="Researcher"> 
     <subClassOf rdf:resource="#Person"/> 
    </owl:Class> 

    <owl:Class rdf:id="Professor"> 
     <owl:intersectionOf rdf:parseType="Collection"> 
      <owl:Class rdf:about="#Lecturer"/> 
      <owl:Class rdf:about="#Researcher"/> 
     </owl:intersectionOf> 
    </owl:Class> 

</rdf:RDF> 

我以前是defautl查詢查詢:

select * where { 
    ?x ?p ?y 
} 

但我其實預計會做的事情如下:

select * where { 
    ?x a <http://www.inria.fr/2007/09/11/humans.rdfs#Professor> 
} 

我看過這個答案:Why do we need to use rdf:parseType="Collection" with owl:intersectionOf?但我不明白它應該用於我的具體問題。

我希望有人可以提供幫助。順便說一下,這是我在這裏的第一篇文章,所以讓我知道是否缺少一些東西。

+0

我希望你明白,SPARQL主要只在RDF上進行三重模式匹配。你的數據不包含任何在三元組(OWL類聲明公理)中使用的個人,聲明它屬於'Professor'類。除了三重匹配之外的任何事情都需要所謂的推理,即推斷隱式數據。 – AKSW

+0

您可以使用某些支持推理的SPARQL引擎,也可以使用DL Query等替代查詢機制。請注意,這兩者確實完全不同。 – AKSW

+0

感謝您的回答@AKSW事實上,我的rdf數據並沒有說這個資源是分配給教授的。但它確實聲明資源是講師和研究員。因此,除了rdf數據之外,使用貓頭鷹模式(指定教授既是講師又是研究人員),我認爲我應該能夠爲所有教授做一個查詢,並且仍然可以檢索我的資源(勞拉)。我正在使用Corese SPARQL引擎(http://wimmics.inria.fr/corese)。你是說這種方法是不可能的? –

回答

2

通過@stanislav-kralincomments轉述:

使用rdf:ID(不rdf:id)正確的大小寫,並載入您的RDF到GraphDB時啓用 「OWL-Max的」 推理。

相關問題