我们如何限制 Literal 类型:
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
只是整数(使用 XML/RDF 表示法)?
我试过了:
<rdfs:range rdf:int/>
但它不起作用。
您必须在属性上设置范围。整数在 XMLSchema 中定义。例如:
<rdf:Property rdf:ID="testRelation">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
</rdf:Property>
请注意,这不是真正的限制。正如您在 RDF 中应该知道的那样,任何人都可以对任何事情说任何话。这意味着一个人可以决定该范围还包括双打,那么这也是正确的。
如果您正在查看某种健全性检查,那么您将不得不在 rdf 之外执行此操作(或使用推理来发现不一致)。
为了具体回答您的问题,您使用xsd:int
作为范围断言的值,如@JoshuaTaylor 所示。但这并不意味着你认为它意味着什么。rdfs:range
不会将属性的值限制为范围内指定的值,也不会“禁止”指定范围之外的值。
范围用于推断有关属性值的信息。例如,您可以说某个属性的范围p
既是A
又是B
。然后,如果您有一个形式的断言,那么:s :p :o
知道范围的推理器将推断出o
它既是 anA
又是 a B
。没有什么可以阻止你也断言那o
是一个C
( :o a :C
),这只是意味着,当与前面的断言结合时,那o
是一个A
,B
和C
。
您不能真正使用 RDFS 或 OWL 进行验证,至少不能开箱即用。这方面已经开展了一些工作,最近举办了一个研讨会,研究一些供应商如何支持验证,并了解什么是标准化的合理方法。