Wiki
Clone wikitypon / Data annotation and querying
We describe here a short experiment with D2RQ, virtuoso, and BIGSdb.
We started by writing a D2RQ mapping for the data for Neisseria spp, one of the databases available in our local BIGSdb installation. We note that our mapping is not exhaustive and that we just annotated part of the data with TypOn ontology. One can explore the data at http://rest.phyloviz.net/neisseria/.
Even though D2RQ web app provides a SPARQL endpoint, it turns out that queries may take long time to complete, causing high loads in the underlying database, and the Web app may also become irresponsive. To overcome this issue we used the tool dump-rdf available with D2RQ to dump all triples:
./dump-rdf -b "http://rest.phyloviz.net/neisseria/resource/" -o neisseria.ttl mapping.ttl
select * from DB.DBA.load_list; delete from DB.DBA.load_list; ld_dir('/home/data/tmp/2upload', 'mapping.ttl', 'http://rest.phyloviz.net/neisseria/'); rdf_loader_run(); select * from DB.DBA.load_list;
Query examples:
PREFIX typon: <http://purl.phyloviz.net/ontology/typon#> PREFIX uniprot: <http://purl.uniprot.org/core/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT DISTINCT ?isolate ?schema ?locus ?allele_id WHERE { SERVICE <http://beta.sparql.uniprot.org/sparql> { ?taxon uniprot:scientificName "Neisseria polysaccharea" . } ?isolate typon:isFromTaxon ?taxon ; typon:isolatedAt <http://dbpedia.org/resource/Canada> ; typon:hasAllele ?allele . ?schema typon:hasSchemaPart ?spart . ?spart typon:hasLocus ?locus_res ; typon:index "3"^^xsd:int . ?locus_res rdfs:label ?locus . ?allele typon:isOfLocus ?locus_res ; typon:id ?allele_id . }
SELECT ?res WHERE { ?res <http://purl.uniprot.org/core/scientificName> "Neisseria meningitidis" . }
PREFIX typon: <http://purl.phyloviz.net/ontology/typon#> SELECT (str(?isolate_id) as ?isolate) ?carB ?glnA ?rpiA FROM <http://rest.phyloviz.net/neisseria/> WHERE { ?isolate_res typon:isFromTaxon <http://purl.uniprot.org/taxonomy/487>; typon:hasAllele ?carB_res ; typon:hasAllele ?glnA_res ; typon:hasAllele ?rpiA_res ; typon:isolateId ?isolate_id . ?carB_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/carB> ; typon:id ?carB . ?glnA_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/glnA> ; typon:id ?glnA . ?rpiA_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/rpiA> ; typon:id ?rpiA . } ORDER BY ?carB ?glnA ?rpiA
PREFIX typon: <http://purl.phyloviz.net/ontology/typon#> PREFIX uniprot: <http://purl.uniprot.org/core/> select distinct ?taxon where { [] typon:isFromTaxon ?taxon . }
PREFIX typon: <http://purl.phyloviz.net/ontology/typon#> PREFIX uniprot: <http://purl.uniprot.org/core/> SELECT (str(?isolate_id) as ?isolate) ?species ?carB ?glnA ?rpiA FROM <http://rest.phyloviz.net/neisseria/> WHERE { ?isolate_res typon:isFromTaxon ?taxon ; typon:hasAllele ?carB_res ; typon:hasAllele ?glnA_res ; typon:hasAllele ?rpiA_res ; typon:isolateId ?isolate_id . GRAPH ?taxon { ?taxon uniprot:scientificName ?species ; uniprot:rank uniprot:Species . } ?carB_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/carB> ; typon:id ?carB . ?glnA_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/glnA> ; typon:id ?glnA . ?rpiA_res typon:isOfLocus <http://rest.phyloviz.net/neisseria/resource/loci/rpiA> ; typon:id ?rpiA . } ORDER BY ?species ?carB ?glnA ?rpiA
Updated