我试图掌握语义网的概念。我发现很难理解RDF和OWL之间的确切区别。OWL是RDF的扩展还是这两种完全不同的技术?


当前回答

在WC3文档对象模型中,文档是一个抽象的东西:包含文本、注释、属性和其他嵌套元素的元素。

在语义网中,我们处理的是一组“三元组”。每个三重是:

一个主题,三元组的内容,id,数据库主键,一个URI;而且 谓词,“动词”,“属性”,“数据库列”-另一个URI;而且 对象,原子值或一些URI。

OWL之于语义web就像schema之于W3C文档对象模型。它记录了各种uri的含义,并指定如何以一种可以由机器检查的正式方式使用它们。语义web对于应用于它的OWL可能有效也可能无效,就像文档对于模式可能有效也可能无效一样。

RDF之于语义网就像XML之于DOM——它是一组三元组的序列化。

当然,RDF通常被序列化为XML文档……但重要的是要理解RDF与“RDF的XML序列化”不是一回事。

类似地,OWL可以使用OWL/XML序列化,或者(不好意思)可以表示为RDF,而RDF本身通常序列化为XML。

其他回答

一图胜千言!下面这张图应该可以加强克里斯托弗·古特里奇的观点 在这个回答中说语义网是一个“分层架构”。

来源:https://www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html

我试图掌握语义网的概念。我发现这很难 来理解RDF和OWL之间的确切区别。是 OWL是RDF的扩展或者这两者是完全不同的 技术吗?

简而言之,是的,您可以说OWL是RDF的扩展。

In more detail, with RDF you can describe a directed graph by defining subject-predicate-object triples. The subject and the object are the nodes, the predicate is the edge, or by other words, the predicate describes the relation between the subject and the object. For example :Tolkien :wrote :LordOfTheRings or :LordOfTheRings :author :Tolkien, etc... Linked data systems use these triples to describe knowledge graphs, and they provide ways to store them, query them. Now these are huge systems, but you can use RDF by smaller projects. Every application has a domain specific language (or by DDD terms ubiquitous language). You can describe that language in your ontology/vocabulary, so you can describe the domain model of your application with a graph, which you can visualize show it to business ppl, talk about business decisions based on the model, and build the application on top of that. You can bind the vocab of your application to the data it returns and to a vocabulary known by the search engines, like microdata (for example you can use HTML with RDFA to do this), and so search engines can find your applications easily, because the knowledge about what it does will be machine processable. This is how semantic web works. (At least this is how I imagine it.)

Now to describe object oriented applications you need types, classes, properties, instances, etc... With RDF you can describe only objects. RDFS (RDF schema) helps you to describe classes, inheritance (based on objects ofc.), but it is too broad. To define constraints (for example one kid per chinese family) you need another vocab. OWL (web ontology language) does this job. OWL is an ontology which you can use to describe web applications. It integrates the XSD simpleTypes. So RDF -> RDFS -> OWL -> MyWebApp is the order to describe your web application in a more and more specific way.

RDF、RDFS和OWL是表示日益复杂的信息或知识的方法。它们都可以用RDF/XML语法(或任何其他RDF序列化语法,例如Turtle或N3)序列化。

这些技术是相关的,应该是可互操作的,但它们有不同的起源,这可能就是为什么它们之间的关系很难掌握的原因。选择一种还是另一种取决于建模所需要的情况有多复杂。

表达能力的总结

RDF:简单的表示,主要关注实例及其类型的映射(RDF: type)。可以定义自定义属性来链接数据和创建三元组。使用SPARQL查询RDF数据。 在Turtle中序列化RDF的例子:

@prefix : <http://www.example.org/> .
:john    rdf:type           :Man .
:john    :livesIn  "New-York" .
:livesIn    rdf:type    rdf:Property .

RDFS: Some situations are not easily modelled by RDF alone, it is sometimes interesting to represent more complex relations like subclasses (the type of a type) for example. RDFS provides special means to represent such cases, with constructs like rdfs:subClassOf, rdfs:range or rdfs:domain. Ideally, a reasoner can understand the RDFS semantics and expand the number of triples based on the relations: For instance if you have the triples John a Man and Man rdfs:subClassOf Human then you should generate as well the triple John a Human. Note that this is not possible to do with RDF alone. RDFS data are queried using SPARQL. Example of RDFS serialised in Turtle:

@prefix : <http://www.example.org/> .
:john    rdf:type           :Man .
:Man    rdfs:subClassOf    :Human .
:john    :livesIn  "New-York" .
:livesIn    rdf:type    rdf:Property .
# After reasoning
:john    rdf:type    :Human .

OWL: The highest level of expressivity. Relation between classes can be formally modelled based on description logics (mathematical theory). OWL relies heavily on the reasoner, it is possible to express complex constructs such as chained properties for instance or restriction between classes. OWL serves to build ontologies or schema on the top of RDF datasets. As OWL can be serialised as RDF/XML, it is theoretically possible to query it via SPARQL, yet it is much more intuitive to query an OWL ontology with a DL query (which is usually a standard OWL class expression). Example of OWL constructs serialised in Turtle.

@prefix : <http://www.example.org/> .
:livesIn    rdf:type    owl:DatatypeProperty .
:Human    rdf:type    owl:Class .
:Man   rdf:type    owl:Class .
:Man    rdfs:subClassOf    :Human .
:John    rdf:type    :Man . 
:John    rdf:type    owl:NamedIndividual .

在WC3文档对象模型中,文档是一个抽象的东西:包含文本、注释、属性和其他嵌套元素的元素。

在语义网中,我们处理的是一组“三元组”。每个三重是:

一个主题,三元组的内容,id,数据库主键,一个URI;而且 谓词,“动词”,“属性”,“数据库列”-另一个URI;而且 对象,原子值或一些URI。

OWL之于语义web就像schema之于W3C文档对象模型。它记录了各种uri的含义,并指定如何以一种可以由机器检查的正式方式使用它们。语义web对于应用于它的OWL可能有效也可能无效,就像文档对于模式可能有效也可能无效一样。

RDF之于语义网就像XML之于DOM——它是一组三元组的序列化。

当然,RDF通常被序列化为XML文档……但重要的是要理解RDF与“RDF的XML序列化”不是一回事。

类似地,OWL可以使用OWL/XML序列化,或者(不好意思)可以表示为RDF,而RDF本身通常序列化为XML。

首先,正如前面所指出的,owl可以在RDF中序列化。

其次,OWL通过提供使用正式的可计算一阶描述逻辑定义三元组组件的设备,为RDF添加了本体功能(RDF本身仅为正式的知识表示提供了极其有限的功能)。这就是所谓的“语义丰富性”。

第三,重要的是要意识到在OWL- full(对于OWL 1)中rdfs:class和OWL:class是等价的,在OWL- dl中,OWL:class是rdfs:class的子类。实际上,这意味着您可以使用OWL本体作为RDF的模式(它不正式地需要模式)。

我希望这有助于进一步澄清。