我对学习语义网还很陌生,所以为了方便学习,我选择写一个关于我相当熟悉的东西的本体,视频游戏。
所以我想我开始有点理解这一点,但仍然存在一些问题。我的一般想法是基本上有 4 个平台。当然,这已被大大简化(而不是不同的游戏机,只需列出使游戏机成为可玩游戏的公司。)无论如何,我遇到的问题源于以下内容:
<owl:someValuesFrom rdf:resource="#Platforms"/>
我不完全确定它有什么问题,我尝试过使用和不使用“#”字符,但是 Jena 在解析它时给了我这个错误(如果我将它注释掉,它解析得很好):
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);
}
附加信息:我正在使用 Jena 2.10.0(最新)和 Eclipse。