我有一堂芝加哥人。它有两个属性 hasAge 和 hasZipCode,下面会提到它们的值。
:ChicagoPerson :hasAge "30"
:hasZipCode "60543"
这没有意义。在此代码段中,ChicagoPerson 是一个个体(或资源),并且具有您提到的两个属性的值。
我想说 hasAge 和 hasZipCode 是 hasColumn 属性的子属性。因此,我像下面这样提到它。
:hasAge rdfs:subPropertyOf :hasColumn
:hasZipCode rdfs:subPropertyOf :hasColumn
这是执行此操作的正确方法。这意味着,如果您有可用的 RDFS 推理,那么您将拥有以下数据:
:ChicagoPerson :hasAge "30" ,
:hasZipCode "60543" ,
:hasColumn "30", "60543" .
但是,在我的 RDF 图中,我没有任何包含属性 hasColumn 的类。我的意思是我没有以下内容:
:Table :hasColumn <literal>
同样,我认为您混淆了班级和个人的概念。一个类是个体的集合。如果您有可用的 RDFS 推断,那么您在上面编写的子属性公理将允许 RDFS 推理器推断出我提到的其他三元组。您将看到的额外三元组是
:ChicagoPerson :hasColumn "30", "60543" .
不是以表为主题的东西。
是否允许在 RDF 中定义没有类的属性(例如,hasColumn)?
RDF 并没有任何定义属性的概念。RDF 只有三元组的主体、谓词、客体。像 RDFS 和 OWL 这样的模式语言为某些类型的三元组赋予特殊含义,通常是通过为特定谓词赋予含义。例如,在 RDFS 和 OWL 中,谓词rdfs:subPropertyOf具有特殊含义。
您实际上是否在数据集上运行了 RDFS 推理器?