在sesame sail openrdf中使用类型化的URI

时间:2014-01-20 10:03:20

标签: uri rdf sesame openrdf

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

<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的三重奏:注意关系
主题:c1 a uri。谓词:skos:注意,对象:类型的URI 我的URI不是直接URI,而是“关系; isPartOf”uri。 我创建了一个自定义typedUri类来做/我使用自制的三重商店,所以我可以使用自己的类。 我改变了一点RDFXMWritter来输出这些例子。所以“它有效”。 我的问题更多:可以像这样输入URI吗?为什么芝麻openrdf不提供TypedURI类?我确定有充分的理由吗?任何帮助,想法或答案都会很好。

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

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

1 个答案:

答案 0 :(得分:5)

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

通过使用rdf:type关系,将资源URI链接到类URI,可以键入URI(或更准确地说,使用URI标识的资源)。例如,要创建类型为ex:p1的资源foaf:Person,我们会说(使用Turtle语法进行RDF):

ex:p1 rdf:type foaf:Person .

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

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

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

但是从RDF模型的角度来看,这不是URI,而是文字字符串(数据类型为xsd:anyURI)。所以从某种意义上说,是的,你可以在RDF中为URI添加类型,但是你只能通过&#34;转换&#34;来实现这一点。他们首先是文字。