|
@@ -88,12 +88,15 @@ PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
|
88
|
88
|
}
|
89
|
89
|
else
|
90
|
90
|
{
|
91
|
|
- dbo.Fields.Add(new ArticlesFieldsDbo
|
|
91
|
+ if (data != null)
|
92
|
92
|
{
|
93
|
|
- Property = variable,
|
94
|
|
- Type = "text/plain",
|
95
|
|
- Value = data
|
96
|
|
- });
|
|
93
|
+ dbo.Fields.Add(new ArticlesFieldsDbo
|
|
94
|
+ {
|
|
95
|
+ Property = variable,
|
|
96
|
+ Type = "text/plain",
|
|
97
|
+ Value = data
|
|
98
|
+ });
|
|
99
|
+ }
|
97
|
100
|
}
|
98
|
101
|
}
|
99
|
102
|
return dbo;
|
|
@@ -102,7 +105,6 @@ PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
|
102
|
105
|
public LuResult<LuPaginatedDbo<ArticlesDbo>> GetMultiple(LuPaginatedRequestDbo request)
|
103
|
106
|
{
|
104
|
107
|
var type = ArticlesDataAccess.GetFilterType(request.Filter);
|
105
|
|
- string query = null;
|
106
|
108
|
string querySelect = null;
|
107
|
109
|
string queryWhereId = null;
|
108
|
110
|
string queryWhereVars = null;
|
|
@@ -122,24 +124,56 @@ BIND ((?abstract) AS ?search)";
|
122
|
124
|
queryWhereId = @"?id rdf:type dbo:Person ;
|
123
|
125
|
?type dbr:World_War_II .";
|
124
|
126
|
queryWhereVars = @"
|
|
127
|
+?id dbp:name ?name .
|
125
|
128
|
OPTIONAL { ?id dbo:abstract ?abstract FILTER(lang(?abstract) = 'en') }
|
126
|
129
|
OPTIONAL { ?id foaf:depiction ?pictureUrl }
|
127
|
130
|
OPTIONAL { ?id dbpedia-owl:depictionDescription ?pictureDesc }
|
128
|
|
-OPTIONAL { ?id dbp:name ?name . FILTER (lang(?name) = 'en') }
|
129
|
131
|
OPTIONAL { ?id dbp:birthDate ?birthDate }
|
130
|
132
|
OPTIONAL { ?id dbp:deathDate ?deathDate }
|
131
|
|
-BIND (CONCAT(?abstract, ' ', ?id) AS ?search)";
|
|
133
|
+FILTER (lang(?name) = 'en')
|
|
134
|
+BIND (CONCAT(?name) AS ?search)";
|
|
135
|
+ }
|
|
136
|
+ else if (type == "locations")
|
|
137
|
+ {
|
|
138
|
+ querySelect = "?id ?name ?abstract ?pictureUrl ?pictureDesc (str(MIN(?date) as ?date) as ?date) (group_concat(distinct ?combatant;separator=', ') as ?combatant) (group_concat(distinct ?commanderName;separator=', ') as ?commander)";
|
|
139
|
+ queryWhereId = @"?ww foaf:isPrimaryTopicOf wikipedia-en:World_War_II ;
|
|
140
|
+dbo:place ?id.";
|
|
141
|
+ queryWhereVars = @"
|
|
142
|
+?id foaf:name ?name .
|
|
143
|
+OPTIONAL { ?id dbo:abstract ?abstract FILTER(lang(?abstract) = 'en') }
|
|
144
|
+OPTIONAL { ?id foaf:depiction ?pictureUrl }
|
|
145
|
+OPTIONAL { ?id dbpedia-owl:depictionDescription ?pictureDesc }
|
|
146
|
+OPTIONAL { ?id dbo:date ?date }
|
|
147
|
+OPTIONAL { ?id dbp:combatant ?combatant }
|
|
148
|
+OPTIONAL { ?id dbp:commander ?commanderName }
|
|
149
|
+FILTER (lang(?name) = 'en')
|
|
150
|
+BIND (CONCAT(?name) AS ?search)";
|
|
151
|
+ }
|
|
152
|
+ else if (type == "countries")
|
|
153
|
+ {
|
|
154
|
+ querySelect = "?id (MIN(?name) as ?name) ?abstract ?pictureUrl ?pictureDesc ";
|
|
155
|
+ queryWhereId = @"?id a <http://dbpedia.org/ontology/Country> ;
|
|
156
|
+?type dbr:World_War_II .";
|
|
157
|
+ queryWhereVars = @"
|
|
158
|
+?id foaf:name ?name .
|
|
159
|
+OPTIONAL { ?id dbo:abstract ?abstract FILTER(lang(?abstract) = 'en') }
|
|
160
|
+OPTIONAL { ?id foaf:depiction ?pictureUrl }
|
|
161
|
+OPTIONAL { ?id dbpedia-owl:depictionDescription ?pictureDesc }
|
|
162
|
+FILTER (lang(?name) = 'en')
|
|
163
|
+BIND (CONCAT(?name) AS ?search)";
|
132
|
164
|
}
|
133
|
165
|
|
134
|
166
|
var filter = $"FILTER regex(?search, '{request.Filter.Query}', 'i')";
|
135
|
167
|
|
136
|
168
|
var count = Query(string.Format(@"{0}
|
137
|
169
|
SELECT (COUNT(?id) AS ?count) WHERE {{
|
138
|
|
-{1}
|
|
170
|
+SELECT DISTINCT {1} WHERE {{
|
139
|
171
|
{2}
|
140
|
172
|
{3}
|
|
173
|
+{4}
|
|
174
|
+}}
|
141
|
175
|
}}
|
142
|
|
-", Prefixes, queryWhereId, queryWhereVars, filter));
|
|
176
|
+", Prefixes, querySelect, queryWhereId, queryWhereVars, filter));
|
143
|
177
|
if (!count)
|
144
|
178
|
{
|
145
|
179
|
return count.To<LuPaginatedDbo<ArticlesDbo>>();
|