我构建了一个 Java 管道,从歌词创建 rdf 三元组,我想使用本体来分类不同类型的歌曲。
我还想计算每个术语在歌曲中出现的次数(除了我用来定义歌曲类别的内置基数)。最后,我希望能够在 Protege 中使用诸如 graphDB 或 graphViz 之类的视觉辅助工具来比较歌曲中更常见的标记词(这就是为什么我有 TaggedWordRelation 类,用于专门比较个体之间的原因)。
我的 Protege 文档中有以下陈述,当使用 Fact、Hermit、Pellet 等进行推理时,会以无限循环式的方式锁定我的计算机。我无法得到推理者来判断它是什么类型的歌曲:
对象属性:hasTaggedWordRelation
-domain:Song
-range:TaggedWord
对象属性:taggedWord
-domain:TaggedWordRelation
-range:Word
类:词已定义
类:已定义 TaggedWordRelation
类:LoveWordRelation 被定义
-TaggedWordRelation 的子类
-taggedWord 一些 LoveWord
类: LoveSong 已定义 - Song 的子类
-hasTaggedWordRelation 一些 LoveWordRelation
-hasTaggedWordRelation 正好 0 HateWordRelation
-hasTaggedWordRelation min 0 SexWordRelation
-hasTaggedWordRelation min 0 GodWordRelation
类:ReligiousSong 已定义
- Song 的子类
-hasTaggedWordRelation 一些 LoveWordRelation
-hasTaggedWordRelation 正好 0 HateWordRelation
-hasTaggedWordRelation 正好 0 SexWordRelation
-hasTaggedWordRelation 一些 GodWordRelation
基本上我有大约 6 种不同类型的歌曲,我想推断(使用推理器和约束),歌曲实例的子类基于它具有的单个 taggedWordRelations(通过对象属性)。管道输出 Song 实例,但我希望推理器根据我在 subClassOf 定义中定义的基数约束来推断它们的类。Protege 的错误解释是说我的对象属性不满足基数...