5

我是 RDF 的新手,我有一个关于 RDF 的问题。

用一些简单的句子,如:“安学数学”,用 RDF 来表示是没有问题的。

但是对于更复杂的句子,例如:“ Parker 先生教机器学习并使用名为 ML-for-newbie 的书”,我的意思是 Parker 先生使用那本书来准备他的讲座。有 3 个对象:Parker 先生,机器学习,ML-for-newbie;2谓词:教,用。那么如何在RDF中表示这句话呢?据我所知,一个 RDF 语句就像 Subject --predicate--> Object,而 3 个对象和 2 个谓词让我感到困惑 :(

请帮忙,谢谢!

4

2 回答 2

8

在您的情况下,您可以将这些句子分解为 3 个 RDF 语句或使用空白节点

分解示例,课程有自己的URI( :Course999):

:Mr_Parker    :teaches    :Course999 .
:Course999    :courseName    "Machine Learning" .
:Course999    :hasSupportBook    "ML-for-newbies" .

对于匿名节点(空白节点_:b1),原理相同,但没有明确捕获课程:

:Mr_Parker    :teaches    _:b1 .
_:b1    :courseName    "Machine Learning" .
_:b1    :hasSupportBook    "ML-for-newbies" .

现在正如评论中提到的,字符串“ML-for-newbies”实际上不是一本书,它只是代表书名。所以你可以添加更多的三元组来捕获关于这个项目的额外信息(比如这本书的作者)。你可以考虑重新使用已经开发的词汇来完成这个任务(比如都柏林核心):

:Mr_Parker    :teaches    _:b1 .
_:b1    :hasSupportBook    :book2 .
:book2    dcterms:title    "ML-for-newbies" .
:book2    dcterms:creator    "John Smith" .

...然后这里的字符串只代表作者的名字,而不是作者本身(就像这本书一样),所以如果需要的话,你可以通过表示这个实体类型来进一步扩展你的三元组。

于 2013-05-10T08:11:27.420 回答
5

公认的答案很好并且有示例,但值得一看 W3C 的工作组说明在语义 Web 上定义 N-ary Relations讨论这些表示问题。接受的答案中的方法是模式 1:为该注释中的关系引入一个新类。还有一种模式 2:在关系中使用列表作为参数,但这感觉更笨拙,我认为没有多少人采用这种方法。

于 2013-05-10T12:35:59.403 回答