我是RDF的新手,我有一个关于RDF的问题.
使用一些简单的句子:"Ann study Math",使用RDF表示它没有问题.
但是更复杂的句子如:" 帕克先生教授机器学习并使用名为ML-for-newbie的书 ",我的意思是帕克先生用这本书来准备他的讲座.有三个对象:Parker先生,机器学习,ML-for-newbie ; 2谓词:教导,使用.那么如何在RDF中表示这句话呢?据我所知,一个RDF语句就像Subject --predicate - > Object,而3个对象和2个谓词让我感到困惑:(
Plz帮助,谢谢!
在您的情况下,您可以在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" .
...然后这里的字符串只代表作者的名字而不代表作者本身(就像书中一样),所以如果需要,你也可以通过代表这个实体类型来扩展你的三元组.
接受的答案是好的并且有例子,但值得看一下W3C的工作组注意定义语义网上的N元关系,讨论这些表示问题.接受答案中的方法是模式1:在该注释中为关系引入新类.还有一个模式2:在关系中使用列表作为参数,但这感觉更笨拙,我认为没有多少人采用这种方法.