Querying RDF

Use sparql.

Results as a map/dict

Demonstrate creating a sparql query in Python
import os
from pyomexmeta import RDF, eUriType

# get the link to teusink2000
teusink_biomod_link = r"https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml"

# download model xml, scan for rdf, create rdf graph and store in sqlite database
rdf = RDF.from_uri(teusink_biomod_link, syntax="rdfxml",
                   storage_type="sqlite", storage_name="TeusinkAnnotations2000",
                   storage_options="new='yes'")

# do a search for all annotations with glucode as resource: CHEBI:17234
query_string = """
SELECT ?x ?y
WHERE {
    ?x ?y <http://identifiers.org/obo.chebi/CHEBI:17234>
}
"""

query_results = rdf.query_results_as_dict(query_string)
print(type(query_results))
for k, v in query_results.items():
    print(k, v)


Output
<class 'dict'>
x ['https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004', 'https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022']
y ['http://biomodels.net/biology-qualifiers/is', 'http://biomodels.net/biology-qualifiers/is']

Results as a String

Demonstrate creating a sparql query in Python
import os
from pyomexmeta import RDF, eUriType

# get the link to teusink2000
teusink_biomod_link = r"https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml"

# download model xml, scan for rdf, create rdf graph and store in sqlite database
rdf = RDF.from_uri(teusink_biomod_link, syntax="rdfxml",
                   storage_type="sqlite", storage_name="TeusinkAnnotations2000",
                   storage_options="new='yes'")

# do a search for all annotations with glucode as resource: CHEBI:17234
query_string = """
SELECT ?x ?y
WHERE {
    ?x ?y <http://identifiers.org/obo.chebi/CHEBI:17234>
}
"""

results_formats = [
    "xml",
    "json",
    "table",
    "csv",
    "mkr",
    "tsv",
    "html",
    "turtle",
    "rdfxml",
]

for i in results_formats:
    print("Sparql results format: {}".format(i))
    print(rdf.query_results_as_string(query_string, results_syntax=i))
    print("\n\n")

Output
Sparql results format: xml
<?xml version="1.0" encoding="utf-8"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="x"/>
    <variable name="y"/>
  </head>
  <results>
    <result>
      <binding name="x"><uri>https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004</uri></binding>
      <binding name="y"><uri>http://biomodels.net/biology-qualifiers/is</uri></binding>
    </result>
    <result>
      <binding name="x"><uri>https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022</uri></binding>
      <binding name="y"><uri>http://biomodels.net/biology-qualifiers/is</uri></binding>
    </result>
  </results>
</sparql>




Sparql results format: json
{
  "head": {
    "vars": [ "x", "y" ]
  },
  "results": {
    "ordered" : false,
    "distinct" : false,
    "bindings" : [
      {
        "x" : { "type": "uri", "value": "https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004" },
        "y" : { "type": "uri", "value": "http://biomodels.net/biology-qualifiers/is" }
      },
      {
        "x" : { "type": "uri", "value": "https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022" },
        "y" : { "type": "uri", "value": "http://biomodels.net/biology-qualifiers/is" }
      }
    ]
  }
}




Sparql results format: table
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
===========================================================================================================================================================================
| uri<https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004> | uri<http://biomodels.net/biology-qualifiers/is> |
| uri<https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022> | uri<http://biomodels.net/biology-qualifiers/is> |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------




Sparql results format: csv
x,y
https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004,http://biomodels.net/biology-qualifiers/is
https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022,http://biomodels.net/biology-qualifiers/is




Sparql results format: mkr
result is relation with format = csv;
begin relation result;
x,y;
https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004,http://biomodels.net/biology-qualifiers/is;
https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022,http://biomodels.net/biology-qualifiers/is;
end relation result;




Sparql results format: tsv
?x	?y
<https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004>	<http://biomodels.net/biology-qualifiers/is>
<https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022>	<http://biomodels.net/biology-qualifiers/is>




Sparql results format: html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>SPARQL Query Results</title>
</head>
<body>
  <table id="results" border="1">
    <tr>
      <th>?x</th>
      <th>?y</th>
    </tr>
    <tr class="result">
      <td><span class="uri"><a href="https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004">https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004</a></span></td>
      <td><span class="uri"><a href="http://biomodels.net/biology-qualifiers/is">http://biomodels.net/biology-qualifiers/is</a></span></td>
    </tr>
    <tr class="result">
      <td><span class="uri"><a href="https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022">https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022</a></span></td>
      <td><span class="uri"><a href="http://biomodels.net/biology-qualifiers/is">http://biomodels.net/biology-qualifiers/is</a></span></td>
    </tr>
  </table>
  <p>Total number of rows: <span class="count">2</span>.</p>
</body>
</html>




Sparql results format: turtle
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rs:      <http://www.w3.org/2001/sw/DataAccess/tests/result-set#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

[]    rdf:type      rs:ResultSet ;
      rs:resultVariable  "x" ;
      rs:resultVariable  "y" ;
      rs:solution   [ rs:binding    [ rs:variable   "x" ;
                                      rs:value      <https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004>
                                    ] ; 
                      rs:binding    [ rs:variable   "y" ;
                                      rs:value      <http://biomodels.net/biology-qualifiers/is>
                                    ] 
      ] ;
      rs:solution   [ rs:binding    [ rs:variable   "x" ;
                                      rs:value      <https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022>
                                    ] ; 
                      rs:binding    [ rs:variable   "y" ;
                                      rs:value      <http://biomodels.net/biology-qualifiers/is>
                                    ] 
      ] .




Sparql results format: rdfxml
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rs="http://www.w3.org/2001/sw/DataAccess/tests/result-set#">
  <rs:ResultSet>
    <rs:resultVariable>x</rs:resultVariable>
    <rs:resultVariable>y</rs:resultVariable>
    <rs:solution>
      <rdf:Description>
        <rs:binding>
          <rdf:Description>
            <rs:value rdf:resource="https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000004"/>
            <rs:variable>x</rs:variable>
          </rdf:Description>
        </rs:binding>
        <rs:binding>
          <rdf:Description>
            <rs:value rdf:resource="http://biomodels.net/biology-qualifiers/is"/>
            <rs:variable>y</rs:variable>
          </rdf:Description>
        </rs:binding>
      </rdf:Description>
    </rs:solution>
    <rs:solution>
      <rdf:Description>
        <rs:binding>
          <rdf:Description>
            <rs:value rdf:resource="https://www.ebi.ac.uk/biomodels/model/download/BIOMD0000000064.2?filename=BIOMD0000000064_url.xml#metaid_0000022"/>
            <rs:variable>x</rs:variable>
          </rdf:Description>
        </rs:binding>
        <rs:binding>
          <rdf:Description>
            <rs:value rdf:resource="http://biomodels.net/biology-qualifiers/is"/>
            <rs:variable>y</rs:variable>
          </rdf:Description>
        </rs:binding>
      </rdf:Description>
    </rs:solution>
  </rs:ResultSet>
</rdf:RDF>