sparql中带限制的嵌套查询

sparql中带限制的嵌套查询,sparql,semantic-web,dbpedia,Sparql,Semantic Web,Dbpedia,我目前正在尝试为我必须展示的用例创建一个dbpedia数据示例。 我的主要目标是要求每个欧洲艺术家有五幅作品(一开始,我只想每个国家展示两位艺术家) 没有限制的查询如下所示 PREFIX dbpedia-owl:<http://dbpedia.org/ontology/> PREFIX category: <http://dbpedia.org/resource/Category:> PREFIX dcterms:<http://purl.o

我目前正在尝试为我必须展示的用例创建一个dbpedia数据示例。 我的主要目标是要求每个欧洲艺术家有五幅作品(一开始,我只想每个国家展示两位艺术家)

没有限制的查询如下所示

    PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
    PREFIX category: <http://dbpedia.org/resource/Category:>
    PREFIX dcterms:<http://purl.org/dc/terms/>
    PREFIX prop:<http://dbpedia.org/property/>
    PREFIX geonames:<http://sws.geonames.org/>
    PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
    PREFIX dbpedia:<http://dbpedia.org/resource/>
    PREFIX geo-ont:<http://www.geonames.org/ontology#>
    PREFIX ourvocab:<http://example.org/>
    prefix foaf:<http://xmlns.com/foaf/0.1/>

    SELECT DISTINCT ?painting_name ?artist_name ?european_country ?description ?artist_birthday_year
    WHERE {

    ?european_country dcterms:subject category:Countries_in_Europe.
    ?european_country rdf:type dbpedia-owl:Place.

    ?painting prop:artist ?artist.
    ?painting rdfs:label ?painting_name.
    ?painting prop:type dbpedia:Oil_painting.
    ?painting rdfs:comment ?description.

    ?artist foaf:name ?artist_name.
    ?artist rdf:type dbpedia-owl:Artist.
    ?artist prop:placeOfBirth ?european_country.
    ?artist dbpedia-owl:birthDate ?artist_birthday.


     FILTER (lang(?painting_name) = "" || lang(?painting_name) = "en")
     FILTER (lang(?description) = "" || lang(?description) = "en")
     BIND(year(?artist_birthday) AS ?artist_birthday_year)

    }
前缀dbpedia owl: 前缀类别: 前缀dcterms: 前缀道具: 前缀地理名称: 前缀rdfs: 前缀dbpedia: 前缀geo ont: 前缀b: 前缀foaf: 选择不同的?绘画名称?艺术家名称?欧洲国家?描述?艺术家生日?年份 在哪里{ ?欧洲国家术语:主题类别:欧洲国家。 ?欧洲国家rdf:类型dbpedia owl:地点。 ?绘画道具:艺术家?艺术家。 ?涂装RDF:标签?涂装名称。 ?油漆道具:dbpedia型:油画。 ?绘制RDF:注释?说明。 ?艺术家姓名?艺术家姓名。 ?艺术家rdf:类型dbpedia owl:艺术家。 ?艺术家道具:出生地?欧洲国家。 艺术家dbpedia猫头鹰:生日?艺术家生日。 过滤器(lang(?painting_name)=“lang(?painting_name)=“en”) 过滤器(lang(?description)=“lang(?description)=“en”) 绑定(年(?艺术家生日)为艺术家生日(年) } 您可以在此处运行查询: 现在,我被卡住了,因为我不知道如何在我的用例中应用嵌套的限制。
在此之前非常感谢。

这类似于2011年answers.semanticweb.com上的一个问题。普遍的共识似乎是,“这很难,如果你能提供元素的顺序,你可以说,‘给我,例如,每个国家的两位最老的艺术家,以及他们最大的五幅画,你可以让它工作起来。’”(最古老和最大的谓词在这里并不特别重要,只要有一定的顺序。)另外,您不应该将语言标记与
=
进行比较。它们应该是
langMatches(lang(?variable),“en”)
。但是,如中所述,
lang(?.var)=“
可能是检查空语言标记的正确方法。非常感谢Joshua。因此,没有直接的方法来解决这个问题(可能是1.1中的一些魔法?)在我看来,讨论非常有帮助,我采用了相同的方法,但dbpedia似乎不喜欢这样,因为查询时间增加了!我还将研究一些替代方案。你最终找到了解决方案吗?你好,Joshua,我认为sparql目前无法处理此类请求,应该加载到clie中我不确定这是否完全正确,但我现在就是这样处理的。