【问题标题】:SPARQL: extract distinct values from dbpediaSPARQL:从 dbpedia 中提取不同的值
【发布时间】:2016-11-10 00:24:09
【问题描述】:

我想从 DBPedia 中提取 5 个电影(或电影)个人的图表。

我的查询是:

ParameterizedSparqlString qs = new ParameterizedSparqlString("" +
"构造{?s ?p ?o}"+ "哪里有http://dbpedia.org/ontology/Film 。"+ "?s ?p ?o"} OFFSET 0 LIMIT 5" );

我得到以下结果:

1-http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Film.

2-http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://www.w3.org/2002/07/owl#Thing.

3-http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://www.wikidata.org/entity/Q386724.

4-http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Wikidata:Q11424.

5-http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haythamhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://dbpedia.org/ontology/Work.

问题: 同一部电影作为所有类返回 5 次:Film、Thing、Q386724、WIKIdata:Q11424 和 Work 是等价类(或存在子类关系)。

我的问题:

我想三连回来一次

 <http://dbpedia.org/resource/1001_Inventions_and_the_World_of_Ibn_Al-Haytham>    
 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> 
 <http://dbpedia.org/ontology/Film> .

并过滤掉其他 4 个三元组。

请问怎么样?

提前谢谢你

【问题讨论】:

  • 您要求?s ?p ?o,因此您将在结果中获得?s 是其成员的其他类,无论它们是否等效。
  • 谢谢。但是我怎样才能只返回与电影类相关的三元组?

标签: sparql dbpedia


【解决方案1】:

我认为以下内容应该适合您:

CONSTRUCT {?s ?p ?o}
WHERE {
  {  SELECT DISTINCT ?s
     WHERE {
        ?s a <http://dbpedia.org/ontology/Film> .
     } LIMIT 5
  }
  ?s ?p ?o .
}

【讨论】:

    【解决方案2】:

    我想你想要这个查询

    construct {?s a <http://dbpedia.org/ontology/Film> .}
    where { ?s a <http://dbpedia.org/ontology/Film>. }
    limit 5
    

    【讨论】:

    • 谢谢。此查询将返回 5 个不同的电影。这非常好,但我需要每个人的另一个三元组,比如姓名、持续时间等。
    • @user2869180 with name
    • @WilliamKinaan 这些是 SELECT 查询,而不是 CONSTRUCT。您需要一个 CONSTRUCT 查询中的子 SELECT,请参阅下面 scotthenninger 的答案
    • 虽然此查询可能是也可能不是 OP 想要的,但请注意,对于具有足够简单 WHERE 部分的 CONSTRUCT 查询,您只需执行 CONSTRUCT WHERE。也就是说,这个查询只是construct where { ?s a dbo:Film } limit 5
    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多