On 2/8/11 6:18 PM, Luka wrote:
Hi Hugh,

the thing is I "solved" this problem by adding LIMIT in my query and putting it to a a reasonable value (in my case 100 is enough)
and now the query results are being returned reasonably fast.
Maybe this can be a clue to you...
Thank you anyway for the sugggestion. I'll try enabling tracing and see
what I get...


A client application communicates with Virtuoso via channels such as ODBC (when using SPASQL), JDBC (when using SPASQL), ADO.NET (when using SPASQL), HTTP (when using SPARQL endpoint), Virtuoso Server Pages (which are actually SQL Stored Procedures) etc..

HTTP is the slowest channel.

Virtuoso Server Pages (VSP) is the fastest channel of all since there is no IPC and everything happens inside the DBMS.

I hope this makes matters clearer :-)

Kingsley
Thanks, Luka
On 8.2.2011. 17:13, Hugh Williams wrote:
Hi Luka,

A fairer comparison would be between the the query run from PHP via ODBC and the same query run using the Virtuoso isql command line tool which both use the same SQL interface to Virtuoso, rather then the sparql endpoint over HTTP.

Can you also enable ODBC tracing and provide an ODBC trace such that we can see if PHP may be enabling an cursoring or other which may result in more resource consumption on the server when running the query.

Best Regards
Hugh Williams
Professional Services
OpenLink Software
Web: http://www.openlinksw.com
Support: http://support.openlinksw.com
Forums: http://boards.openlinksw.com/support
Twitter: http://twitter.com/OpenLink

On 6 Feb 2011, at 11:06, Luka wrote:

Hi everyone,

I am using php on Apache and querying Virtuoso RDF graph using ODBC. Everyithing on my localhost...

I have two questions today :p

A)

Yesterday I got an Virtuoso (opensource) error saying:
/
odbc_exec() [function.odbc-exec]: SQL error: [OpenLink][Virtuoso ODBC Driver][Virtuoso Server]VD032: remote prepare: SQ200: The memory pool size 400195584 reached the limit 400000000 bytes, try to increase the MaxMemPoolSize ini setting/

and by putting MaxMemPoolSize to a bigger value I was again getting the results for my queries from Virtuoso graph.
The problem is that now my queries are returned in 10-15 seconds?!

When I write a simple query such as:

SELECT *
WHERE
{
    ?ab rdf:type gr:Offering .
}

I don't wait more than a second but for the following one I wait those 10-15 sec:

/SELECT * FROM <http://localhost:8890/advisor>
WHERE
{
    ?ab rdf:type gr:Offering .
    ?ab gr:includesObject ?tqn .
    ?ab gr:hasPriceSpecification ?hps.
    ?hps gr:hasCurrencyValue ?hcv.
    ?tqn rdf:type gr:TypeAndQuantityNode.
    ?tqn gr:typeOfGood ?UniqueID.
    ?UniqueID sa:hasCalories ?qvf.
    ?UniqueID sa:hasImage ?image.
    ?UniqueID sa:hasDescription ?description.
    ?qvf gr:hasValueFloat ?calories.

FILTER(?UniqueID = <http://www.shoppingadivsor.com/ontologies/sa#idendtifier10>)
}/
When I run this query directly in conductor SPARQL form I receive result in milliseconds so I guess the problem has to do
something with ODBC and not Virtuoso querying engine performance.

If you have any suggestions I would appreciate that...

B)

Another question is regarding a SPAQRL query.
My RDF graph represents a model of a products store. Store has products of /type:Milk, type:Cereals/ etc.

<http://www.shoppingadivsor.com/ontologies/sa#Milk_5>
    a sa:Milk;
    sa:hasImage "milk_5.jpg";
    sa:hasDescription "This is authentic boob milk :D ";
sa:hasCalories <http://localhost/ontologies/sa#QuantitativeValueFloat_5>.

<http://www.shoppingadivsor.com/ontologies/sa#Cereals_5>
    a sa:Milk;
    sa:hasImage "milk_5.jpg";
    sa:hasDescription "This is authentic boob milk :D ";
sa:hasCalories <http://localhost/ontologies/sa#QuantitativeValueFloat_5>.
    sa:*someOtherProperty*<...>.
    sa:*someOtherProperty*<...>.

Is there a way to get all the properties of a specific node by using the same SPARQL for both product types?

I mean how can I make a query that will return all the values of every particular predicate ? Meaning, In my application I want to have one SPARQL query that will be as general as possible so that I can use it on any product stored in RDF store and get all the values for predicates of that node?

Uh, I hope I didn't complicate things tooooo much :)

Best regards,

Luka
------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world?
http://p.sf.net/sfu/oracle-sfdevnlfb_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users


------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb


_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users


--

Regards,

Kingsley Idehen 
President&  CEO
OpenLink Software
Web: http://www.openlinksw.com
Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca: kidehen





Reply via email to