[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdesupport/soprano
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2010-08-27 15:36:13
Message-ID: 20100827153613.CFD72AC857 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1168854 by trueg:
Since Virtuoso does not support xsd:boolean Soprano has a fake boolean type which is \
already supported in the statement based methods and the QueryResultIterator. This \
commit adds very rudimentary support in SPARQL queries by replacing any occurrenceof \
"true|false"^^xsd:boolean by the fake type. This is far from being full support and \
it might even do some damage when a literal contains a matching string but so far I \
do not see a better solution (besides Virtuoso supporting boolean types of course).
M +1 -1 CMakeLists.txt
M +3 -0 ChangeLog
M +8 -1 backends/virtuoso/virtuosomodel.cpp
M +9 -0 backends/virtuoso/virtuosomodel_p.h
--- trunk/kdesupport/soprano/CMakeLists.txt #1168853:1168854
@@ -7,7 +7,7 @@
################## Soprano version ################################
set(CMAKE_SOPRANO_VERSION_MAJOR 2)
set(CMAKE_SOPRANO_VERSION_MINOR 5)
-set(CMAKE_SOPRANO_VERSION_RELEASE 60)
+set(CMAKE_SOPRANO_VERSION_RELEASE 61)
set(CMAKE_SOPRANO_VERSION_STRING \
"${CMAKE_SOPRANO_VERSION_MAJOR}.${CMAKE_SOPRANO_VERSION_MINOR}.${CMAKE_SOPRANO_VERSION_RELEASE}")
--- trunk/kdesupport/soprano/ChangeLog #1168853:1168854
@@ -1,3 +1,6 @@
+2.6.0
+ * Fixed handling of xsd:boolean in SPARQL queries in the Virtuoso backend
+
2.5.0
* New public qHash method for Statement
* New Node::fromN3 method and operator>> which allows to parse nodes from N3 \
encoding.
--- trunk/kdesupport/soprano/backends/virtuoso/virtuosomodel.cpp #1168853:1168854
@@ -106,6 +106,13 @@
}
+QString Soprano::VirtuosoModelPrivate::replaceFakeTypesInQuery( const QString& query \
) +{
+ QMutexLocker lock( &m_fakeBooleanRegExpMutex );
+ return QString(query).replace( m_fakeBooleanRegExp, \
QString::fromLatin1("'\\2'^^<%1>").arg( Virtuoso::fakeBooleanTypeString() ) ); +}
+
+
Soprano::VirtuosoModel::VirtuosoModel( ODBC::ConnectionPool* connectionPool, const \
Backend* b ) : StorageModel(b),
d( new VirtuosoModelPrivate() )
@@ -404,7 +411,7 @@
{
// qDebug() << Q_FUNC_INFO << query;
- QString finalQuery( query );
+ QString finalQuery = d->replaceFakeTypesInQuery( query );
if ( language != Soprano::Query::QueryLanguageSparql ) {
setError( Error::Error( QString::fromLatin1( "Unsupported query language \
%1." )
--- trunk/kdesupport/soprano/backends/virtuoso/virtuosomodel_p.h #1168853:1168854
@@ -23,6 +23,7 @@
#define _SOPRANO_IODBC_MODEL_P_H_
#include <QtCore/QMutex>
+#include <QtCore/QRegExp>
#include "virtuosoqueryresultiteratorbackend.h"
@@ -37,6 +38,9 @@
public:
VirtuosoModelPrivate()
: connectionPool( 0 ),
+ m_fakeBooleanRegExp( \
QLatin1String("([\"'])(true|false)\\1\\^\\^(<http\\://www\\.w3\\.org/2001/XMLSchema#boolean>|\\w+\\:boolean)"),
+ Qt::CaseInsensitive,
+ QRegExp::RegExp2 ),
m_openIteratorMutex( QMutex::Recursive ) {
}
@@ -59,10 +63,15 @@
m_openIteratorMutex.unlock();
}
+ QString replaceFakeTypesInQuery( const QString& query );
+
ODBC::ConnectionPool* connectionPool;
QList<Virtuoso::QueryResultIteratorBackend*> m_openIterators;
private:
+ QRegExp m_fakeBooleanRegExp;
+ QMutex m_fakeBooleanRegExpMutex;
+
QMutex m_openIteratorMutex;
};
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic