我有两个类,A和B,从DBpedia中。 我该如何计算每个类的距离(边数)的通用超C,我怎么能找到这个共同的超?
Answer 1:
你可以这样做,但两件事情应该注意的第一:
- 两个班可以有很多超的共通之处,不一定只有一个。 这意味着,有可能不是唯一的最专业的通用超类。
- 如果某些类C为A和B的超类,那么C的每一个超类也是 A和B的一个超类
一类d可能是通过多条路径,这可能会导致一些困难,如果你想计算长度C的超类。 例如,
Computer Hardware Monitors Flatscreen Monitors Dell Flatscreen Monitors * Dell Hardware Dell Flatscreen Monitors *
在此层次结构中,戴尔纯平显示器是由长度为2(DFM→DH→CH)的路径的计算机硬件的子类,并通过长度为3(DFM→FM→M→CH)的路径。 这很好,但如果你从计算DFM的长度CH的另一个小类中,应使用哪个那些?
- 可能没有数据中的任何普通超。 这也是完全合法的情况。 现在, 在OWL中,每个类是一个子类
owl:Thing
,但这不是一般保持RDF,你可能甚至不会从DBpedia中这一结果,因为有不附加任何OWL推理。
假设你可以工作,你需要解决这些问题的细节,这是不是太硬。 这是最简单的,在我看来,建立逐步此查询一步。 首先,使用这样的查询,你可以得到一个类的父类,和路径的每一个超类的长度。 这并不假定有从子类到超类的唯一路径。 如果有多个路径,我认为报告将是不同的路径的总和长度。 我不知道你怎么能解决这个问题。
select ?sub ?super (count(?mid) as ?length) where {
values ?sub { dbpedia-owl:Person }
?sub rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf+ ?super .
}
group by ?sub ?super
SPARQL结果
sub super length
http://dbpedia.org/ontology/Person http://dbpedia.org/ontology/Agent 1
http://dbpedia.org/ontology/Person http://www.w3.org/2002/07/owl#Thing 2
现在唯一的办法就是使用这种方法两个子类,然后再加入基于它们所共有的超结果,使用这样的查询:
select *
{
values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) }
{ select ?a ?super (count(?mid) as ?aLength) {
?a rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf+ ?super .
}
group by ?a ?super
}
{ select ?b ?super (count(?mid) as ?bLength) {
?b rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf+ ?super .
}
group by ?b ?super
}
}
SPARQL结果
该查询还发现路径长度为所有常见的超类,不只是最特殊的,它仍然不增加从长度?a
到?super
和长度?b
来?super
得到充分的路径长度。 这只是有点算术虽然。 您可以订购这些结果由长度,然后限制只是一个结果,这样你得到的最短的一个。 正如我指出的那样,有可能不是唯一的最具体的共同的子类,但用最短长度的结果将是最具体的共同的一个子类。
select ?a ?b ?super (?aLength + ?bLength as ?length)
{
values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) }
{ select ?a ?super (count(?mid) as ?aLength) {
?a rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf+ ?super .
}
group by ?a ?super
}
{ select ?b ?super (count(?mid) as ?bLength) {
?b rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf+ ?super .
}
group by ?b ?super
}
}
order by ?length
limit 1
SPARQL结果
a b super length
Person SportsTeam Agent 3
文章来源: finding common superclass and length of path in class hierarchies