Kri*_*ian 9 rdf semantic-web ontology sparql linked-data
通常在讨论语义数据库和本体的力量时,我听到人们说RDF数据是通用的,因为可以将本体应用于数据以便以不同的方式查看它.
然而,根据我的经验,数据集通常通过谓词与特定本体相关联,即在subject-predicate-object
谓词中根据某些本体定义某些属性或关系.因此,例如,在关于电影的查询中,如果没有数据引用某个人的新"电影本体",那么我不能在针对DBPedia或LinkedMDB的查询中使用它的术语,对吧?
然后,我偶尔会看到一个数据集中的"链接",它实际上将一个特定资源连接到另一个具有自己的本体的数据集中的类似资源.即linkedmdb有owl:sameAs
,但这似乎并不是人们将本体应用于数据的意思.
它是如何工作的,如何在数据集的SPARQL查询中使用关于某些主题的不同本体?
Jos*_*lor 10
然后,我偶尔会看到一个数据集中的"链接",它实际上将一个特定资源连接到另一个具有自己的本体的数据集中的类似资源.即linkedmdb有owl:sameAs,但这似乎并不是人们将本体应用于数据的意思.
它可能不一定是owl:sameAs
,但我认为这可能是你正在寻找的那种东西.使用RDFS或OWL,您可以以这样一种方式对属性和类进行许多不同类型的断言,通过一些推理,您可以在数据上获得新的"视图".例如,假设一个本体定义了一些类和属性:
o1:Film a rdfs:Class .
o1:Actor a rdfs:Class .
o1:hasActor a rdf:Property .
rdfs:domain o1:Film .
rdfs:range o1:Actor .
Run Code Online (Sandbox Code Playgroud)
另一个本体论定义了其他一些:
o2:Movie a rdfs:Class .
o2:Person a rdfs:Class .
o2:Character a rdfs:Class .
o2:hasCharacter a rdf:Property ;
rdfs:domain o2:Movie ;
rdfs:range o2:Character .
o2:playsRole a rdf:Property ;
rdfs:domain o2:Actor ;
rdfs:range o2:Character .
Run Code Online (Sandbox Code Playgroud)
现在,如果你有根据一个本体表达的数据,你可以使用这些公理来获得一些其他方面的信息:
o2:Movie rdfs:subClassOf o1:Film .
o1:Film rdfs:subClassOf o2:Movie .
o1:Actor rdfs:subClassOf o2:Person .
Run Code Online (Sandbox Code Playgroud)
这只是一些信息,但有了RDFS推理器,你突然知道了很多实例.如果你使用比RDFS更具表现力的本体语言,比如OWL,那么你可以使用一些更具表现力的公理,例如,
电影≡电影
演员
⊑ 人有演员⊑hasRole o(逆 playRole)
特别是在最后一个公理中,你会发现任何扮演电影角色的人都是电影中的演员.OWL也会让你做更多的事情,但这就是本体或模式映射的一般概念.要使用这种方法,您需要定义映射公理并将推理应用于它们与原始数据集的并集.
您也可以使用基于规则的推理做更多事情.例如,您可以编写规则,而不是声明上面的第三个OWL公理:
hasRole(?movie,?role)∧playRole(?actor,?role)→hasActor(?movie,?actor)
虽然应用规则只是另一种推理,但它与SPARQL的关系更密切,因为您可以使用SPARQL construct
查询来生成本体方面的数据,因为使用另一个查询数据.例如,你可以这样做:
construct {
?movie :hasActor ?actor
}
where {
?movie :hasRole ?role .
?actor :playsRole ?role .
}
Run Code Online (Sandbox Code Playgroud)
你是对的,虽然数据互操作性的想法有时有点超卖,或者至少听起来比现在更容易和更迷人.一般来说,要使用数据,您需要熟悉它所表达的词汇.如果您想使用基于原始数据的其他词汇表获取一些新数据,您将需要了解这些关系这些词汇表之间相当好,你需要应用某种翻译(通常这将是某种RDF或OWL推理器).
归档时间: |
|
查看次数: |
497 次 |
最近记录: |