为RDF语句定义基数

时间:2009-12-08 20:56:24

标签: rdf semantic-web sparql

我遇到了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,所以任何帮助都会受到赞赏。

谢谢Ally

2 个答案:

答案 0 :(得分:1)

我不清楚你想在这里建模什么; User资源具有带有整数值的三元组,或者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中稍微容易阅读:(通过Raptor软件从rapper -q -o turtle foo.rdf 'http://example.org/ns#'转换)

@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的整数属性。” Y等。

如果是前者,则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>

答案 1 :(得分: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" .

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

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