我正在尝试为我的应用程序提出一个本体(内部)。但是,我想尽可能多地借钱。当我环顾不同的现有本体时,我观察到重叠。例如:foaf:Person和dbpedia:Person等。它们都是其代理类,事物类等的子类。虽然它们可能具有不同的属性。他们为什么不重复使用/扩展彼此?
我的问题:
1)为什么dbpedia不使用foaf:person,反之亦然?
2)你如何选择b / w dbpedia:人和foaf:人或你自己创建?
我对此很新。请原谅我的无知。
答案 0 :(得分:5)
1)因为DBpedia包含数千种用于各种不同事物的类,如果他们在开始发布DBpedia数据之前必须搜索Web以寻找其他类重用它们,它们就永远无法获得。所以他们用自己的类创建了自己的DBpedia本体。在某些情况下,他们会在发现现有类时通过rdfs:subClassOf
或owl:equivalentClass
将DBpedia本体类映射到现有类。此外,FOAF如何定义“Person”以及DBpedia如何定义“Person”可能存在细微差别。例如,像哈利波特这样的虚构人物是不是一个人?定义自己的类可能更安全,这样您就可以完全控制定义。
2)这是一个复杂的决定。如果有一个完善的词汇表,如FOAF,DC,SKOS等,可以满足您的需求,那么您应该始终重复使用它而不是发明自己的词汇。如果不存在适用的词汇表,或者如果您不相信词汇表的发布者声誉良好并且从长远来看会保持词汇量稳定,那么创建自己的词汇表可能更好。您始终可以组合多个词汇表,或者使用您自己的一些属性(在您自己的命名空间中)扩展现有词汇表。如果您定义自己的类和属性,则应始终尝试将它们映射到现有的类和属性。如果您可以在多个现有词汇表之间进行选择,请使用更广泛使用的词汇表。 LOV,LODstats和Sindice Analytics等服务可以为您提供帮助。