- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对学习语义网还很陌生,因此为了方便学习,我选择编写一个关于我相当熟悉的东西的本体,即视频游戏。
所以我想我已经开始理解这一点了,但仍然存在一些问题。我的总体想法是基本上有 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。
最佳答案
我不能立即确定这是否是您所看到的解析错误的原因,但您的限制有点缺失:它说明了它限制的内容(即 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。相信我,如果你这样做的话,事情会变得容易得多。
例如,您的(更正的)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 ] .
关于java - 耶拿 someValuesFrom 错误 - {E201} rdf :resource not allowed as attribute here,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378080/
另请参阅:Is this a good substr() for C? strtok() 和 friend 跳过空字段,我不知道如何告诉它在这种情况下不要跳过而是返回空。 我能看到的大多数分词器都有
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个答案) 关闭 6 年前。 编辑:排序。解决方案见底部
我是一名优秀的程序员,十分优秀!