2012-01-18 17 views
7

Sto cercando di filtrare questo database scritto in TurtleCome utilizzare Turtle SPARQL php

@prefix : <http://www.essepuntato.it/resource/> . 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
@prefix cs: <http://cs.unibo.it/ontology/> .   
:pt0001 
    vcard:category "Poste e Telegrafi" 
    ; vcard:fn "Ufficio Bologna 1" 
    ; vcard:extended-address "Via Cairoli 9, Bologna BO, Italy" 
    ; vcard:latitude "44.504192" 
    ; vcard:longitude "11.338661" 
    ; vcard:tel "051 243425" 
    ; vcard:fax "051 244459" 
    ; cs:opening "Mon, Tue, Wed, Thu, Fri: 0800-1330. Sat: 0800-1230." 
    ; cs:closing "01-01, 01-06, P, LA, 04-25, 05-01, 06-02, 08-15, 11-01, 12-08, 12-25,  12-26: .". 

Io uso arc2 api beacause la RAP non funziona. Ho scritto questo codice, ma non funzionerà:

<?php 
/* ARC2 static class inclusion */ 
include_once('./arc2/ARC2.php'); 

/* MySQL and endpoint configuration */ 
$config = array(
    /* db */ 
    'db_host' => 'localhost', /* optional, default is localhost */ 
    'db_name' => 'my_db', 
    'db_user' => 'user', 
    'db_pwd' => 'secret', 

    /* store name */ 
    'store_name' => 'my_endpoint_store', 

    /* endpoint */ 
    'endpoint_features' => array(
    'select', 'construct', 'ask', 'describe', 
'load', 'insert', 'delete', 
'dump' /* dump is a special command for streaming SPOG export */ 
), 
'endpoint_timeout' => 60, /* not implemented in ARC2 preview */ 
'endpoint_read_key' => '', /* optional */ 
'endpoint_write_key' => 'somekey', /* optional */ 
'endpoint_max_limit' => 250, /* optional */ 
); 

/* instantiation */ 

/* instantiation */ 
$ssp = ARC2::getSPARQLScriptProcessor($config); 

/* script evaluation */ 
$scr = ' 
    PREFIX vcard: <http://www.w3.org/2006/vcard/ns#> 
    PREFIX dbpedia2: <http://dbpedia.org/property/> 

    ENDPOINT "database.ttl" 

    $rows = SELECT ?x ?y WHERE { 
    ?x vcard: ?y. 
    } 
'; 

$ssp->processScript($scr); 
echo $ssp->env['output']; 
?> 

lo script restituisce alcun errore e non un risultato.

risposta

2

Sembra che il predicato nell'istruzione WHERE {} manchi qualcosa.

Ad esempio, intendete vcard:latitude?

Attualmente è

$rows = SELECT ?x ?y WHERE { 
?x vcard: ?y. 
} 

ne dite:

$rows = SELECT ?x ?y WHERE { 
?x vcard:latitude ?y . 
} 

E ci possono essere problemi se non c'è spazio carattere prima del periodo. Avviso che ho aggiunto quello sopra. Almeno questo è quello che ho provato usando le librerie RDF Python.

+1

Il carattere dello spazio prima non dovrebbe avere importanza. Tuttavia, la definizione del predicato è importante;) – zazi