3

我的问题很简单,但可能毫无意义。(在那种情况下,对不起那些花时间解释我原因的人)我想创建一个资源,比如(我在这里不显示所有资源声明):

<owl:DatatypeProperty rdf:about="relation:isPartOf">
    <rdfs:domain rdf:resource="http://www.w3.org/2004/02/skos/core#note"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#anyURI"/>
</owl:DatatypeProperty>

<rdf:Description rdf:about="resource:context:sc#c1">
<skos:note rdf:datatype="relation:isPartOf" rdf:resource="resource:context:sc#c2">
    </skos:note>
</rdf:Description>

重要的是要看到关于 skos:note 关系的三元组
Subject : c1 a uri。谓词:skos:note,对象:类型化 URI 我的 URI 不是直接 URI,而是“relation;isPartOf”uri。我创建了一个自定义 typedUri 类来做到这一点/我使用了一个自制的三重商店,所以我可以使用我自己的类。我稍微更改了 RDFXMWritter 以输出这些示例。所以“它有效”。我的问题更多:可以像这样键入 URI 吗?为什么 sesame openrdf 不提供 TypedURI 类?我确定有充分的理由?任何帮助、想法或答案都会很好。

我很确定,我创建 TypedURi 类的想法在某处是错误的。但是哪里 ?:-) 谢谢你

编辑:TypedURI 并不是一种真正的新型资源。我的上下文中的 URI 仍然是一个 URI。我只是在我的 skos:note 语句中声明,对于 c1,语句的对象是“relation:isPartOf”类型的数据,数据的范围是 anyURI。... typedURI 有助于实现具有这样一个范围的数据类型。

4

1 回答 1

5

首先:不,在 RDF 中不能像这样键入 URI。这也回答了您的第二个问题:OpenRDF Sesame 不提供此功能,因为它不是 RDF 模型的一部分。

URI(或者更准确地说,使用 URI 标识的资源)的类型是通过使用rdf:type关系来完成的,将资源 URI 链接到类 URI。例如,要创建ex:p1type的资源foaf:Person,我们会说(使用 RDF 的 Turtle 语法):

ex:p1 rdf:type foaf:Person .

RDF 中还有另一种类型,即数据类型。这仅适用于文字值,因此不能在 URI 上使用。它用于使文字值成为字符串、整数、日期等。

更新可能会出现混淆,因为xsd:anyURI它是 RDF 中的有效数据类型,并且它(在 XML 模式中)被定义为 URI 的类型。但是,当在 RDF 中使用数据类型时,其词法空间始终是文字(因为规范只允许文字实际具有数据类型)。所以你确实可以做这样的事情(使用 Turtle 语法作为文字符号):

"http://www.example.org/some/uri"^^xsd:anyURI  

但从 RDF 模型的角度来看,这不是一个 URI,而是一个文字字符串(带有 datatype xsd:anyURI)。所以从某种意义上说,是的,您可以在 RDF 中向 URI 添加类型,但您只能通过首先将它们“转换”为文字来做到这一点。

于 2014-01-20T10:57:35.597 回答