理解语义网及其方法,语法,词汇和语言

时间:2010-06-14 13:23:00

标签: xml rdf semantics semantic-web semantic-markup

我刚刚被介绍到语义网及其功能系列,但我很难理解其中的一些内容,我希望有人可以向我解释。

据我所知,RDF可以用几种语法编写。 RDF / XML,Turtle等。

现在,我理解XML。如何呈现以及如何解析它。但是,有些人用乌龟语法编写,但他们如何解析这些信息呢?我似乎无法找到任何语言的单个库来将用乌龟语法编写的信息“提取”为另一种形式。 N3也是如此。它怎么用?执行还是其他?

我似乎能够理解RDFa。这是一种将RDF实现为XHTML的方法。对我而言,这是将RDF实现为“某事”的一种方式。但是我如何将其与龟,N3等进行比较呢?

提前致谢。

2 个答案:

答案 0 :(得分:6)

首先,要明确的是,当我们说'RDF'时,我们的意思是(在基础上)一组三元组:

<subject1> <predicate1> <object1>
<subject2> <predicate2> <object2>
...

这是一个简单的数据库,而不是“可执行的”。

编写RDF的方法有很多种。 RDF / XML是最常见的,但在您学习时并不是最明显的。 N-Triples是最简单的,你只需写出三元组:

<subject1> <predicate1> <object1> .
<subject2> <predicate2> <object2> .
...

海龟就像N-Triples,但有很多捷径。写起来很容易。例如,如果我们有:

<person> <age> 21 .
<person> <friend> <bob> .
<person> <friend> <alice> .
...

在乌龟中,我们可以通过写作来避免重复:

<person> <age> 21 ; 
         <friend> <bob> ,
         <alice> .

(我已经在多行上写了这个,所以你可以看到它看起来像三重版本,但错过了部分)

你会发现大多数RDF库的海龟解析器。参见Jena(java),Redland(C),RDFLib(python),Trine(perl)等。他们使用turtle并生成三元组,就像RDF / XML解析器和RDFa解析器一样。

加载RDF后,您可以查询,处理它,无论您使用任何其他数据格式做什么。

RDFa是一种奇怪的RDF格式,因为它嵌入了其他东西(当你转换为三元组时,大部分都会被丢弃)。 RDFa的目的是让RDF更顺利地集成到Web中。部署RDF版本和HTML版本的个人信息是重复和繁琐的。使用RDFa,我可以拥有一个为浏览器和rdf消费者提供服务的文档。

答案 1 :(得分:0)

作为编程技能有限的人,我发现PHP的ARC2 libraries使RDF非常容易处理。入门网站上有很好的文档和很好的例子。它包括所有常见格式的解析器,包括turtle,甚至可以进行格式检测,如果你不喜欢它,也可以选择正确的解析器。

在解析RDF时,ARC会生成两种不同类型的关联数组,这些数组非常简单。可以找到这些结构的描述here

我从没想过我会这么说,但是PHP + ARC实际上使用了RDF ...很有趣。