在讨论语义数据库和本体的强大功能时,我经常听到人们说RDF数据是通用的,因为本体可以应用于数据,以不同的方式来看待它。
然而,在我的经验中,数据集通常通过谓词(即在subject-predicate-object中)与特定的本体论相关联,其中谓词根据某种本体论定义某些属性或关系。因此,例如,在有关电影的查询中,如果没有任何数据引用某人新的“电影本体论”,那么我就不能仅仅在针对DBPedia或LinkedMDB的查询中使用它的术语,对吗?
然后,我偶尔会在一个数据集中看到“链接”,该数据集实际上将一个特定资源连接到另一个具有自己本体的数据集中的类似资源。也就是说,linkedmdb有owl:sameAs,但这似乎不是人们将本体应用于数据的意思。
它是如何工作的,我如何使用关于数据集中SPARQL查询中某些主题的不同本体?
发布于 2014-01-23 20:40:46
然后,我偶尔会在一个数据集中看到“链接”,该数据集实际上将一个特定资源连接到另一个具有自己本体的数据集中的类似资源。也就是说,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 .另一个本体定义了其他一些本体:
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 .现在,如果您有根据一个本体表示的数据,您可以使用一些类似的公理来获取其他方面的一些信息:
o2:Movie rdfs:subClassOf o1:Film .
o1:Film rdfs:subClassOf o2:Movie .
o1:Actor rdfs:subClassOf o2:Person .这只是一点点信息,但是对于RDFS推理器,您突然就知道了很多实例。如果您使用的本体语言比RDFS更有表现力,比如OWL,那么您可以使用一些更有表现力的公理,例如,
电影≡电影 演员⊑人 hasActor⊑hasRole o (反向 playsRole)
有了最后一条公理,你就会发现,任何在电影中扮演角色的人都是电影中的演员。OWL也会让您做更多的事情,但这是本体或模式映射的基本概念。要使用这种方法,您需要定义映射公理,并将推理器应用到它们和原始数据集的联合中。
你也可以用基于规则的推理来做更多的事情。例如,与其在上面声明第三个OWL公理,不如编写一个规则:
hasRole(电影,角色)∧playsRole(演员,角色)→hasActor(?电影,?演员)
虽然应用规则只是另一种推理,但它与SPARQL有着更紧密的联系,因为您可以使用SPARQL construct查询生成本体方面的数据,这是使用另一种查询对数据进行查询的结果。例如,您可以这样做:
construct {
?movie :hasActor ?actor
}
where {
?movie :hasRole ?role .
?actor :playsRole ?role .
}不过,您是对的,数据互操作性的想法有时有些过分,或者至少让它听起来更容易、更有魅力。一般来说,要使用数据,您需要熟悉它所表示的词汇表。如果您想使用基于原始数据的另一个词汇表获得一些新数据,则需要很好地理解这些词汇表之间的关系,并且需要应用某种类型的转换(通常这将是某种RDF或OWL推理器)。
https://stackoverflow.com/questions/21317794
复制相似问题