定义RDF语句的基数

定义RDF语句的基数,rdf,semantic-web,sparql,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> T 我想添加(user,h

我对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>

T
我想添加(user,hasFavorite,x)和(user,hasFavorite,y)三元组,因为我需要将一个整数与之关联。我有点不确定如何在三元组中加一个整数。我相信这一定很简单,但我只是想了解一下RDF,所以非常感谢您的帮助


谢谢Ally,我不太清楚你想在这里做什么;用户资源具有整数值的三元组,或者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>
免责声明:我编辑了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>

T
10
20

因此,如果我正确地阅读了问题和你对达乔布帖子的评论,你可能会想要这样的东西(同样是海龟符号,因为它更具可读性):

@base。
@前缀rdf:。
@前缀:。
:T
:hasFavorite:fave1,:fave2;
:hasName“T”;
a:用户。
:fave1A:最喜欢的;
:波段:x;
:播放计数10。
:fave2a:最喜欢的;
:波段:y;
:播放次数4。
:xa:波段;
:hasName“波段1”。
:y a:波段;
:hasName“波段2”。
因此,这允许您单独保存每个用户最喜爱的乐队的播放计数,并且每个乐队可以根据需要创建新的最喜爱的乐队,从而被不同的用户选择为最喜爱的乐队


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

嘿,达乔布,谢谢你的回答。你看起来像你现在的rdf!我意识到我没有正确地解释我的问题。我应该提到的是,可能有多个用户,他们可以在同一个“x”或“y”(实际上是波段)上拥有HasFavorite关系,因此基本上,对于每个(用户、HasFavorite、波段)三元组,我需要关联一个整数值(播放计数)使用此实际三元组,而不是用户或乐队单独使用,因为每个乐队可能有多个Hasfavoitte三元组。谢谢你抽出时间。我已经澄清了这个问题,这对我来说似乎是正确的数据模型。有时候在纸上画出来比较容易,但在网页上写下来却很难!是的,写在纸上肯定更容易,不过对于网络来说,我宁愿用Turtle而不是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>
@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" .