Hello community, here is the log from the commit of package soprano for openSUSE:Factory checked in at 2012-03-13 09:39:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/soprano (Old) and /work/SRC/openSUSE:Factory/.soprano.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "soprano", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/soprano/soprano-backend-sesame.changes 2011-12-06 18:02:59.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.soprano.new/soprano-backend-sesame.changes 2012-03-13 09:39:52.000000000 +0100 @@ -1,0 +2,13 @@ +Mon Mar 5 22:01:06 UTC 2012 - [email protected] + +- Update to 2.7.5: + * Be less strict when converting a string to a QDateTime: + + Allow an empty time part, ie. "2011-10-04". + + Allow the usage of a space instead of "T" to separate date from time. + * Fixed URI parsing in the SparqlModel. + * Fixed an endless loop in the VirtuosoModel destruction which can happen in + rare error cases. + * Fixed serialization of non-string literal values. + * Support Turtle result encoding in the SPARQL model. + +------------------------------------------------------------------- soprano-backend-virtuoso.changes: same change soprano.changes: same change Old: ---- soprano-2.7.4.tar.bz2 New: ---- soprano-2.7.5.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ soprano-backend-sesame.spec ++++++ --- /var/tmp/diff_new_pack.MT6FyF/_old 2012-03-13 09:39:53.000000000 +0100 +++ /var/tmp/diff_new_pack.MT6FyF/_new 2012-03-13 09:39:53.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package soprano-backend-sesame # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,16 +16,15 @@ # - Name: soprano-backend-sesame Summary: Sesame backend for Soprano License: LGPL-2.1+ +Group: System/Libraries # COMMON1-BEGIN # COMMON1-BEGIN -Version: 2.7.4 -Release: 1 +Version: 2.7.5 +Release: 0 Url: http://soprano.sourceforge.net/ -Group: System/Libraries Source0: http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2 Source100: baselibs.conf BuildRequires: cmake @@ -44,8 +43,8 @@ BuildRequires: libsoprano-devel Requires: java Requires: libsoprano4 = %{version} -Provides: soprano_backend = %{version} Provides: backend-sesame2 = %{version} +Provides: soprano_backend = %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -75,9 +74,6 @@ %suse_update_desktop_file %{buildroot}%{_datadir}/soprano/plugins/sesame2backend.desktop %endif -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %{_datadir}/soprano/sesame2/ ++++++ soprano-backend-virtuoso.spec ++++++ --- /var/tmp/diff_new_pack.MT6FyF/_old 2012-03-13 09:39:53.000000000 +0100 +++ /var/tmp/diff_new_pack.MT6FyF/_new 2012-03-13 09:39:53.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package soprano-backend-virtuoso # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,16 +16,15 @@ # - Name: soprano-backend-virtuoso Summary: Virtuoso backend for Soprano License: GPL-2.0+ +Group: System/Libraries # COMMON1-BEGIN # COMMON1-BEGIN -Version: 2.7.4 -Release: 1 +Version: 2.7.5 +Release: 0 Url: http://soprano.sourceforge.net/ -Group: System/Libraries Source0: http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2 Source100: baselibs.conf BuildRequires: cmake @@ -44,8 +43,8 @@ BuildRequires: libsoprano-devel Requires: libsoprano4 = %{version} Requires: virtuoso-server -Provides: soprano_backend = %{version} Provides: backend-virtuso = %{version} +Provides: soprano_backend = %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -74,9 +73,6 @@ %suse_update_desktop_file %{buildroot}%{_datadir}/soprano/plugins/virtuosobackend.desktop %endif -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %{_libdir}/soprano/libsoprano_virtuosobackend.so ++++++ soprano.spec ++++++ --- /var/tmp/diff_new_pack.MT6FyF/_old 2012-03-13 09:39:54.000000000 +0100 +++ /var/tmp/diff_new_pack.MT6FyF/_new 2012-03-13 09:39:54.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package soprano # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,15 +16,14 @@ # - Name: soprano Summary: C++/Qt based interface library for RDF License: LGPL-2.1+ and GPL-2.0+ +Group: System/Libraries # COMMON1-BEGIN -Version: 2.7.4 -Release: 1 +Version: 2.7.5 +Release: 0 Url: http://soprano.sourceforge.net/ -Group: System/Libraries Source0: http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2 Source100: baselibs.conf BuildRequires: cmake @@ -57,8 +56,8 @@ # COMMON2-END %package backend-redland -License: LGPL-2.1+ Summary: Redland backend for Soprano +License: LGPL-2.1+ Group: System/Libraries Requires: libsoprano4 = %{version} Provides: soprano_backend = %{version} @@ -67,8 +66,8 @@ This package provides a Redland based backend for Soprano. %package -n libsoprano4 -License: LGPL-2.1+ Summary: C++/Qt based interface library for RDF +License: LGPL-2.1+ Group: System/Libraries %requires_ge libqt4 @@ -80,8 +79,8 @@ subroject of Nepomuk, the semantic desktop initiative. %package -n libsoprano-devel -License: LGPL-2.1+ Summary: Developer files for Soprano +License: LGPL-2.1+ Group: Development/Libraries/C and C++ Requires: %{name} = %{version} Requires: libraptor-devel @@ -116,9 +115,6 @@ %postun -n libsoprano4 -p /sbin/ldconfig -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %doc AUTHORS COPYING COPYING.LIB ChangeLog README TODO ++++++ soprano-2.7.4.tar.bz2 -> soprano-2.7.5.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/CMakeLists.txt new/soprano-2.7.5/CMakeLists.txt --- old/soprano-2.7.4/CMakeLists.txt 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/CMakeLists.txt 2012-03-03 19:44:20.000000000 +0100 @@ -1,13 +1,17 @@ project(soprano) cmake_minimum_required(VERSION 2.6.4) +# disable warning about shadowing CMakeParseArguments.cmake +if(POLICY CMP0017) + cmake_policy(SET CMP0017 NEW) +endif(POLICY CMP0017) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) ################## Soprano version ################################ set(CMAKE_SOPRANO_VERSION_MAJOR 2) set(CMAKE_SOPRANO_VERSION_MINOR 7) -set(CMAKE_SOPRANO_VERSION_RELEASE 4) +set(CMAKE_SOPRANO_VERSION_RELEASE 5) set(CMAKE_SOPRANO_VERSION_STRING "${CMAKE_SOPRANO_VERSION_MAJOR}.${CMAKE_SOPRANO_VERSION_MINOR}.${CMAKE_SOPRANO_VERSION_RELEASE}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/ChangeLog new/soprano-2.7.5/ChangeLog --- old/soprano-2.7.4/ChangeLog 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/ChangeLog 2012-03-03 19:44:20.000000000 +0100 @@ -1,3 +1,12 @@ +2.7.5 + * Be less strict when converting a string to a QDateTime: + - Allow an empty time part, ie. "2011-10-04". + - Allow the usage of a space instead of "T" to separate date from time. + * Fixed URI parsing in the SparqlModel. + * Fixed an endless loop in the VirtuosoModel destruction which can happen in rare error cases. + * Fixed serialization of non-string literal values. + * Support Turtle result encoding in the SPARQL model. + 2.7.4 * Enabled large file support (_FILE_OFFSET_BITS=64) to fix large DB file locking on 32bit machines. * Do not use an event loop when waiting for Virtuoso to initialize. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/README new/soprano-2.7.5/README --- old/soprano-2.7.4/README 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/README 2012-03-03 19:44:20.000000000 +0100 @@ -1,4 +1,4 @@ -Soprano 2.6 +Soprano 2.7 =========== Soprano (formally known as QRDF) is a library which provides a nice Qt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/backends/virtuoso/odbcconnectionpool.cpp new/soprano-2.7.5/backends/virtuoso/odbcconnectionpool.cpp --- old/soprano-2.7.4/backends/virtuoso/odbcconnectionpool.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/backends/virtuoso/odbcconnectionpool.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -130,17 +130,19 @@ } Connection* conn = d->createConnection(); - d->m_openConnections.insert( QThread::currentThread(), conn ); - // using the cleanup slot rather than deleteLater to not depend on any event loop - connect( QThread::currentThread(), SIGNAL( finished() ), - conn, SLOT( cleanup() ), - Qt::DirectConnection ); - connect( QThread::currentThread(), SIGNAL( terminated() ), - conn, SLOT( cleanup() ), - Qt::DirectConnection ); - connect( QThread::currentThread(), SIGNAL( destroyed() ), - conn, SLOT( cleanup() ), - Qt::DirectConnection ); + if(conn) { + d->m_openConnections.insert( QThread::currentThread(), conn ); + // using the cleanup slot rather than deleteLater to not depend on any event loop + connect( QThread::currentThread(), SIGNAL( finished() ), + conn, SLOT( cleanup() ), + Qt::DirectConnection ); + connect( QThread::currentThread(), SIGNAL( terminated() ), + conn, SLOT( cleanup() ), + Qt::DirectConnection ); + connect( QThread::currentThread(), SIGNAL( destroyed() ), + conn, SLOT( cleanup() ), + Qt::DirectConnection ); + } return conn; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/backends/virtuoso/virtuosocontroller.cpp new/soprano-2.7.5/backends/virtuoso/virtuosocontroller.cpp --- old/soprano-2.7.4/backends/virtuoso/virtuosocontroller.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/backends/virtuoso/virtuosocontroller.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -39,6 +39,7 @@ #include <sys/types.h> #include <signal.h> #include <sys/wait.h> +#include <unistd.h> #endif Q_DECLARE_METATYPE( QProcess::ExitStatus ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/client/sparql/sparqlmodel.cpp new/soprano-2.7.5/client/sparql/sparqlmodel.cpp --- old/soprano-2.7.4/client/sparql/sparqlmodel.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/client/sparql/sparqlmodel.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -162,6 +162,15 @@ // graph result return new StatementIteratorQueryResultBackend( it ); } + + // also try parsing as Turtle - the default result form by dbpedia. FIXME: simply ask for a specific serialization instead + else if ( const Soprano::Parser* parser = Soprano::PluginManager::instance()->discoverParserForSerialization( Soprano::SerializationTurtle ) ) { + Soprano::StatementIterator it = parser->parseString( data, QUrl(), Soprano::SerializationTurtle ); + if ( it.isValid() ) { + // graph result + return new StatementIteratorQueryResultBackend( it ); + } + } } return Soprano::QueryResultIterator(); @@ -339,7 +348,7 @@ { // we cannot use a construct query due to missing graph support QString query = QString( "select * where { %1 }" ).arg( statementToConstructGraphPattern( partial, true ) ); - qDebug() << "List Statements Query" << query; + return executeQuery( query, Query::QueryLanguageSparql ) .iterateStatementsFromBindings( partial.subject().isValid() ? QString() : QString( 's' ), partial.predicate().isValid() ? QString() : QString( 'p' ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/client/sparql/sparqlprotocol.cpp new/soprano-2.7.5/client/sparql/sparqlprotocol.cpp --- old/soprano-2.7.4/client/sparql/sparqlprotocol.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/client/sparql/sparqlprotocol.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -82,7 +82,7 @@ int id = get( url.toEncoded(), buffer ); m_resultsData[id] = buffer; - qDebug() << Q_FUNC_INFO << url << id; +// qDebug() << Q_FUNC_INFO << url << id; return id; } @@ -102,7 +102,7 @@ delete m_resultsData[id]; m_resultsData.remove( id ); - qDebug() << Q_FUNC_INFO << data; +// qDebug() << Q_FUNC_INFO << data; return data; } @@ -119,7 +119,7 @@ void Soprano::Client::SparqlProtocol::slotRequestFinished( int id, bool error ) { - qDebug() << Q_FUNC_INFO << id << error; +// qDebug() << Q_FUNC_INFO << id << error; // we ignore all the other requests such as setting the user and so on if ( m_resultsData.contains( id ) ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/client/sparql/sparqlxmlresultparser.cpp new/soprano-2.7.5/client/sparql/sparqlxmlresultparser.cpp --- old/soprano-2.7.4/client/sparql/sparqlxmlresultparser.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/client/sparql/sparqlxmlresultparser.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -174,7 +174,7 @@ } Uri result = Uri(); - result.setUri(element.text()); + result.setUri(QUrl::fromEncoded(element.text().toUtf8())); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/data/testdata.h new/soprano-2.7.5/data/testdata.h --- old/soprano-2.7.4/data/testdata.h 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/data/testdata.h 2012-03-03 19:44:20.000000000 +0100 @@ -1,3 +1,6 @@ + +#include <QDateTime> + static QList<Soprano::Statement> testData( bool withContext ) { @@ -23,6 +26,10 @@ QUrl("http://soprano.sf.net/test#author"), QUrl("http://soprano.sf.net/testdata/SebastianTrueg"), withContext ? mainContext : Node() ) ); + sl.append( Soprano::Statement( QUrl("http://soprano.sf.net/testdata/Soprano"), + QUrl("http://soprano.sf.net/test#creationDate"), + LiteralValue(QDateTime::currentDateTime()), + withContext ? mainContext : Node() ) ); sl.append( Soprano::Statement( QUrl("http://soprano.sf.net/testdata/DanieleGaldi"), QUrl("http://soprano.sf.net/test#name"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/serializers/raptor/raptorserializer.cpp new/soprano-2.7.5/serializers/raptor/raptorserializer.cpp --- old/soprano-2.7.4/serializers/raptor/raptorserializer.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/serializers/raptor/raptorserializer.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -61,50 +61,42 @@ } }*/ - raptor_term * convertNode( raptor_world * world, const Soprano::Node& node) + raptor_term* convertNode( raptor_world * world, const Soprano::Node& node) { - raptor_term * answer = 0; - /* According to documentation, raptor_new_term family takes copy of - * all given input parameters - */ - if ( node.isResource() ) { - raptor_uri * uri = raptor_new_uri(world, ( const unsigned char* )node.uri().toEncoded().data() ); - answer = raptor_new_term_from_uri(world,uri); + raptor_term* term = 0; + // According to documentation, raptor_new_term family creates deep copies of + // all given input parameters + if ( node.isResource() ) { + raptor_uri* uri = raptor_new_uri(world, ( const unsigned char* )node.uri().toEncoded().data() ); + term = raptor_new_term_from_uri(world, uri); raptor_free_uri(uri); } else if ( node.isBlank() ) { - answer = raptor_new_term_from_blank( - world, (const unsigned char*)node.identifier().toUtf8().data() ); + term = raptor_new_term_from_blank(world, (const unsigned char*)node.identifier().toUtf8().data() ); } else if ( node.isLiteral() ) { - // Because QByteArray.data() is valid as long as QByteArray itself is - // alive, we store langBA ( and others _x_BA untill function exits - - //const unsigned char * literal = 0; - QByteArray langBA; - const unsigned char * lang = 0; - raptor_uri * datatype = 0; + QByteArray lang; + raptor_uri* datatype = 0; if ( node.literal().isPlain() ) { - if ( !node.language().isEmpty() ) - langBA = node.language().toUtf8(); - lang = ( const unsigned char* )( langBA.constData() ); + lang = node.language().toUtf8(); } else { datatype = raptor_new_uri( world, ( const unsigned char* )node.dataType().toEncoded().data() ); } - // Now we costructs statement - answer = raptor_new_term_from_literal(world,(const unsigned char*)node.literal().toByteArray().constData(),datatype,lang); - - // And free unnecessary resources - if ( datatype) - raptor_free_uri(datatype); + term = raptor_new_term_from_literal(world, + reinterpret_cast<const unsigned char*>(node.literal().toString().toUtf8().constData()), + datatype, + reinterpret_cast<const unsigned char*>(lang.constData())); + if( datatype ) { + raptor_free_uri( datatype ); + } } - return answer; + return term; } @@ -331,7 +323,7 @@ * we can ignore Q value in this case * Acording to documentation, this array can have zero elements */ - for( int mt_number = 0; mt_number < serializer_descr->mime_types_count; + for( unsigned int mt_number = 0; mt_number < serializer_descr->mime_types_count; mt_number++) { const char * mime_type_N = serializer_descr->mime_types[mt_number].mime_type; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soprano-2.7.4/soprano/datetime.cpp new/soprano-2.7.5/soprano/datetime.cpp --- old/soprano-2.7.4/soprano/datetime.cpp 2011-12-02 16:27:49.000000000 +0100 +++ new/soprano-2.7.5/soprano/datetime.cpp 2012-03-03 19:44:20.000000000 +0100 @@ -181,20 +181,29 @@ QDateTime Soprano::DateTime::fromDateTimeString( const QString& s ) { + // we support both the standard form and the often seen form which uses + // a space instead of the T. int pos = s.indexOf('T'); - if( pos > 0 ) { - QDate date = fromDateString( s.mid( 0, pos ) ); - if( !date.isValid() ) - return QDateTime(); - QTime time = fromTimeString( s.mid( pos+1 ) ); - if( !time.isValid() ) - return QDateTime(); - return QDateTime( date, time, Qt::UTC ); + if(pos < 0) { + pos = s.indexOf(' '); } - else { + + QDate date = fromDateString( s.mid( 0, pos ) ); + if( !date.isValid() ) { qDebug() << Q_FUNC_INFO << " invalid formatted datetime string: " << s << endl; return QDateTime(); } + + QTime time; + if( pos > 0 ) { + time = fromTimeString( s.mid( pos+1 ) ); + if( !time.isValid() ) { + qDebug() << Q_FUNC_INFO << " invalid formatted datetime string: " << s << endl; + return QDateTime(); + } + } + + return QDateTime( date, time, Qt::UTC ); } ++++++ soprano-backend-sesame.spec.in ++++++ --- /var/tmp/diff_new_pack.MT6FyF/_old 2012-03-13 09:39:54.000000000 +0100 +++ /var/tmp/diff_new_pack.MT6FyF/_new 2012-03-13 09:39:54.000000000 +0100 @@ -20,6 +20,7 @@ Name: soprano-backend-sesame Summary: Sesame backend for Soprano License: LGPL-2.1+ +Group: System/Libraries # COMMON1-BEGIN # COMMON1-END BuildRequires: java-devel @@ -54,9 +55,6 @@ %suse_update_desktop_file %{buildroot}%{_datadir}/soprano/plugins/sesame2backend.desktop %endif -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %{_datadir}/soprano/sesame2/ ++++++ soprano-backend-virtuoso.spec.in ++++++ --- /var/tmp/diff_new_pack.MT6FyF/_old 2012-03-13 09:39:54.000000000 +0100 +++ /var/tmp/diff_new_pack.MT6FyF/_new 2012-03-13 09:39:54.000000000 +0100 @@ -20,6 +20,7 @@ Name: soprano-backend-virtuoso Summary: Virtuoso backend for Soprano License: GPL-2.0+ +Group: System/Libraries # COMMON1-BEGIN # COMMON1-END BuildRequires: libiodbc-devel @@ -53,9 +54,6 @@ %suse_update_desktop_file %{buildroot}%{_datadir}/soprano/plugins/virtuosobackend.desktop %endif -%clean -rm -rf %{buildroot} - %files %defattr(-,root,root,-) %{_libdir}/soprano/libsoprano_virtuosobackend.so -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
