你会如何在RDF中模拟这个简单的语句?

时间:2018-04-29 10:46:07

标签: rdf semantic-web

我正在学习语义网,我试图围绕三元组的想法。据我所知,RDF是一种数据建模方法。它表示数据如何通过网络构建或相互连接。

RDF使用三元组来表示主题 - 谓词 - 对象的顺序的数据结构。每个实际数据项都取自它的URI。 URI匹配不同服务器上的数据。建模RDF时URI的快捷方式是使用Turtle格式,即qnames(<namespaces>: <identifier>)+ triples。

考虑到这一点,我们有声明:

  

David讲授2017-18的算法课程。

第一个问题,这个陈述来自何处,或者语义网境中的陈述是什么?

第二个问题,您如何在RDF中对此进行建模?我看待它的方式,我们首先确定三重。

主题是 David 谓词是讲座 对象是算法 什么是 2017-18

2 个答案:

答案 0 :(得分:1)

RDF语句是根据RDF标准指定的表单制作的话语记录,其中至少主语和谓词是URI。阅读有关RDF语句here的更多信息。对于“David在2017-18-18讲授算法课程”的陈述,您需要“David”,“讲座”和“算法课程”的标识符。您可以将David的练习标识为ex:David,但对于实际实现,应该避免这种情况,因为“David”只是描述资源的众多属性之一。此外,当瞄准URI的持久性时,助记符URI虽然更容易让人们使用。例如,应该避免使用用英语组织的首字母缩写词来识别组织的URI,因为首字母缩写词可能会改变,而其他语句仍然有效。考虑到这一点,假设我们有ex:s1ex:p11ex:o1来识别语句的前三部分。然后我们必须制作一些RDF语句来正式制作所需的语句并遵循一个良好的实践。

ex:s1
  ex:p11 ex:o1 ;
  foaf:firstName "David" ;
ex:o1 rdfs:label "The Algorithms Course" .
ex:p1 rdfs:label "lectures" .

有了这个,我们说大卫讲这个特别的东西。属性ex:p11通常来自本体,其中会有更多关于它的陈述,例如,它是一个对象属性,它是某种类型的活动等等。由于机器不知道ex:o1是什么类型的东西,它还需要作为课程,以及一种课程或个人(通常被称为“实例”,但在我看来是错误的)那种类型。

然后对于这个特定课程,我们需要说:

ex:o1
  ex:hasPeriodEnd "2018"^^xsd:gYear ;
  ex:hasPeriodStart "2017"^^xsd:gYear .

或者,我们可以reify the statement ex:s1 ex:p11 ex:o1(换句话说,就此声明发表另一个声明):

    [
      rdf:type rdf:Statement ;
      ex:hasPeriodEnd "2018"^^xsd:gYear ;
      ex:hasPeriodStart "2017"^^xsd:gYear ;
      rdf:object ex:o1 ;
      rdf:predicate ex:p11 ;
      rdf:subject ex:s1 ;
    ].

根据意图和背景,还有其他方法可以做出第二个陈述。例如:

ex:o1
      a ex:course1;
      ex:hasPeriodEnd "2018"^^xsd:gYear ;
      ex:hasPeriodStart "2017"^^xsd:gYear .
ex:course1 
      rdfs:subClassOf ex:course;
      rdfs:label "The Algorithms Course".
ex:course rdfs:label  "Course".

这是所用前缀的规范:

@prefix ex: <http://example.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> 

答案 1 :(得分:1)

  

第一个问题,这个陈述来自[?]

您提到的具体陈述可能来自大学的教学大纲。真的有关系吗?当你自学关系数据库时,你不会问自己数据来自哪里,对吗?

  

或语义网上下文中的语句是什么?

如果你的意思是“什么是RDF声明”,那么答案就在Section 1.2 of RDF 1.1 Concepts and Abstract Syntax中给出。确切地说,它说:

  

断言RDF triple表示由predicate指示的某些关系在resources denotedsubject之间保持object和{{} 3}} 的。对应于RDF三元组的此语句称为 RDF语句

因此RDF三元组是可以通过线路写入和读取或传输的内容,而RDF语句是三元组表达的内容,或者它意味着什么。

  

第二个问题,您如何在RDF中对此进行建模?我看待它的方式,我们首先确定三重。

在建模关系模式,UML或任何建模语言时,有多种表示相同知识的方法。 Ivo Velitchkov正在提供a viable option

就我而言,我不建议使用RDF具体化(即使用rdf:Statementrdf:subjectrdf:predicate和{{1}的技术在Ivo的回答中)。相反,我会将课程建模为一段时间内发生的事情,这将使2017-18赛季的算法课程与2016-17赛季的算法课程不同。算法课程作为一个整体将是一个课程系列。

此外,“大卫讲授算法课程”的意思并不完全清楚。这是否意味着他在本课程中提供一些讲座,还是意味着他在本课程中提供所有讲座?他是负责该课程的教授,而几位讲师也可以教它吗?

您可以使用以下型号:

rdf:object