1

我对 RDF 有疑问。我有几个三元组定义为:

<User rdf:about="#T">
 <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
 <hasFavourite rdf:resource="#x"/>
 <hasFavourite rdf:resource="#y"/>
</User>

我想添加到 (user, hasFavourite, x) 和 (user, hasFavourite, y) 三元组,因为我需要将整数与它们相关联。我有点不确定如何将整数添加到三元组。我确定这一定很简单,但我只是了解 RDF,因此感谢您的帮助。

谢谢盟友

4

2 回答 2

1

我不完全清楚你想在这里建模什么;用户资源具有整数值的三元组或 X 和 Y 资源具有整数值。我会假设后者,因为它更复杂。

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns="http://example.org/ns#">
<User rdf:about="#T">
 <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
 <hasFavourite rdf:resource="#x"/>
 <hasFavourite rdf:resource="#y"/>
</User>
 <hasFavourite rdf:about="#x">
   <integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</integerThatMeansSomething>
 </hasFavourite>
 <hasFavourite rdf:about="#y">
   <integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</integerThatMeansSomething>
 </hasFavourite>
</rdf:RDF>

这在 Turtle 中更容易阅读:(rapper -q -o turtle foo.rdf 'http://example.org/ns#'从我的Raptor软件转换而来)

@base <http://example.org/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <> .

:T
    :hasFavourite :x, :y ;
    :hasName "T"^^<http://www.w3.org/2001/XMLSchema#string> ;
    a :User .

:x
    :integerThatMeansSomething 10 ;
    a :hasFavourite .

:y
    :integerThatMeansSomething 20 ;
    a :hasFavourite .

免责声明:我编辑了 rdf/xml,发明了 Turtle 并编写了上面的软件!

上面的读法如下:“T 是一个用户,有两个收藏夹 x 和 y 以及一个字符串名称。X 是收藏夹,并且有一个值为 10 的整数属性。” 等等。

如果是前者,则 rdf/xml 更简单:

<User rdf:about="#T">
 <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
 <hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</hasFavourite>
 <hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</hasFavourite>
</User>
于 2009-12-09T03:16:23.210 回答
1

因此,如果我正确阅读了问题和您对 dajobe 帖子的评论,您可能想要这样的内容(再次以 Turtle 表示法,因为它更具可读性):

@base <http://example.org/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <> .

:T
    :hasFavourite :fave1, :fave2 ;
    :hasName "T" ;
    a :User .

:fave1 a :Favourite ;
       :band :x ;
       :playCount 10 .

:fave2 a :Favourite ;
       :band :y ;
       :playCount 4 .

:x a :Band ;
   :hasName "Band 1" .

:y a :Band ;
   :hasName "Band 2" .

因此,这允许您单独保留每个用户收藏的播放计数,并且每个乐队可以通过根据需要创建新的收藏来选择为不同用户的收藏。

当然,我当然可能完全错了,这可能与您真正想要的完全不同!

于 2009-12-09T11:11:46.470 回答