我试图掌握语义网的概念。我发现很难理解RDF和OWL之间的确切区别。OWL是RDF的扩展还是这两种完全不同的技术?
当前回答
RDFS允许您通过在一个灵活的、基于三元的格式上进行标准化,然后提供一个词汇表(“关键字”,如rdf:type或RDFS:subClassOf)来表达事物之间的关系,这些词汇表可以用来表示事物。
OWL类似,但更大、更好、更糟。OWL让您更多地了解您的数据模型,它向您展示了如何有效地使用数据库查询和自动推理器,它还提供了有用的注释,以便将数据模型带入现实世界。
第一个区别:词汇
在RDFS和OWL之间的区别中,最重要的是OWL提供了一个大得多的词汇表,您可以用它来表达事情。
例如,OWL包括所有来自RDFS的老朋友,如RDFS:type、RDFS:domain和RDFS:subPropertyOf。然而,OWL也给你新的和更好的朋友!例如,OWL允许你用集合操作来描述你的数据:
Example:Mother owl:unionOf (Example:Parent, Example:Woman)
它允许你定义跨数据库的等价值:
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
它允许你限制属性值:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
事实上,OWL提供了如此多新的、复杂的词汇来用于数据建模和推理,这是它自己的教训!
第二个区别:刚性
与RDFS不同的另一个主要区别是,OWL不仅告诉您如何使用某些词汇表,而且还告诉您如何不能使用这些词汇表。相比之下,RDFS为您提供了一个任意的世界,您可以添加几乎任何您想要的三重组合。
例如,在RDFS中,任何你想要的东西都可以是RDFS:Class的实例。你可能决定说Beagle是一个rdfs:类,然后说Fido是Beagle的一个实例:
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
接下来,你可能想说关于Beagle的事情,也许你想说Beagle是在英国饲养的狗的一个例子:
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
本例中有趣的地方是,示例:Beagle同时用作类和实例。比格犬是菲多的一个阶级,但比格犬本身是另一个阶级的一员:在英国繁殖的东西。
在RDFS中,所有这些都是完全合法的,因为RDFS并没有真正限制哪些语句可以插入,哪些语句不能插入。相比之下,在OWL中,或者至少在某些类型的OWL中,上面的语句实际上是不合法的:您根本不允许说某个东西可以既是类又是实例。
这是RDFS和OWL之间的第二个主要区别。RDFS使所有人都可以自由使用,任何东西都可以使用,就像一个充满了狂野西部、speak - easy和萨尔瓦多·达利的世界。OWL的世界强加了一个更加严格的结构。
第三个区别:注释,元数据
假设您已经花了一个小时来构建描述您的无线电制造业务的本体。在午餐期间,您的任务是为您的时钟制造业务构建一个本体。今天下午,在喝完一杯美味的咖啡后,您的老板现在告诉您,您必须为您的高利润时钟收音机业务构建一个本体。有没有一种方法可以很容易地重复利用上午的工作?
OWL让这类事情变得非常非常简单。Owl:Import是您将在时钟无线电情况下使用的,但是Owl还提供了丰富的注释,例如Owl: versionInfo、Owl: backwardsCompatibleWith和Owl: deprecedproperty,可以轻松地将数据模型链接到一个相互一致的整体中。
与RDFS不同,OWL一定能满足您所有的元数据建模需求。
结论
OWL为您提供了更大的词汇表,这使得您可以轻松地谈论有关数据模型的任何内容。它甚至允许你根据当今计算机的计算现实来调整你说的话,并为特定的应用程序(例如搜索查询)进行优化。此外,OWL允许您使用标准注释框架轻松地表示不同本体之间的关系。
与RDFS相比,所有这些都是优势,通常值得您花费额外的努力来熟悉它们。
来源:RDFS vs. OWL
其他回答
RDF是一种定义三元“主语”、“谓语”、“值”的方法。 例如,如果我想说,
"我叫皮埃尔"
我会写
<mail:me@where.com> <foaf:name> "Pierre"
参见<foaf:name> ?它是FOAF本体的一部分。本体是描述给定主题的属性和类的正式方式,OWL是定义本体的一种(RDF)方式。
你使用c++, Java等等…定义一个类,一个子类,一个字段,等等…
class Person
{
String email_as_id;
String name;
}
RDF使用OWL来定义这类语句。
另一个问这类问题的地方:http://www.semanticoverflow.com/
语义网是分层的。这是一个简短的总结,我认为你会感兴趣。
更新:请注意,RDFS是用来定义数据结构的,而不是OWL。OWL描述的语义关系是普通编程(如C结构体)所不关心的,而且更接近人工智能研究和集合论。
三元组和uri
Subject - Predicate - Object
这些描述了一个事实。通常URI用于主语和谓语。对象可以是另一个URI,也可以是一个文字,比如数字或字符串。文字可以有一个类型(也是一个URI),也可以有一种语言。是的,这意味着三元组最多可以有5位数据!
例如,三连音可以描述查尔斯是哈里的父亲这一事实。
<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .
三元组是数据库规范化在逻辑上的极端。它们的优点是可以将来自多个源的三元组加载到一个数据库中,而无需重新配置。
RDF和RDFS
下一层是RDF——资源描述框架。RDF为三元组定义了一些额外的结构。RDF定义的最重要的东西是一个称为“RDF:type”的谓词。这是用来表示事物是某种类型的。每个人都使用rdf:type,这使得它非常有用。
RDFS (RDF Schema) defines some classes which represent the concept of subjects, objects, predicates etc. This means you can start making statements about classes of thing, and types of relationship. At the most simple level you can state things like http://familyontology.net/1.0#hasFather is a relationship between a person and a person. It also allows you to describe in human readable text the meaning of a relationship or a class. This is a schema. It tells you legal uses of various classes and relationships. It is also used to indicate that a class or property is a sub-type of a more general type. For example "HumanParent" is a subclass of "Person". "Loves" is a sub-class of "Knows".
RDF连载
RDF可以以多种文件格式导出。最常见的是RDF+XML,但这有一些弱点。
N3是一种更容易阅读的非xml格式,并且有一些更严格的子集(Turtle和N-Triples)。
重要的是要知道RDF是一种处理三元组的方法,而不是文件格式。
XSD
XSD是一个命名空间,主要用于描述属性类型,如日期、整数等。它通常出现在RDF数据中,用于标识文字的特定类型。它也用于XML模式,这是一种略有不同的情况。
OWL
OWL adds semantics to the schema. It allows you to specify far more about the properties and classes. It is also expressed in triples. For example, it can indicate that "If A isMarriedTo B" then this implies "B isMarriedTo A". Or that if " C isAncestorOf D " and " D isAncestorOf E " then " C isAncestorOf E ". Another useful thing owl adds is the ability to say two things are the same, this is very helpful for joining up data expressed in different schemas. You can say that relationship "sired" in one schema is owl:sameAs "fathered" in some other schema. You can also use it to say two things are the same, such as the "Elvis Presley" on wikipedia is the same one on the BBC. This is very exciting as it means you can start joining up data from multiple sites (this is "Linked Data").
您还可以使用OWL来推断隐含的事实,例如“C isancestry of E”。
RDFS允许您通过在一个灵活的、基于三元的格式上进行标准化,然后提供一个词汇表(“关键字”,如rdf:type或RDFS:subClassOf)来表达事物之间的关系,这些词汇表可以用来表示事物。
OWL类似,但更大、更好、更糟。OWL让您更多地了解您的数据模型,它向您展示了如何有效地使用数据库查询和自动推理器,它还提供了有用的注释,以便将数据模型带入现实世界。
第一个区别:词汇
在RDFS和OWL之间的区别中,最重要的是OWL提供了一个大得多的词汇表,您可以用它来表达事情。
例如,OWL包括所有来自RDFS的老朋友,如RDFS:type、RDFS:domain和RDFS:subPropertyOf。然而,OWL也给你新的和更好的朋友!例如,OWL允许你用集合操作来描述你的数据:
Example:Mother owl:unionOf (Example:Parent, Example:Woman)
它允许你定义跨数据库的等价值:
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
它允许你限制属性值:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
事实上,OWL提供了如此多新的、复杂的词汇来用于数据建模和推理,这是它自己的教训!
第二个区别:刚性
与RDFS不同的另一个主要区别是,OWL不仅告诉您如何使用某些词汇表,而且还告诉您如何不能使用这些词汇表。相比之下,RDFS为您提供了一个任意的世界,您可以添加几乎任何您想要的三重组合。
例如,在RDFS中,任何你想要的东西都可以是RDFS:Class的实例。你可能决定说Beagle是一个rdfs:类,然后说Fido是Beagle的一个实例:
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
接下来,你可能想说关于Beagle的事情,也许你想说Beagle是在英国饲养的狗的一个例子:
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
本例中有趣的地方是,示例:Beagle同时用作类和实例。比格犬是菲多的一个阶级,但比格犬本身是另一个阶级的一员:在英国繁殖的东西。
在RDFS中,所有这些都是完全合法的,因为RDFS并没有真正限制哪些语句可以插入,哪些语句不能插入。相比之下,在OWL中,或者至少在某些类型的OWL中,上面的语句实际上是不合法的:您根本不允许说某个东西可以既是类又是实例。
这是RDFS和OWL之间的第二个主要区别。RDFS使所有人都可以自由使用,任何东西都可以使用,就像一个充满了狂野西部、speak - easy和萨尔瓦多·达利的世界。OWL的世界强加了一个更加严格的结构。
第三个区别:注释,元数据
假设您已经花了一个小时来构建描述您的无线电制造业务的本体。在午餐期间,您的任务是为您的时钟制造业务构建一个本体。今天下午,在喝完一杯美味的咖啡后,您的老板现在告诉您,您必须为您的高利润时钟收音机业务构建一个本体。有没有一种方法可以很容易地重复利用上午的工作?
OWL让这类事情变得非常非常简单。Owl:Import是您将在时钟无线电情况下使用的,但是Owl还提供了丰富的注释,例如Owl: versionInfo、Owl: backwardsCompatibleWith和Owl: deprecedproperty,可以轻松地将数据模型链接到一个相互一致的整体中。
与RDFS不同,OWL一定能满足您所有的元数据建模需求。
结论
OWL为您提供了更大的词汇表,这使得您可以轻松地谈论有关数据模型的任何内容。它甚至允许你根据当今计算机的计算现实来调整你说的话,并为特定的应用程序(例如搜索查询)进行优化。此外,OWL允许您使用标准注释框架轻松地表示不同本体之间的关系。
与RDFS相比,所有这些都是优势,通常值得您花费额外的努力来熟悉它们。
来源:RDFS vs. OWL
在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。
基本的语义web堆栈已经在这篇文章中解释了很多。我想把重点放在最初的问题上,并比较RDF和OWL。
OWL是RDF和RDF- s的超级集(在上面) OWL允许有效地使用RDF和RDF- s OWL有一些扩展的词汇表 类和个人(“实例”) 属性和数据类型(“谓词”) OWL是正确的推理和推断所必需的 OWL有三种方言,精简,描述逻辑和完整
使用OWL是通过了解一些事实来获得更多意义(推理和推断)的必要条件。这种“动态创建”的信息可以进一步用于像SPARQL中那样的一致查询。
一些例子将显示这实际上与OWL一起工作——这些都是从我2015年在西班牙马略卡的TYPO3camp上关于语义网基础知识的演讲中摘录出来的。
规则等价
Spaniard: Person and (inhabitantOf some SpanishCity)
这意味着西班牙人必须是一个人(因此继承了推理部分中的所有财产),并且必须至少居住在一个(或多个)西班牙城市。
属性的含义
<Palma isPartOf Mallorca>
<Mallorca contains Palma>
该示例显示了对属性isPartOf和contains应用inverseOf的结果。
逆 对称的 传递 不相交的 ...
属性的基数
<:hasParent owl:cardinality “2“^^xsd:integer>
这定义了每个事物(在这个场景中很可能是人)都有两个父元素——基数被分配给hasParent属性。
最低 最大 确切的