bool Nepomuk::Types::PropertyPrivate::addProperty( const QUrl& property, const Soprano::Node& value ) { // we avoid subclassing loops (as created for crappy inferencing) by checking for our own uri if( value.isResource() && value.uri() != uri && property == Soprano::Vocabulary::RDFS::subPropertyOf() ) { parents.append( value.uri() ); return true; } else if( property == Soprano::Vocabulary::RDFS::domain() ) { domain = value.uri(); return true; } else if( property == Soprano::Vocabulary::RDFS::range() ) { if ( value.toString().startsWith( Soprano::Vocabulary::XMLSchema::xsdNamespace().toString() ) ) { literalRange = Literal( value.uri() ); } else if ( value.uri() == Soprano::Vocabulary::RDFS::Literal()) { literalRange = Literal( value.uri() ); } else { range = value.uri(); } return true; } else if( property == Soprano::Vocabulary::NRL::minCardinality() ) { minCardinality = value.literal().toInt(); return true; } else if( property == Soprano::Vocabulary::NRL::maxCardinality() ) { maxCardinality = value.literal().toInt(); return true; } else if ( property == Soprano::Vocabulary::NRL::cardinality() ) { cardinality = value.literal().toInt(); return true; } else if ( property == Soprano::Vocabulary::NRL::inverseProperty() ) { inverse = value.uri(); return true; } return false; }
bool Nepomuk::Types::EntityPrivate::load() { const QString query = QString::fromLatin1( "select ?p ?o where { " "graph ?g { <%1> ?p ?o . } . " "{ ?g a %2 . } UNION { ?g a %3 . } . }" ) .arg( QString::fromAscii( uri.toEncoded() ), Soprano::Node::resourceToN3( Soprano::Vocabulary::NRL::Ontology() ), Soprano::Node::resourceToN3( Soprano::Vocabulary::NRL::KnowledgeBase() ) ); Soprano::QueryResultIterator it = ResourceManager::instance()->mainModel()->executeQuery( query, Soprano::Query::QueryLanguageSparql ); while ( it.next() ) { QUrl property = it.binding( "p" ).uri(); Soprano::Node value = it.binding( "o" ); if ( property == Soprano::Vocabulary::RDFS::label() ) { if ( value.language().isEmpty() ) { label = value.toString(); } else if( value.language() == KGlobal::locale()->language() ) { l10nLabel = value.toString(); } } else if ( property == Soprano::Vocabulary::RDFS::comment() ) { if ( value.language().isEmpty() ) { comment = value.toString(); } else if( value.language() == KGlobal::locale()->language() ) { l10nComment = value.toString(); } } else if ( property == Soprano::Vocabulary::NAO::hasSymbol() ) { icon = KIcon( value.toString() ); } else if ( property == Soprano::Vocabulary::NAO::userVisible() ) { userVisible = value.literal().toBool(); } else { addProperty( property, value ); } } return !it.lastError(); }