首页 > 解决方案 > 子类而不是实例的 RDF 属性的域和范围?

问题描述

有没有办法在 RDF/RDF 中声明任何具有给定属性的资源都是特定类的子类?(或其他情况,对象不是主语)

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

rdfs:domain 是 rdf:Property 的一个实例,用于声明具有给定属性的任何资源都是一个或多个类的实例。RDF 模式 1.1

作为需要 this 的示例 szenario(作为范围,而不是域),假设您想表达:John :likes :Vegetable,其中:Vegetable是食物的子类。

:likes rdfs:range owl:Class 将涵盖该示例,但它太笼统了。

:likes rdfs:range :Food 将是不正确的,因为:Vegetable它不是子类的实例:Food而是子类。

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

在 Java 中,它将是:

public abstract class Person
{
    public static class Food {}

    abstract Class<? extends Food> likes();
}

可以使用具有通用量化的 OWL 公理进行建模,但我想知道如果没有 OWL 这是否可能,因为我有大量的语句要上传到 SPARQL 端点,并且在 RDF 中表达 OWL 公理会大大增加三元组的数量量并使实际使用(例如 SPARQL 查询)更加复杂。

标签: rdfrdfs

解决方案


推荐阅读