use*_*262 188 rdf semantic-web owl
我试图掌握语义Web的概念.我发现很难理解RDF和OWL之间究竟有什么区别.OWL是RDF的扩展还是这两种技术完全不同?
Chr*_*dge 263
语义网分层次存在.这是我认为你感兴趣的那些的快速总结.
更新:请注意,RDFS用于定义数据的结构,而不是 OWL.OWL描述了语义关系,正常的编程,例如C结构,没有被讨论,并且更接近AI研究和集合论.
三元组和URI
Subject - Predicate - Object
Run Code Online (Sandbox Code Playgroud)
这些描述了一个事实.通常,URI用于主题和谓词.该对象是另一个URI或文字,如数字或字符串.文字可以有一个类型(也是一个URI),它们也可以有一种语言.是的,这意味着三元组最多可以有5位数据!
例如,三人可能会描述查尔斯是哈里父亲的事实.
<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .
Run Code Online (Sandbox Code Playgroud)
三元组是数据库规范化,采用逻辑极值.它们的优点是您可以将多个源中的三元组加载到一个数据库中而无需重新配置.
RDF和RDFS
下一层是RDF - 资源描述框架.RDF为三元组定义了一些额外的结构.RDF定义的最重要的事情是一个名为"rdf:type"的谓词.这用于表示事物属于某些类型.每个人都使用rdf:type,这非常有用.
RDFS(RDF Schema)定义了一些表示主题,对象,谓词等概念的类.这意味着您可以开始创建关于事物类和关系类型的语句.在最简单的层面上,你可以说出像http://familyontology.net/1.0#hasFather这样的事情是一个人与一个人之间的关系.它还允许您在人类可读文本中描述关系或类的含义.这是一个架构.它告诉您各种类和关系的合法使用.它还用于指示类或属性是更一般类型的子类型.例如,"HumanParent"是"Person"的子类."爱"是"知识"的子类.
RDF序列化
RDF可以以多种文件格式导出.最常见的是RDF + XML,但这有一些缺点.
N3是一种非XML格式,更易于阅读,并且有一些更严格的子集(Turtle和N-Triples).
重要的是要知道RDF是一种处理三元组的方式,而不是文件格式.
XSD
XSD是一个命名空间,主要用于描述属性类型,如日期,整数等.它通常在RDF数据中看到,用于识别文字的特定类型.它也用于XML模式,这是一个略有不同的鱼.
猫头鹰
OWL为模式添加了语义.它允许您指定更多有关属性和类的信息.它也以三元组表示.例如,它可以指示"如果A已经结婚到B"那么这意味着"B isMarriedTo A".或者,如果" C isAncestorOf D "和" D isAncestorOf E "那么" C isAncestorOf E ".owl添加的另一个有用的东西是能够说两件事情是相同的,这对于连接不同模式中表达的数据非常有帮助.你可以说在一个模式中"sired"的关系是owl:sameAs在其他模式中"生长".你也可以用它来说两件事情是一样的,比如维基百科上的"Elvis Presley"和BBC上的一样.这非常令人兴奋,因为这意味着您可以开始加入来自多个站点的数据(这是"关联数据").
您还可以使用OWL来推断隐含事实,例如" C isAncestorOf E ".
ale*_*xkr 78
简而言之:
正如之前的海报所写,RDF是一个告诉你如何定义三元组的规范.
问题是RDF允许您定义所有内容,因此您可以编写如下声明:
| subject | predicate | object |
|---------|-----------|--------|
| Alex | Eats | Apples |
| Apples | Eats | Apples |
| Apples | Apples | Apples |
Run Code Online (Sandbox Code Playgroud)
这些三元组形成有效的RDF文档.
但是,从语义上讲,您理解这些语句是错误的,并且RDF无法帮助您验证您所编写的内容.
这不是一个有效的本体论.
OWL规范准确定义了您可以使用RDF编写的内容,以便拥有有效的本体.
本体可以具有多个属性.
这就是为什么OWL(ver 1)定义了几个版本,如OWL DL,OWL Lite,OWL Full.
loo*_*sam 31
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 .
Run Code Online (Sandbox Code Playgroud)
RDFS:有些情况不容易单独由RDF建模,有时候有趣的是表示更复杂的关系,例如子类(类型的类型).RDFS提供了特殊装置以表示这样的情况下,随着样构建rdfs:subClassOf,rdfs:range或rdfs:domain.理想情况下,推理者可以理解RDFS语义并根据关系扩展三元组的数量:例如,如果你有三元组John a Man,Man rdfs:subClassOf Human那么你应该生成三元组John a Human.请注意,单独使用RDF无法做到这一点.使用SPARQL查询RDFS数据.在Turtle中序列化的RDFS示例:
@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 .
Run Code Online (Sandbox Code Playgroud)
OWL:最高水平的表现力.类之间的关系可以基于描述逻辑(数学理论)正式建模.OWL在很大程度上依赖于推理器,可以表达复杂的结构,例如链式属性或类之间的限制.OWL用于在RDF数据集的顶部构建本体或模式.由于OWL可以序列化为RDF/XML,理论上可以通过SPARQL查询它,但使用DL查询(通常是标准的OWL类表达式)查询OWL本体更加直观.在Turtle中序列化的OWL构造的示例.
@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 .
Run Code Online (Sandbox Code Playgroud)
小智 14
首先,如前所述,owl可以在RDF中序列化.
其次,OWL通过提供使用正式可计算的一阶描述逻辑来定义三元组件的装置,为RDF添加本体能力(RDF本身仅为正式的已知表示提供极其有限的能力).这就是当他们谈论"语义丰富"时海报的意思.
第三,重要的是要意识到在OWL-Full(对于OWL 1)中,rdfs:class和owl:class是等价的,在OWL-DL中,owl:class是rdfs:class的子类.实际上,这意味着您可以使用OWL本体作为RDF的模式(它不正式要求模式).
我希望这有助于进一步澄清.
RDF是一种定义三重"主体","谓词","价值"的方法.例如,如果我想说,
"我叫皮埃尔"
我会写的
<mail:me@where.com> <foaf:name> "Pierre"
Run Code Online (Sandbox Code Playgroud)
看到了<foaf:name>?它是FOAF本体的一部分.本体是描述属性的正式方式,给定主题的类和OWL是定义本体的(RDF)方式.
您使用C++,Java等...来定义类,子类,字段等...
class Person
{
String email_as_id;
String name;
}
Run Code Online (Sandbox Code Playgroud)
RDF使用OWL来定义这些类型的语句.
另一个问这类问题的地方:http://www.semanticoverflow.com/
当您使用术语RDF时,您必须区分两件事:
您可以将RDF称为概念:
一种使用三元组集描述事物/逻辑/任何事物的方法.
例:
"安娜有苹果." "苹果很健康."
上面你有两个描述两个资源"安娜"和"苹果"的三元组.RDF(资源描述框架)的概念是,您可以使用仅3个单词(术语)的集合来描述资源(任何内容).在这个级别,你不关心你如何存储信息,你是否有一个3字的字符串,或墙上的绘画,或3列的表等.
在这个概念层面,唯一重要的是你可以用三重语句表示你想要的任何东西.
您可以将RDF称为词汇表
词汇表只是存储在文件或某个地方的术语定义的集合.这些定义的术语的目的通常是在其他描述中重复使用,以便人们可以更容易地以标准方式描述数据(资源).
在网络上,你可以找到一些标准的词汇表,如:
RDF(https://www.w3.org/1999/02/22-rdf-syntax-ns)
RDFS(https://www.w3.org/2000/01/rdf-schema#)
OWL(https://www.w3.org/2002/07/owl)
RDF vocubalary定义了一些术语,可帮助您(尽可能在最基本的级别)描述类的个体/实例.示例:rdf:type,rdf:Property.
使用rdf:type,您可以描述某些资源是类的实例:
<http://foo.com/anna> rdf:type <http://foo.com/teacher>
Run Code Online (Sandbox Code Playgroud)
因此,RDF词汇表的术语是针对类实例的基本描述和一些其他描述(如三重语句定义,或谓词定义......一般是RDF概念所适用的事物).
RDFS词汇表具有术语定义,可帮助您描述它们之间的类和关系.RDFS词汇表并不关心类似RDF词汇表的类(个体)实例.示例:rdfs:subClassOf属性,可用于描述类A是类B的子类.
RDF和RDFS词汇表彼此依赖.RDF使用RDFS定义它的术语,RDFS使用RDF来定义它自己的术语.
RDF/RDFS词汇表提供了可用于创建资源的基本描述的术语.如果您想要更复杂和准确的描述,您必须使用OWL词汇表.
OWL词汇表附带了一组针对更详细描述的新术语.这些术语使用RDF/RDFS词汇表中的术语定义.
owl:ObjectProperty a rdfs:Class ;
rdfs:label "ObjectProperty" ;
rdfs:comment "The class of object properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:DatatypeProperty a rdfs:Class ;
rdfs:label "DatatypeProperty" ;
rdfs:comment "The class of data properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:TransitiveProperty a rdfs:Class ;
rdfs:label "TransitiveProperty" ;
rdfs:comment "The class of transitive properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf owl:ObjectProperty .
Run Code Online (Sandbox Code Playgroud)
正如您在上面所看到的,OWL词汇表通过创建新类型的不太抽象的属性扩展了rdf:Property的概念,并且可以提供更准确的资源描述.
结论:
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)
Run Code Online (Sandbox Code Playgroud)
它允许您定义跨数据库的等价:
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
Run Code Online (Sandbox Code Playgroud)
它允许您限制属性值:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
Run Code Online (Sandbox Code Playgroud)
实际上,OWL提供了许多新的,复杂的词汇表,可用于数据建模和推理,这些都可以获得自己的教训!
另一个主要区别是,不像RDFS,OWL不仅告诉你如何可以使用一定的词汇量,它实际上告诉你,你怎么能不使用它.相比之下,RDFS为您提供了一个世界上你可以添加几乎任何你想要的三倍的世界.
例如,在RDFS中,您感觉到的任何内容都可以是rdfs:Class.你可能会决定说Beagle是一个rdfs:Class,然后说Fido是Beagle的一个例子:
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
Run Code Online (Sandbox Code Playgroud)
接下来,您可能会决定想要谈论小猎犬的事情,或许您想说Beagle是英格兰养殖的狗的一个例子:
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
Run Code Online (Sandbox Code Playgroud)
这个例子中有趣的是Example:Beagle它既被用作类又被用作实例.Beagle是Fido所属的一个类,但Beagle本身就是另一个类的成员:在英格兰培育的东西.
在RDFS中,所有这些都是完全合法的,因为RDFS并不真正限制您可以和不能插入哪些语句.相比之下,在OWL中,或者至少在一些OWL中,上述陈述实际上是不合法的:你根本不允许说某事既可以是阶级也可以是实例.
这是RDFS和OWL之间的第二个主要区别.RDFS实现了一个免费的,任何充满狂野西部,Speak-Easies和Salvador Dali的世界.OWL的世界强加了一个更加严格的结构.
假设您花了最后一小时构建了一个描述您的无线电制造业务的本体.在午餐期间,您的任务是为您的钟表制造业务构建本体.今天下午,喝完咖啡后,你的老板现在告诉你,你必须为你的高利润时钟收音机业务建立一个本体论.有没有办法轻松重复上午的工作?
OWL非常非常容易地做这样的事情.Owl:Import是你将在时钟收音机情况下使用什么,但是OWL还为您提供了丰富多样的注解如owl:versionInfo,owl:backwardsCompatibleWith和owl:deprecatedProperty,它可以很容易地使用链路数据模型连成一个相互连贯的整体.
与RDFS不同,OWL肯定能满足您的所有元元数据建模需求.
OWL为您提供了更大的词汇量,这使您可以轻松地说出您对数据模型的任何想法.它甚至允许您根据当今计算机的计算现实定制您所说的内容,并针对特定应用程序进行优化(例如,针对搜索查询).此外,OWL允许您使用标准注释框架轻松表达不同本体之间的关系.
与RDFS相比,所有这些都是优势,并且通常值得花费额外的精力来熟悉它们.
来源:RDFS与OWL
我试图掌握语义Web的概念.我发现很难理解RDF和OWL之间究竟有什么区别.OWL是RDF的扩展还是这两种技术完全不同?
简而言之,是的,你可以说OWL是RDF的扩展.
更详细地说,使用RDF,您可以通过定义主题 - 谓词 - 对象三元组来描述有向图.主题和对象是节点,谓词是边缘,或者换句话说,谓词描述主体和对象之间的关系.例如:Tolkien :wrote :LordOfTheRings或:LordOfTheRings :author :Tolkien等..链接数据系统使用这些三元组来描述知识图,以及它们提供的方式来存储它们,对它们进行查询.现在这些都是庞大的系统,但您可以通过较小的项目使用RDF.每个应用程序都有一个特定于域的语言(或通过DDD术语无处不在的语言).您可以在本体/词汇表中描述该语言,因此您可以使用图形描述应用程序的域模型,您可以将其显示给业务人员,根据模型讨论业务决策,并在顶部构建应用程序那个.您可以将应用程序的词汇绑定到它返回的数据和搜索引擎已知的词汇表,例如微数据(例如,您可以使用带有RDFA的HTML来执行此操作),因此搜索引擎可以轻松找到您的应用程序,因为关于它做什么的知识将是机器可处理的.这就是语义网的工作方式.(至少这是我的想象.)
现在要描述面向对象的应用程序,您需要类型,类,属性,实例等......使用RDF,您只能描述对象.RDFS(RDF模式)可以帮助您描述类,继承(基于ofc的对象),但它太宽泛了.要定义约束(例如每个中国家庭一个孩子),您需要另一个词汇.OWL(网络本体语言)完成这项工作.OWL是一个可用于描述Web应用程序的本体.它集成了XSD simpleTypes.以更加具体的方式描述您的Web应用程序的顺序也是
如此RDF -> RDFS -> OWL -> MyWebApp.
一张图说一千个字!下面的这张图应该加强了Christopher Gutteridge 在这个答案中所说的语义网是一个“分层架构”。
资料来源:https : //www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html