• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • libnepomukcore
  • query
term.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Nepomuk KDE project.
3  Copyright (C) 2007-2010 Sebastian Trueg <trueg@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License version 2 as published by the Free Software Foundation.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18  */
19 
20 #include "term.h"
21 #include "term_p.h"
22 #include "literalterm.h"
23 #include "resourceterm.h"
24 #include "andterm.h"
25 #include "orterm.h"
26 #include "negationterm.h"
27 #include "optionalterm.h"
28 #include "comparisonterm.h"
29 #include "resourcetypeterm.h"
30 #include "literalterm_p.h"
31 #include "resourceterm_p.h"
32 #include "andterm_p.h"
33 #include "orterm_p.h"
34 #include "negationterm_p.h"
35 #include "optionalterm_p.h"
36 #include "comparisonterm_p.h"
37 #include "resourcetypeterm_p.h"
38 #include "queryserializer.h"
39 
40 #include <QtCore/QStringList>
41 #include <QtCore/QList>
42 #include <QtCore/QDebug>
43 
44 #include "property.h"
45 #include "variant.h"
46 
47 
48 Nepomuk2::Query::Term::Term()
49  : d_ptr( new TermPrivate() )
50 {
51 }
52 
53 
54 Nepomuk2::Query::Term::Term( const Term& other )
55  : d_ptr( other.d_ptr )
56 {
57 }
58 
59 
60 Nepomuk2::Query::Term::Term( TermPrivate* d )
61  : d_ptr( d )
62 {
63 }
64 
65 
66 Nepomuk2::Query::Term::~Term()
67 {
68 }
69 
70 
71 Nepomuk2::Query::Term& Nepomuk2::Query::Term::operator=( const Term& other )
72 {
73  d_ptr = other.d_ptr;
74  return *this;
75 }
76 
77 
78 bool Nepomuk2::Query::Term::isValid() const
79 {
80  return d_ptr->isValid();
81 }
82 
83 
84 Nepomuk2::Query::Term::Type Nepomuk2::Query::Term::type() const
85 {
86  return d_ptr->m_type;
87 }
88 
89 void Nepomuk2::Query::Term::setUserData( const QString& key, const QVariant& value )
90 {
91  d_ptr->m_userdata.insert( key, value );
92 }
93 
94 QVariant Nepomuk2::Query::Term::userData( const QString& key ) const
95 {
96  return d_ptr->m_userdata.value( key );
97 }
98 
99 Nepomuk2::Query::Term Nepomuk2::Query::Term::optimized() const
100 {
101  switch( type() ) {
102  case Nepomuk2::Query::Term::And:
103  case Nepomuk2::Query::Term::Or: {
104  QList<Nepomuk2::Query::Term> subTerms = static_cast<const Nepomuk2::Query::GroupTerm&>( *this ).subTerms();
105  QList<Nepomuk2::Query::Term> newSubTerms;
106  QList<Nepomuk2::Query::Term>::const_iterator end( subTerms.constEnd() );
107  for ( QList<Nepomuk2::Query::Term>::const_iterator it = subTerms.constBegin();
108  it != end; ++it ) {
109  const Nepomuk2::Query::Term& t = *it;
110  Nepomuk2::Query::Term ot = t.optimized();
111  QList<Nepomuk2::Query::Term> terms;
112  if ( ot.type() == type() ) {
113  terms = static_cast<const Nepomuk2::Query::GroupTerm&>( ot ).subTerms();
114  }
115  else if( ot.isValid() ) {
116  terms += ot;
117  }
118  Q_FOREACH( const Nepomuk2::Query::Term& t, terms ) {
119  if( !newSubTerms.contains( t ) )
120  newSubTerms += t;
121  }
122  }
123  if ( newSubTerms.count() == 0 )
124  return Nepomuk2::Query::Term();
125  else if ( newSubTerms.count() == 1 )
126  return *newSubTerms.begin();
127  else if ( isAndTerm() )
128  return Nepomuk2::Query::AndTerm( newSubTerms );
129  else
130  return Nepomuk2::Query::OrTerm( newSubTerms );
131  }
132 
133  case Nepomuk2::Query::Term::Negation: {
134  Nepomuk2::Query::NegationTerm nt = toNegationTerm();
135  // a negation in a negation
136  if( nt.subTerm().isNegationTerm() )
137  return nt.subTerm().toNegationTerm().subTerm().optimized();
138  else
139  return Nepomuk2::Query::NegationTerm::negateTerm( nt.subTerm().optimized() );
140  }
141 
142  case Nepomuk2::Query::Term::Optional: {
143  Nepomuk2::Query::OptionalTerm ot = toOptionalTerm();
144  // remove duplicate optional terms
145  if( ot.subTerm().isOptionalTerm() )
146  return ot.subTerm().optimized();
147  else
148  return Nepomuk2::Query::OptionalTerm::optionalizeTerm( ot.subTerm().optimized() );
149  }
150 
151  case Nepomuk2::Query::Term::Comparison: {
152  Nepomuk2::Query::ComparisonTerm ct( toComparisonTerm() );
153  ct.setSubTerm( ct.subTerm().optimized() );
154  return ct;
155  }
156 
157  default:
158  return *this;
159  }
160 }
161 
162 
163 bool Nepomuk2::Query::Term::isLiteralTerm() const
164 {
165  return type() == Literal;
166 }
167 
168 
169 bool Nepomuk2::Query::Term::isResourceTerm() const
170 {
171  return type() == Resource;
172 }
173 
174 
175 bool Nepomuk2::Query::Term::isNegationTerm() const
176 {
177  return type() == Negation;
178 }
179 
180 
181 bool Nepomuk2::Query::Term::isOptionalTerm() const
182 {
183  return type() == Optional;
184 }
185 
186 
187 bool Nepomuk2::Query::Term::isAndTerm() const
188 {
189  return type() == And;
190 }
191 
192 
193 bool Nepomuk2::Query::Term::isOrTerm() const
194 {
195  return type() == Or;
196 }
197 
198 
199 bool Nepomuk2::Query::Term::isComparisonTerm() const
200 {
201  return type() == Comparison;
202 }
203 
204 
205 bool Nepomuk2::Query::Term::isResourceTypeTerm() const
206 {
207  return type() == ResourceType;
208 }
209 
210 
211 Nepomuk2::Query::LiteralTerm Nepomuk2::Query::Term::toLiteralTerm() const
212 {
213  if ( isLiteralTerm() ) {
214  return *static_cast<const LiteralTerm*>( this );
215  }
216  else
217  return LiteralTerm();
218 }
219 
220 
221 Nepomuk2::Query::ResourceTerm Nepomuk2::Query::Term::toResourceTerm() const
222 {
223  if ( isResourceTerm() )
224  return *static_cast<const ResourceTerm*>( this );
225  else
226  return ResourceTerm();
227 }
228 
229 
230 Nepomuk2::Query::NegationTerm Nepomuk2::Query::Term::toNegationTerm() const
231 {
232  if ( isNegationTerm() )
233  return *static_cast<const NegationTerm*>( this );
234  else
235  return NegationTerm();
236 }
237 
238 
239 Nepomuk2::Query::OptionalTerm Nepomuk2::Query::Term::toOptionalTerm() const
240 {
241  if ( isOptionalTerm() )
242  return *static_cast<const OptionalTerm*>( this );
243  else
244  return OptionalTerm();
245 }
246 
247 
248 Nepomuk2::Query::AndTerm Nepomuk2::Query::Term::toAndTerm() const
249 {
250  if ( isAndTerm() )
251  return *static_cast<const AndTerm*>( this );
252  else
253  return AndTerm();
254 }
255 
256 
257 Nepomuk2::Query::OrTerm Nepomuk2::Query::Term::toOrTerm() const
258 {
259  if ( isOrTerm() )
260  return *static_cast<const OrTerm*>( this );
261  else
262  return OrTerm();
263 }
264 
265 
266 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::Term::toComparisonTerm() const
267 {
268  if ( isComparisonTerm() )
269  return *static_cast<const ComparisonTerm*>( this );
270  else
271  return ComparisonTerm();
272 }
273 
274 
275 Nepomuk2::Query::ResourceTypeTerm Nepomuk2::Query::Term::toResourceTypeTerm() const
276 {
277  if ( isResourceTypeTerm() )
278  return *static_cast<const ResourceTypeTerm*>( this );
279  else
280  return ResourceTypeTerm();
281 }
282 
283 
284 #define CONVERT_AND_RETURN( Class ) \
285  if ( !is##Class() ) \
286  d_ptr = new Class##Private(); \
287  return *static_cast<Class*>( this )
288 
289 Nepomuk2::Query::LiteralTerm& Nepomuk2::Query::Term::toLiteralTerm()
290 {
291  CONVERT_AND_RETURN( LiteralTerm );
292 }
293 
294 
295 Nepomuk2::Query::ResourceTerm& Nepomuk2::Query::Term::toResourceTerm()
296 {
297  CONVERT_AND_RETURN( ResourceTerm );
298 }
299 
300 
301 Nepomuk2::Query::NegationTerm& Nepomuk2::Query::Term::toNegationTerm()
302 {
303  CONVERT_AND_RETURN( NegationTerm );
304 }
305 
306 
307 Nepomuk2::Query::OptionalTerm& Nepomuk2::Query::Term::toOptionalTerm()
308 {
309  CONVERT_AND_RETURN( OptionalTerm );
310 }
311 
312 
313 Nepomuk2::Query::AndTerm& Nepomuk2::Query::Term::toAndTerm()
314 {
315  CONVERT_AND_RETURN( AndTerm );
316 }
317 
318 
319 Nepomuk2::Query::OrTerm& Nepomuk2::Query::Term::toOrTerm()
320 {
321  CONVERT_AND_RETURN( OrTerm );
322 }
323 
324 
325 Nepomuk2::Query::ComparisonTerm& Nepomuk2::Query::Term::toComparisonTerm()
326 {
327  CONVERT_AND_RETURN( ComparisonTerm );
328 }
329 
330 
331 Nepomuk2::Query::ResourceTypeTerm& Nepomuk2::Query::Term::toResourceTypeTerm()
332 {
333  CONVERT_AND_RETURN( ResourceTypeTerm );
334 }
335 
336 
337 QString Nepomuk2::Query::Term::toString() const
338 {
339  return Nepomuk2::Query::serializeTerm( *this );
340 }
341 
342 
343 // static
344 Nepomuk2::Query::Term Nepomuk2::Query::Term::fromString( const QString& s )
345 {
346  return Nepomuk2::Query::parseTerm( s );
347 }
348 
349 
350 // static
351 Nepomuk2::Query::Term Nepomuk2::Query::Term::fromVariant( const Variant& variant )
352 {
353  if( variant.isResource() ) {
354  return ResourceTerm( variant.toResource() );
355  }
356  else if( !variant.isList() ) {
357  Soprano::LiteralValue v( variant.variant() );
358  if( v.isValid() ) {
359  return LiteralTerm( v );
360  }
361  }
362 
363  // fallback: invalid term
364  return Term();
365 }
366 
367 
368 // static
369 Nepomuk2::Query::Term Nepomuk2::Query::Term::fromProperty( const Nepomuk2::Types::Property& property, const Nepomuk2::Variant& variant )
370 {
371  if( variant.isList() ) {
372  AndTerm andTerm;
373  Q_FOREACH( const Variant& v, variant.toVariantList() ) {
374  andTerm.addSubTerm( fromProperty(property, v) );
375  }
376  return andTerm;
377  }
378  else {
379  return ComparisonTerm( property, Term::fromVariant(variant), ComparisonTerm::Equal );
380  }
381 }
382 
383 
384 bool Nepomuk2::Query::Term::operator==( const Term& other ) const
385 {
386  return d_ptr->equals( other.d_ptr );
387 }
388 
389 
390 bool Nepomuk2::Query::Term::operator!=( const Term& other ) const
391 {
392  return !d_ptr->equals( other.d_ptr );
393 }
394 
395 
396 QDebug operator<<( QDebug dbg, const Nepomuk2::Query::Term& term )
397 {
398  return term.operator<<( dbg );
399 }
400 
401 
402 Nepomuk2::Query::Term Nepomuk2::Query::operator&&( const Term& term1, const Term& term2 )
403 {
404  QList<Term> terms;
405  if( term1.isAndTerm() )
406  terms << term1.toAndTerm().subTerms();
407  else if( term1.isValid() )
408  terms << term1;
409  if( term2.isAndTerm() )
410  terms << term2.toAndTerm().subTerms();
411  else if( term2.isValid() )
412  terms << term2;
413 
414  if( terms.count() == 1 )
415  return terms.first();
416  else if( terms.count() > 1 )
417  return AndTerm( terms );
418  else
419  return Term();
420 }
421 
422 
423 Nepomuk2::Query::Term Nepomuk2::Query::operator||( const Term& term1, const Term& term2 )
424 {
425  QList<Term> terms;
426  if( term1.isOrTerm() )
427  terms << term1.toOrTerm().subTerms();
428  else if( term1.isValid() )
429  terms << term1;
430  if( term2.isOrTerm() )
431  terms << term2.toOrTerm().subTerms();
432  else if( term2.isValid() )
433  terms << term2;
434 
435  if( terms.count() == 1 )
436  return terms.first();
437  else if( terms.count() > 1 )
438  return OrTerm( terms );
439  else
440  return Term();
441 }
442 
443 
444 Nepomuk2::Query::Term Nepomuk2::Query::operator!( const Nepomuk2::Query::Term& term )
445 {
446  return NegationTerm::negateTerm( term );
447 }
448 
449 
450 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::operator<( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
451 {
452  return ComparisonTerm( property, term, ComparisonTerm::Smaller );
453 }
454 
455 
456 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::operator>( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
457 {
458  return ComparisonTerm( property, term, ComparisonTerm::Greater );
459 }
460 
461 
462 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::operator<=( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
463 {
464  return ComparisonTerm( property, term, ComparisonTerm::SmallerOrEqual );
465 }
466 
467 
468 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::operator>=( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
469 {
470  return ComparisonTerm( property, term, ComparisonTerm::GreaterOrEqual );
471 }
472 
473 
474 Nepomuk2::Query::ComparisonTerm Nepomuk2::Query::operator==( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
475 {
476  return ComparisonTerm( property, term, ComparisonTerm::Equal );
477 }
478 
479 
480 Nepomuk2::Query::Term Nepomuk2::Query::operator!=( const Nepomuk2::Types::Property& property, const Nepomuk2::Query::Term& term )
481 {
482  return !( property == term );
483 }
484 
485 
486 uint Nepomuk2::Query::qHash( const Nepomuk2::Query::Term& term )
487 {
488  switch( term.type() ) {
489  case Nepomuk2::Query::Term::Literal:
490  return( qHash( term.toLiteralTerm().value().toString() ) );
491 
492  case Nepomuk2::Query::Term::Comparison:
493  return( qHash( term.toComparisonTerm().property().uri().toString() )<<24 |
494  qHash( term.toComparisonTerm().subTerm() )<<16 |
495  ( uint )term.toComparisonTerm().comparator()<<8 );
496 
497  case Nepomuk2::Query::Term::Negation:
498  return qHash(term.toNegationTerm().subTerm());
499 
500  case Nepomuk2::Query::Term::Optional:
501  return qHash(term.toOptionalTerm().subTerm());
502 
503  case Nepomuk2::Query::Term::Resource:
504  return qHash( term.toResourceTerm().resource().uri() );
505 
506  case Nepomuk2::Query::Term::ResourceType:
507  return qHash( term.toResourceTypeTerm().type().uri() );
508 
509  case Nepomuk2::Query::Term::And:
510  case Nepomuk2::Query::Term::Or: {
511  uint h = ( uint )term.type();
512  QList<Nepomuk2::Query::Term> subTerms = static_cast<const GroupTerm&>( term ).subTerms();
513  for ( int i = 0; i < subTerms.count(); ++i ) {
514  h |= ( qHash( subTerms[i] )<<i );
515  }
516  return h;
517  }
518 
519  default:
520  return 0;
521  }
522 }
523 
524 
527 template<> Nepomuk2::Query::TermPrivate* QSharedDataPointer<Nepomuk2::Query::TermPrivate>::clone()
528 {
529  return d->clone();
530 }
531 
532 
533 QDebug Nepomuk2::Query::Term::operator<<( QDebug dbg ) const
534 {
535  return dbg << toString();
536 }
andterm.h
Nepomuk2::Query::ComparisonTerm::Smaller
A LiteralTerm sub-term is matched to smaller literal values.
Definition: comparisonterm.h:104
Nepomuk2::Query::Term::Comparison
A comparison.
Definition: term.h:113
Nepomuk2::Query::Term::toLiteralTerm
LiteralTerm toLiteralTerm() const
Interpret this term as a LiteralTerm.
Definition: term.cpp:211
Nepomuk2::Query::Term::isOptionalTerm
bool isOptionalTerm() const
Definition: term.cpp:181
Nepomuk2::Query::AndTerm
Match resource that match all sub terms.
Definition: andterm.h:43
Nepomuk2::Query::Term::isComparisonTerm
bool isComparisonTerm() const
Definition: term.cpp:199
Nepomuk2::Query::serializeTerm
QString serializeTerm(const Term &term)
Definition: queryserializer.cpp:471
Nepomuk2::Query::Term::toOptionalTerm
OptionalTerm toOptionalTerm() const
Interpret this term as a OptionalTerm.
Definition: term.cpp:239
Nepomuk2::Query::Term::isOrTerm
bool isOrTerm() const
Definition: term.cpp:193
resourceterm.h
Nepomuk2::Query::ResourceTerm::resource
Nepomuk2::Resource resource() const
The resource this term should match against.
Definition: resourceterm.cpp:104
Nepomuk2::Query::Term::Negation
A negation term inverts the meaning of its sub term.
Definition: term.h:127
Nepomuk2::Types::Entity::uri
QUrl uri() const
The URI of the resource.
Definition: entity.cpp:175
Nepomuk2::Query::ComparisonTerm::Greater
A LiteralTerm sub-term is matched to greater literal values.
Definition: comparisonterm.h:99
Nepomuk2::Query::Term
The base class for all term types.
Definition: term.h:64
Nepomuk2::Query::SimpleTerm::setSubTerm
void setSubTerm(const Term &term)
Set the sub term to match against.
Definition: simpleterm.cpp:59
Nepomuk2::Query::ComparisonTerm::GreaterOrEqual
A LiteralTerm sub-term is matched to greater or equal literal values.
Definition: comparisonterm.h:109
Nepomuk2::Query::GroupTerm
Abstract base class for AndTerm and OrTerm which maintains a list of sub-terms.
Definition: groupterm.h:41
Nepomuk2::Query::Term::operator<<
QDebug operator<<(QDebug) const
Definition: term.cpp:533
Nepomuk2::Query::Term::isAndTerm
bool isAndTerm() const
Definition: term.cpp:187
Nepomuk2::Query::ResourceTypeTerm
Matching resources by type.
Definition: resourcetypeterm.h:48
Nepomuk2::Query::Term::isResourceTerm
bool isResourceTerm() const
Definition: term.cpp:169
Nepomuk2::Query::Term::~Term
~Term()
Destructor.
Definition: term.cpp:66
Nepomuk2::Query::NegationTerm::negateTerm
static Term negateTerm(const Term &term)
Negate term.
Definition: negationterm.cpp:101
Nepomuk2::Query::Term::operator==
bool operator==(const Term &term) const
Comparison operator.
Definition: term.cpp:384
Nepomuk2::Query::SimpleTerm::subTerm
Term subTerm() const
The sub term to match against.
Definition: simpleterm.cpp:52
negationterm.h
Nepomuk2::operator<<
QDataStream & operator<<(QDataStream &, const Nepomuk2::SimpleResource &)
Definition: simpleresource.cpp:307
Nepomuk2::Query::GroupTerm::subTerms
QList< Term > subTerms() const
The sub terms that are combined in this group.
Definition: groupterm.cpp:94
Nepomuk2::Query::Term::optimized
Term optimized() const
Optimizes the term without changing its meaning.
Definition: term.cpp:99
CONVERT_AND_RETURN
#define CONVERT_AND_RETURN(Class)
Definition: term.cpp:284
Nepomuk2::Query::Term::And
Match all resources that match all sub terms.
Definition: term.h:98
Nepomuk2::Query::qHash
uint qHash(const Nepomuk2::Query::Query &)
Definition: query.cpp:738
Nepomuk2::Query::ComparisonTerm::Equal
A sub-term is matched one-to-one.
Definition: comparisonterm.h:94
Nepomuk2::Query::Term::isNegationTerm
bool isNegationTerm() const
Definition: term.cpp:175
Nepomuk2::Query::ResourceTypeTerm::type
Nepomuk2::Types::Class type() const
The type to match.
Definition: resourcetypeterm.cpp:94
Nepomuk2::Query::Term::Optional
An optional term which marks its sub term as optional.
Definition: term.h:136
Nepomuk2::Variant::variant
QVariant variant() const
Definition: variant.cpp:1454
Nepomuk2::Variant::isList
bool isList() const
This methods does not handle all list types.
Definition: variant.cpp:1291
Nepomuk2::Query::Term::toString
QString toString() const
Encode the Term in a string.
Definition: term.cpp:337
Nepomuk2::Query::NegationTerm
Negate an arbitrary term.
Definition: negationterm.h:47
Nepomuk2::Query::Term::toComparisonTerm
ComparisonTerm toComparisonTerm() const
Interpret this term as a ComparisonTerm.
Definition: term.cpp:266
Nepomuk2::Query::Term::userData
QVariant userData(const QString &key) const
Get the user data associated with a key.
Definition: term.cpp:94
Nepomuk2::Query::Term::operator!=
bool operator!=(const Term &term) const
Comparison operator.
Definition: term.cpp:390
Nepomuk2::Query::Term::toResourceTerm
ResourceTerm toResourceTerm() const
Interpret this term as a ResourceTerm.
Definition: term.cpp:221
Nepomuk2::Variant::toVariantList
QList< Variant > toVariantList() const
Convert a Variant to a list of Variants.
Definition: variant.cpp:1173
Nepomuk2::Variant
The Nepomuk Variant extends over QVariant by introducing direct support for Resource embedding...
Definition: variant.h:65
Nepomuk2::Query::operator&&
Query operator&&(const Query &query, const Term &term)
Logical and operator which combines term into the term of query to match both.
Definition: query.cpp:708
variant.h
Nepomuk2::Query::parseTerm
Term parseTerm(const QString &s)
Definition: queryserializer.cpp:485
Nepomuk2::Query::Term::fromVariant
static Term fromVariant(const Variant &variant)
Construct a Term from a Variant value.
Definition: term.cpp:351
queryserializer.h
Nepomuk2::Variant::toResource
Resource toResource() const
Convert into a Resource value.
Definition: variant.cpp:908
Nepomuk2::Query::ComparisonTerm::SmallerOrEqual
A LiteralTerm sub-term is matched to smaller or equal literal values.
Definition: comparisonterm.h:114
Nepomuk2::Query::Term::toOrTerm
OrTerm toOrTerm() const
Interpret this term as a OrTerm.
Definition: term.cpp:257
Nepomuk2::Query::ComparisonTerm
A term matching the value of a property.
Definition: comparisonterm.h:70
Nepomuk2::Query::OptionalTerm
Make a term optional.
Definition: optionalterm.h:46
Nepomuk2::Query::Term::isLiteralTerm
bool isLiteralTerm() const
Definition: term.cpp:163
Nepomuk2::Query::OrTerm
Match resource that match at least one of the sub terms.
Definition: orterm.h:43
Nepomuk2::Query::Term::toResourceTypeTerm
ResourceTypeTerm toResourceTypeTerm() const
Interpret this term as a ResourceTypeTerm.
Definition: term.cpp:275
Nepomuk2::Query::Term::fromString
static Term fromString(const QString &s)
Parse a Term that has been encoded as a string via toString().
Definition: term.cpp:344
Nepomuk2::Types::Property
A property is a resource of type rdf:Property which relates a domain with a range.
Definition: libnepomukcore/types/property.h:52
Nepomuk2::Query::Term::ResourceType
Matches all resources of a specific type.
Definition: term.h:120
resourcetypeterm.h
Nepomuk2::Query::OptionalTerm::optionalizeTerm
static Term optionalizeTerm(const Term &term)
Mark term as optional.
Definition: optionalterm.cpp:59
Nepomuk2::Query::operator||
Query operator||(const Query &query, const Term &term)
Logical or operator which combines term into the term of query to match either one.
Definition: query.cpp:716
Nepomuk2::Query::ComparisonTerm::comparator
Comparator comparator() const
The Comparator used by ComparisonTerm Terms.
Definition: comparisonterm.cpp:460
comparisonterm.h
literalterm.h
Nepomuk2::Query::Term::operator=
Term & operator=(const Term &other)
Copy operator.
Definition: term.cpp:71
Nepomuk2::Query::Term::setUserData
void setUserData(const QString &key, const QVariant &value)
Store user data in the term.
Definition: term.cpp:89
Nepomuk2::Query::Term::Type
Type
The type of a term identifying its meaning.
Definition: term.h:72
Nepomuk2::Query::GroupTerm::addSubTerm
void addSubTerm(const Term &term)
Add a sub term to the list of terms that are combined in this group.
Definition: groupterm.cpp:108
Nepomuk2::Query::Term::toAndTerm
AndTerm toAndTerm() const
Interpret this term as a AndTerm.
Definition: term.cpp:248
Nepomuk2::Query::Term::Term
Term()
Constructs an invalid term.
Definition: term.cpp:48
Nepomuk2::Query::Term::Resource
A resource term matches one resource by URI.
Definition: term.h:91
Nepomuk2::Query::Term::isResourceTypeTerm
bool isResourceTypeTerm() const
Definition: term.cpp:205
Nepomuk2::Resource
Resource is the central object type in Nepomuk.
Definition: resource.h:93
Nepomuk2::Variant::isResource
bool isResource() const
Definition: variant.cpp:674
orterm.h
optionalterm.h
term.h
Nepomuk2::Resource::uri
QUrl uri() const
The URI of the resource, uniquely identifying it.
Definition: resource.cpp:166
Nepomuk2::Query::Term::type
Type type() const
Definition: term.cpp:84
Nepomuk2::Query::operator!
Query operator!(const Query &query)
Logical negation operator which negates the meaning of a query.
Definition: query.cpp:724
Nepomuk2::Query::Term::isValid
bool isValid() const
Definition: term.cpp:78
Nepomuk2::Query::Term::Or
Match all resources that match one of the sub terms.
Definition: term.h:105
Nepomuk2::Query::Term::fromProperty
static Term fromProperty(const Types::Property &property, const Variant &variant)
Create a term using a Types::Property and a Variant.
Definition: term.cpp:369
Nepomuk2::Query::ComparisonTerm::property
Types::Property property() const
A property used for ComparisonTerm Terms.
Definition: comparisonterm.cpp:467
Nepomuk2::Query::Term::Literal
A literal term is the simplest form of Term.
Definition: term.h:84
Nepomuk2::Query::LiteralTerm
Match literal properties via full text.
Definition: literalterm.h:86
Nepomuk2::Query::ResourceTerm
Matches exactly one resource.
Definition: resourceterm.h:52
Nepomuk2::Query::LiteralTerm::value
Soprano::LiteralValue value() const
The value this LiteralTerm should match to.
Definition: literalterm.cpp:262
Nepomuk2::Query::Term::toNegationTerm
NegationTerm toNegationTerm() const
Interpret this term as a NegationTerm.
Definition: term.cpp:230
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:09 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal