【问题标题】:Defining cardinality for a RDF statement定义 RDF 语句的基数
【发布时间】:2009-12-08 20:56:23
【问题描述】:

我在使用 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,因此感谢您提供任何帮助。

感谢小伙伴

【问题讨论】:

    标签: rdf semantic-web sparql


    【解决方案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" .
    

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

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

    【讨论】:

    • 鉴于对问题的澄清,这对我来说似乎是正确的数据模型。有时在纸上画出来更容易,但在网页上写下来就很棘手!
    • 是的,在纸上写下来肯定更容易,但对于网络来说,我宁愿在任何时候都用 Turtle 而不是 RDF/XML 输入它
    • 干杯,伙计们。我刚开始尝试它并且它有效。我没有想过要创建一个基本上是关系的类型!再次感谢
    【解决方案2】:

    我不完全清楚你想在这里建模什么;用户资源具有整数值的三元组或 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>
    

    【讨论】:

    • 嗨 dajobe 感谢您的回答。你现在看起来像你的rdf!我意识到我没有正确解释我的问题。我应该提到的是,可能有多个用户,他们可以在同一个“x”或“y”(实际上是乐队)上拥有 hasFavourite 关系,所以基本上对于每个(用户、hasfavourite、乐队)三倍 i需要将整数值(playCount)与这个实际的三元组相关联,而不是单独关联用户或乐队,因为每个乐队可能有多个 hasFavoutite 三元组。谢谢你的时间。盟友
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 2018-12-18
    • 1970-01-01
    • 2012-04-20
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多