RDF语句可以包含多个主题吗?

时间:2018-07-14 16:06:20

标签: rdf semantic-web json-ld linked-data

如果您对这个问题的回答是肯定的,您能举一个使用JSON-LD格式的示例吗?

2 个答案:

答案 0 :(得分:5)

答案是

来自RDF 1.1 Concepts and Abstract Syntax

  

1.2资源和声明

     

声明RDF triple表示谓词所表示的某种关系在主语和宾语所表示的资源之间保持着。该与RDF三元组相对应的语句称为 RDF语句 。谓词本身是IRI,表示 属性 ,即可以视为二进制关系的资源。 (涉及两个以上实体的关系只能是indirectly expressed in RDF。)


如果您只是想为具有共同术语的多个语句寻找语法糖。 —

在Turtle中,有predicate listsobject lists,但是没有subject lists
另请参阅以下问题: List in front of the expression in OWL

更新

在JSON-LD 1.1中,您可以使用@reverse关键字i。 e。写类似

{
  "@id": "#homer",
  "http://example.com/vocab#name": "Homer",
  "@reverse": {
    "http://example.com/vocab#parent": [
      {
        "@id": "#bart",
        "http://example.com/vocab#name": "Bart"
      }, {
        "@id": "#lisa",
        "http://example.com/vocab#name": "Lisa"
      }
    ]
  }
}

代替

[
  {
    "@id": "#homer",
    "http://example.com/vocab#name": "Homer"
  }, {
    "@id": "#bart",
    "http://example.com/vocab#name": "Bart",
    "http://example.com/vocab#parent": { "@id": "#homer" }
  }, {
    "@id": "#lisa",
    "http://example.com/vocab#name": "Lisa",
    "http://example.com/vocab#parent": { "@id": "#homer" }
  }
]

答案 1 :(得分:1)

实际上,答案可能需要澄清。 RDF语句不能包含多个主题,因为按照RDF规范定义的“主题”,它没有任何主题。

当人们想谈论“ RDF三重”时,谈论“ RDF陈述”是很常见的。 RDF三元组是一种语法结构,它是三个元素的序列,依次称为 subject predicate 对象。每个RDF三元组恰好只有一个科目。就RDF规范而言,主题是IRI或空白节点。但是, RDF语句不是RDF三元组。这是RDF三元组正在表达的事实。例如,如果我说地球围绕太阳旋转,那我就是在声明。地球不是RDF规范的主题,因为它不是IRI(遵循RFC规范的字符序列)或空白节点(存在变量)。它是由材料制成的行星,当然,它们都不是UNICODE字符。但是,我可以编写一个表示以下语句的RDF三元组:

dbr:Earth  onto:revolvesAround  dbr:Sun .

dbr:是DBpedia资源https://dbpedia.org/resource/的前缀。 这表示根据dbr:Earth表示的关系将某个事物(由dbr:Sun表示与其他事物(由onto:revolvesAround表示)相关的RDF语句。但是,该语句也可以使用以下三元组来表达:

wd:Q2  onto:revolvesAround  wd:Q525 .

wd:是Wikidata https://www.wikidata.org/wiki/的前缀。该语句是相同的(考虑到DBpedia中指出dbr:Earth owl:sameAs wd:Q2dbr:Sun owl:sameAs wd:525),但是三元组是不同的。特别是,主题是不同的。因此,从某种意义上讲,您可以争辩说同一RDF语句可以有多个主题。究竟用JSON-LD表示还是其他什么都不重要。