2013-05-04 51 views
1

我對學習語義網很陌生,所以爲了便於學習,我選擇了寫一個關於我相當熟悉的東西的本體論,視頻遊戲。Jena someValues從錯誤 - {E201} rdf:資源不允許作爲屬性在這裏

所以我想我已經開始瞭解這一點,但仍然有一些問題。我的一般想法是基本上有4個平臺。誠然,這是非常簡單(而不是不同的控制檯,只列出,使一個控制檯遊戲可玩上的公司。)反正,說我遇到的問題從線梗:

<owl:someValuesFrom rdf:resource="#Platforms"/> 

我不能完全肯定有什麼地方錯了,我已經試過有和沒有「#」字符,但耶拿是給我上分析它(如果我把它註釋掉,它解析就好了)這個錯誤:

org.apache.jena.riot.RiotException: {E201} rdf:resource not allowed as attribute here. 

我有一種感覺,我沒有完全理解owl:someValuesFrom,而且我看過的大多數參考本體似乎都在類似的環境中使用它。我幾乎可以肯定,我忽略了一些簡單的東西,所以也許更多的眼睛會有所幫助,但任何和所有的幫助表示讚賞如果需要的話,我很樂意發佈更多的本體論。

它的內容是:

<owl:Class rdf:ID="Platforms"> 
    <owl:oneOf rdf:parseType="Collection"> 
     <owl:Thing rdf:about="#PC"/> 
     <owl:Thing rdf:about="#Playstation"/> 
     <owl:Thing rdf:about="#Xbox"/> 
     <owl:Thing rdf:about="#Nintendo"/> 
    </owl:oneOf> 
</owl:Class> 

<owl:Class rdf:ID="Platform"> 
    <rdfs:label>Platform</rdfs:label> 
    <owl:Restriction> 
     <owl:someValuesFrom rdf:resource="#Platforms"/> 
    </owl:Restriction> 
</owl:Class> 

用於打開Java代碼/讀取的本體是:

try 
    { 
     // open input file stream 
     InputStream in = FileManager.get().open(inputFile); 

     // create a new model, then read the OWL file into it 
     model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF, null); 
     model.read(inputFile);  
    } 
    catch (Exception e) 
    { 
     System.err.println(e); 
    } 

其他信息: 我使用耶拿2.10.0(最新)和Eclipse。

回答

1

我並不是很確定這是否是你所看到的解析錯誤的原因,但是你的限制缺少一點:它說明了它的限制(即類Platforms的一些值),但它並沒有說明什麼財產被限制。

你需要的東西是這樣的:

<owl:Restriction> 
    <owl:onProperty rdf:resource="#platformType" /> 
    <owl:someValuesFrom rdf:resource="#Platforms"/> 
</owl:Restriction> 

此外,限制不能立即owl:Class元素的一部分。您需要在其周圍有一個rdfS:subClassOf元素或一個owl:equivalentClass元素。

另外,一個提示:不要用RDF/XML語法手工編寫本體。可以使用諸如Protege或TopBraid之類的本體編輯器,也可以切換到另一種更易於閱讀/編輯的語法,如Turtle。相信我,如果你這樣做,事情會變得更容易。

例如,在海龜的語法(校正)本體上寫着:

:Platforms a owl:Class ; 
      owl:oneOf (:PC :PlayStation :Xbox :Nintendo) . 

:Platform a owl:Class ; 
      rdfs:label "Platform"; 
      rdfs:subClassOf [ a owl:Restriction ; 
          owl:onProperty :platformType ; 
          owl:someValuesFrom :Platforms ] . 
+0

謝謝,我真的很新的這個和人們似乎很少/稀疏文件。我嘗試使用Protege,但它吐出的本體似乎有所不同,而耶拿似乎並不喜歡它。 – 2013-05-05 20:30:32

+0

Protege應該能夠生成Jena(或任何其他RDF工具包)可以處理的OWL本體。如果遇到問題,可以詢問保護人或者jena用戶名單。 – 2013-05-06 00:17:32

+0

真的很晚在這裏辦理登機手續,但我想提供一個更新。在花了很多時間之後,我最終放棄了這個「項目」,專注於其他更緊迫的任務。最後把你的回答標記爲答案,抱歉這麼久! – 2014-02-27 15:32:54