2014-05-07 44 views
0

我正在運行示例owlapi示例:https://github.com/owlcs/owlapi/tree/master/contract/src/test/java/org/coode/owlapi/example 以檢索具有奇數字符的類的子類。我的貓頭鷹文件包含奇怪字符的類,例如/,(但解析器似乎在奇數字符前截斷它們,最終拋出一個錯誤,我窺視了ManchesterOWLSyntaxTokenizer,看起來它認爲這些奇怪的字符是分隔符。這個觀察?什麼是解決方法?另外,我已經嘗試了HermiT推理器,得到了類似的結果。另外,在Protege中,如果嘗試向層次結構中添加具有奇數字符的新OWLClass名稱,則會在類名稱周圍添加單引號。要在'DL Query'視圖中檢索它的子類,我必須在類名周圍添加單引號來運行它。是否在內部使用不同的語法標記器來保護,而不是使用截斷類名稱的ManchesterOWLSyntaxTokenizer?使用owlapi解析包含具有奇數字符的類的owl文件

回答

0

/字符是URI規範中的分隔符;請參閱http://www.ietf.org/rfc/rfc3986.txt,http://www.ietf.org/rfc/rfc3987.txthttp://www.w3.org/2004/11/uri-iri-pressrelease

對於IRI類沒有解決方法。如果您希望在類名的人類可讀版本中使用此類字符,則可以使用rdfs:label註釋(其文本可以包含任何字符),並在向用戶顯示類時使用rdfs:label

單引號Protege顯示代表這是一個事實,即這是一個rdfs:label註釋的值。

+0

這聽起來很合乎邏輯,除了當您使用包含這些分隔符的類從Protege保存owl文件時,rdfs:label註釋不會出現。這些類保存爲與其他類相同的格式,並且沒有單引號。我們的客戶之一是向我們提供這樣的文件,我們正試圖找出提取這些類和子類的最佳方式,就像您可以用單引號在Protege中查詢它們一樣。思考? – Bass

+0

我需要看看來自Protege的本體,瞭解這是如何可能的。問題是,可以用各種方式創建IRI,但一旦寫出來,就無法確定斜線是用於「名稱」還是名稱空間的一部分。允許顯示標籤但不保存它們將是一個Protege錯誤。 – Ignazio

+0

也許吧。我會聯繫到球隊。但作爲演示,如果您安裝了Protege,只需轉至:File> New並創建一個新文件,然後單擊'Classes'選項卡,然後單擊根類'Thing',然後單擊上方右側的突出顯示的圖標'Thing'創建一個新的子類。輸入say:Animal(Thing)並保存這個新的本體。檢查保存文件的內容。此外,請注意,如何使用'DL Query'通過使用單引號括起來查詢有關此新類的相關類信息,但無法使用owlapi中的示例示例進行查詢。任何解決方法? – Bass

相關問題