我试图用特定的语言过滤一些字符串,但它们是没有语言标签的文字,所以我不能用“lang”或“langMatches”过滤它们。就像所有结果都响应所有语言一样,我该如何过滤它?
我正在使用Java Jena库,我已经尝试使用“正则表达式”功能,但它在回复所有语言时为我提供了所有结果。
以下是显示所有结果和语言的查询
String TitleQuery =
"PREFIX dc: <http://purl.org/dc/elements/1.1/>"+
"SELECT ?title ?language "+
"WHERE { ?s dc:title ?title ."+
"?s dc:language ?language ."+
"}";
--------------------------------------------------------
| title | language |
========================================================
| "Espainiako Erkidego Autonomoak" | "Euskera" |
| "Espainiako Erkidego Autonomoak" | "Portuguese" |
| "Espainiako Erkidego Autonomoak" | "English" |
| "Espainiako Erkidego Autonomoak" | "Català" |
| "Espainiako Erkidego Autonomoak" | "Italiano" |
| "Espainiako Erkidego Autonomoak" | "Français" |
| "Espainiako Erkidego Autonomoak" | "Deutsch" |
| "Espainiako Erkidego Autonomoak" | "Galego" |
| "Espainiako Erkidego Autonomoak" | "Español" |
| "Comunità autonome della Spagna" | "Euskera" |
| "Comunità autonome della Spagna" | "Portuguese" |
| "Comunità autonome della Spagna" | "English" |
| "Comunità autonome della Spagna" | "Català" |
| "Comunità autonome della Spagna" | "Italiano" |
| "Comunità autonome della Spagna" | "Français" |
| "Comunità autonome della Spagna" | "Deutsch" |
| "Comunità autonome della Spagna" | "Galego" |
| "Comunità autonome della Spagna" | "Español" |
| "Comunitats Autònomes d'Espanya" | "Euskera" |
[...]
这是我尝试过的正则表达式过滤器:FILTER regex(str(?language),\"Español\")
这些是结果,每个结果都与每种语言相匹配:
-----------------------------------------------------
| title | language |
=====================================================
| "Espainiako Erkidego Autonomoak" | "Español" |
| "Comunità autonome della Spagna" | "Español" |
| "Comunitats Autònomes d'Espanya" | "Español" |
| "Comunidades autónomas de España" | "Español" |
| "Comunidades Autónomas da Espanha" | "Español" |
| "Communautés Autonomes d'Espagne" | "Español" |
| "Autonome Gemeinschaften von Spanien" | "Español" |
| "Autonomous Communities of Spain" | "Español" |
-----------------------------------------------------
问题是标题和语言都是为资源定义的。所以单个资源,比如:r1
,有一些标题t1, t2, ..., tn
和一些语言l1, l2, ..., ln
。但是你需要一些你没有的标题和语言之间的关系。
数据集的当前形式没有意义。每个对(标题,语言)都需要一个空白节点,如r1 :hasTitle [:value :t1; :language :l1]
,或者标题必须使用语言标签。否则你就输了。问题不是您的查询,而是数据集。