子类而不是实例的RDF属性的域和范围?

子类而不是实例的RDF属性的域和范围?,rdf,rdfs,Rdf,Rdfs,在RDF/RDFs中是否有某种方式可以声明,任何具有给定属性的资源都是特定类的子类?(或对象不是主体的其他情况) rdfs:domain(分别为range)与之接近,但domain的定义包括“实例”,而不是“子类”: 域是rdf:Property的一个实例,用于声明具有给定属性的任何资源都是一个或多个类的实例 作为一个szenario的例子,这里需要它(作为范围,而不是域),想象一下您想要表达:John:likes:vegete,其中:vegete是食物的一个子类 :likes rdfs:ran

在RDF/RDFs中是否有某种方式可以声明,任何具有给定属性的资源都是特定类的子类?(或对象不是主体的其他情况)

rdfs:domain(分别为range)与之接近,但domain的定义包括“实例”,而不是“子类”:

域是rdf:Property的一个实例,用于声明具有给定属性的任何资源都是一个或多个类的实例

作为一个szenario的例子,这里需要它(作为范围,而不是域),想象一下您想要表达
:John:likes:vegete
,其中
:vegete
是食物的一个子类

:likes rdfs:range owl:Class
将介绍该示例,但它太笼统了

:likes rdfs:range:Food
是不正确的,因为
:vegeture
不是
:Food
的一个实例,而是一个子类

类似于
:likes rdfs:range Powerset(:Food)
的东西会更好,但我不知道如何指定使用RDF和rdfs

在Java中,它将是:

public abstract class Person
{
    public static class Food {}

    abstract Class<? extends Food> likes();
}
公共抽象类人物
{
公共静态类食物{}

抽象类使用RDFS,这是不可行的。RDFS非常有限,无法表达许多非常需要的东西。OWL可以提供帮助,但您所要求的对OWL来说是有问题的,因为您谈论的是一类类,您可以使用
Powerset(:Foot)来表达
.OWL使用基于RDF的语义可能会有所帮助,但现有的推理机可能会遇到困难(阅读“不能”)在这种情况下。基于规则的语言在RDF之上可能会解决您的建模问题。您也可以尝试以不同的方式来近似您想要的,依靠一些自定义代码来填补空白。感谢您的解释!我不使用推理机,所以我可能只会按照您的建议进行近似,并使用自定义代码如果它给我的应用程序带来问题,或者为发布生成一个更正确但效率更低的模型,请执行de。