挑战集是将UNION关键字与以下数据集一起使用,并返回一个祖父列表。
RELDB1拥有2个有用的表:
fatherOf表包含以下数据:
Table fatherof:
('Chuck', 'Paul'),
('Chuck', 'Bonnie'),
('Jerry', 'George'),
('Jerry', 'Mary'),
('Chuck', 'Olivia'),
('Paul', 'Joan'),
('George', 'John'),
('George', 'Carole'),
('Ringo', 'Yoko'),
('Ringo', 'Peter')
表人员有:
Table person:
('Sara', 64, 'f'),
('Nancy', 68, 'f'),
('Mary', 27, 'f'),
('Olivia', 37, 'f'),
('Bonnie', 35, 'f'),
('Carole', 7, 'f'),
('Yoko', 6, 'f'),
('Joan', 9, 'f'),
('Chuck', 67, 'm'),
('Jerry', 65, 'm'),
('Paul', 30, 'm'),
('George', 25, 'm'),
('Ringo', 39, 'm'),
('John', 8, 'm'),
('Peter', 11, 'm')
我尝试了这个查询:
>SELECT ?x ?y ?z
>WHERE {{?x rdf:type ex:Person}
>UNION
>{?x ex:fatherOf ?y . ?y ex:fatherOf ?z}}
>ORDER BY (?x)
输出是Person表中的每个人,然后是Chuck(Paul,Joan)和Jerry(George,John和George和Carole)的儿子和孙子。我试过删除?y?z。该查询返回了人员表的列表!
如何修改查询以便UNION保留,但我只有祖父母。任何指导都将不胜感激。
答案 0 :(得分:0)
你正试图归还每个祖父。在您的问题中,您表明您只返回 父亲祖父母 ...
祖父有孩子生孩子。
Grandfather
Son Daughter
Son Daughter Son Daughter
工会部分发挥作用,因为你将返回以下内容:
??b的父亲
?z
?a ?a
?b ?b ?b ?b
你需要一个关于?b的母亲和父亲的联盟,因为你要结合多个三重模式的结果。我不会向您提供此问题的查询,因为这是课堂作业,但是,这可以帮助您使用所拥有的内容得出答案。