Skip to content

Commit

Permalink
Merge f8ba8a2 into 9a71976
Browse files Browse the repository at this point in the history
  • Loading branch information
mboudet committed Sep 27, 2021
2 parents 9a71976 + f8ba8a2 commit 21a78e5
Show file tree
Hide file tree
Showing 10 changed files with 206 additions and 87 deletions.
10 changes: 1 addition & 9 deletions askomics/api/data.py
Expand Up @@ -5,7 +5,6 @@

from askomics.api.auth import api_auth
from askomics.libaskomics.SparqlQuery import SparqlQuery
from askomics.libaskomics.SparqlQueryLauncher import SparqlQueryLauncher

from flask import (Blueprint, current_app, jsonify, session)

Expand Down Expand Up @@ -40,14 +39,7 @@ def get_data(uri):
base_uri = current_app.iniconfig.get('triplestore', 'namespace_data')
full_uri = "<%s%s>" % (base_uri, uri)

raw_query = "SELECT DISTINCT ?predicat ?object\nWHERE {\n?URI ?predicat ?object\nVALUES ?URI {%s}}\n" % (full_uri)
federated = query.is_federated()
replace_froms = query.replace_froms()

sparql = query.format_query(raw_query, replace_froms=replace_froms, federated=federated)

query_launcher = SparqlQueryLauncher(current_app, session, get_result_query=True, federated=federated, endpoints=endpoints)
header, data = query_launcher.process_query(sparql)
data = query.get_uri_parameters(full_uri, endpoints)

except Exception as e:
current_app.logger.error(str(e).replace('\\n', '\n'))
Expand Down
10 changes: 7 additions & 3 deletions askomics/libaskomics/BedFile.py
Expand Up @@ -218,6 +218,7 @@ def generate_rdf_content(self):

# Strand
strand = False
strand_type = None
if feature.strand == "+":
self.category_values["strand"] = {"+", }
relation = self.namespace_data[self.format_uri("strand")]
Expand All @@ -226,6 +227,7 @@ def generate_rdf_content(self):
self.faldo_abstraction["strand"] = relation
self.graph_chunk.add((entity, relation, attribute))
strand = True
strand_type = "+"
elif feature.strand == "-":
self.category_values["strand"] = {"-", }
relation = self.namespace_data[self.format_uri("strand")]
Expand All @@ -234,6 +236,7 @@ def generate_rdf_content(self):
self.faldo_abstraction["strand"] = relation
self.graph_chunk.add((entity, relation, attribute))
strand = True
strand_type = "-"
else:
self.category_values["strand"] = {".", }
relation = self.namespace_data[self.format_uri("strand")]
Expand All @@ -242,17 +245,18 @@ def generate_rdf_content(self):
self.faldo_abstraction["strand"] = relation
self.graph_chunk.add((entity, relation, attribute))
strand = True
strand_type = "."

if strand:
if "strand" not in attribute_list:
attribute_list.append("strand")
if ("strand", strand_type) not in attribute_list:
attribute_list.append(("strand", strand_type))
self.attribute_abstraction.append({
"uri": self.namespace_data[self.format_uri("strand")],
"label": rdflib.Literal("strand"),
"type": [self.namespace_internal[self.format_uri("AskomicsCategory")], rdflib.OWL.ObjectProperty],
"domain": entity_type,
"range": self.namespace_data[self.format_uri("{}Category".format("strand"))],
"values": ["+", "-", "."]
"values": [strand_type]
})

# Score
Expand Down
11 changes: 7 additions & 4 deletions askomics/libaskomics/GffFile.py
Expand Up @@ -196,7 +196,7 @@ def generate_rdf_content(self):
faldo_strand = None
faldo_start = None
faldo_end = None

strand_type = None
# Entity
if not feature.id:
if "ID" not in feature.qualifiers.keys():
Expand Down Expand Up @@ -286,30 +286,33 @@ def generate_rdf_content(self):
attribute = self.namespace_data[self.format_uri("+")]
faldo_strand = self.get_faldo_strand("+")
self.faldo_abstraction["strand"] = relation
strand_type = "+"
# self.graph_chunk.add((entity, relation, attribute))
elif feature.location.strand == -1:
self.category_values["strand"] = {"-", }
relation = self.namespace_data[self.format_uri("strand")]
attribute = self.namespace_data[self.format_uri("-")]
faldo_strand = self.get_faldo_strand("-")
self.faldo_abstraction["strand"] = relation
strand_type = "-"
# self.graph_chunk.add((entity, relation, attribute))
else:
self.category_values["strand"] = {".", }
relation = self.namespace_data[self.format_uri("strand")]
attribute = self.namespace_data[self.format_uri(".")]
faldo_strand = self.get_faldo_strand(".")
self.faldo_abstraction["strand"] = relation
strand_type = "."

if (feature.type, "strand") not in attribute_list:
attribute_list.append((feature.type, "strand"))
if (feature.type, "strand", strand_type) not in attribute_list:
attribute_list.append((feature.type, "strand", strand_type))
self.attribute_abstraction.append({
"uri": self.namespace_data[self.format_uri("strand")],
"label": rdflib.Literal("strand"),
"type": [self.namespace_internal[self.format_uri("AskomicsCategory")], rdflib.OWL.ObjectProperty],
"domain": entity_type,
"range": self.namespace_data[self.format_uri("{}Category".format("strand"))],
"values": ["+", "-", "."]
"values": [strand_type]
})

# Qualifiers (9th columns)
Expand Down
72 changes: 72 additions & 0 deletions askomics/libaskomics/SparqlQuery.py
Expand Up @@ -444,6 +444,78 @@ def set_graphs_and_endpoints(self, entities=None, graphs=None, endpoints=None):
self.endpoints = Utils.unique(self.endpoints)
self.federated = len(self.endpoints) > 1

def get_uri_parameters(self, uri, endpoints):
"""Get parameters for a specific data URI
Parameters
----------
uri : string
URI to search
Returns
-------
dict
The corresponding parameters
"""
raw_query = '''
SELECT DISTINCT ?predicate ?object ?faldo_value ?faldo_uri
WHERE {{
?URI ?predicate ?object .
?URI a ?entitytype .
FILTER(! STRSTARTS(STR(?predicate), STR(askomics:)))
OPTIONAL {{
?faldo_uri rdfs:domain ?entitytype .
?faldo_uri rdfs:label ?attribute_label .
OPTIONAL {{
?object faldo:begin/faldo:position ?faldo_value .
?faldo_uri rdf:type askomics:faldoStart
}}
OPTIONAL {{
?object faldo:end/faldo:position ?faldo_value .
?faldo_uri rdf:type askomics:faldoEnd
}}
OPTIONAL {{
?object faldo:begin/faldo:reference/rdfs:label ?faldo_value .
?faldo_uri rdf:type askomics:faldoReference
}}
OPTIONAL {{
?object faldo:begin/rdf:type ?Gene1_strandCategory .
?Gene1_strand_faldoStrand a ?Gene1_strandCategory .
?Gene1_strand_faldoStrand rdfs:label ?faldo_value .
?faldo_uri rdf:type askomics:faldoStrand .
}}
VALUES ?predicate {{faldo:location}}
}}
VALUES ?URI {{{}}}
}}
'''.format(uri)

federated = self.is_federated()
replace_froms = self.replace_froms()

raw_query = self.prefix_query(raw_query)

sparql = self.format_query(raw_query, replace_froms=replace_froms, federated=federated)

query_launcher = SparqlQueryLauncher(self.app, self.session, get_result_query=True, federated=federated, endpoints=endpoints)
_, data = query_launcher.process_query(sparql)

formated_data = []
for row in data:
formated_data.append({
'predicate': row['faldo_uri'] if row.get('faldo_uri') else row['predicate'],
'object': row['faldo_value'] if row.get('faldo_value') else row['object'],
})

return formated_data

def format_sparql_variable(self, name):
"""Format a name into a sparql variable by remove spacial char and add a ?
Expand Down
2 changes: 1 addition & 1 deletion askomics/react/src/routes/data/data.jsx
Expand Up @@ -61,7 +61,7 @@ class Data extends Component {
let uri = this.props.match.params.uri;

let columns = [{
dataField: 'predicat',
dataField: 'predicate',
text: 'Property',
sort: true,
formatter: (cell, row) => {
Expand Down
8 changes: 0 additions & 8 deletions tests/results/abstraction.json
Expand Up @@ -42,10 +42,6 @@
{
"label": "-",
"uri": "http://askomics.org/test/data/-"
},
{
"label": ".",
"uri": "http://askomics.org/test/data/."
}
],
"entityUri": "http://askomics.org/test/data/gene",
Expand Down Expand Up @@ -76,10 +72,6 @@
{
"label": "-",
"uri": "http://askomics.org/test/data/-"
},
{
"label": ".",
"uri": "http://askomics.org/test/data/."
}
],
"entityUri": "http://askomics.org/test/data/transcript",
Expand Down
54 changes: 0 additions & 54 deletions tests/results/data.json

This file was deleted.

62 changes: 62 additions & 0 deletions tests/results/data_full.json
@@ -0,0 +1,62 @@
{
"data":[
{
"object":"3267835",
"predicate":"http://askomics.org/test/data/start"
},
{
"object":"3270883",
"predicate":"http://askomics.org/test/data/end"
},
{
"object":"At3",
"predicate":"http://askomics.org/test/data/chromosomeName"
},
{
"object":"At3",
"predicate":"http://askomics.org/test/data/reference"
},
{
"object":"plus",
"predicate":"http://askomics.org/test/data/strand"
},
{
"object":"+",
"predicate":"http://askomics.org/test/data/strand"
},
{
"object":"protein_coding",
"predicate":"http://askomics.org/test/data/biotype"
},
{
"object":"http://askomics.org/test/data/gene",
"predicate":"http://askomics.org/test/data/featureType"
},
{
"object":"label_AT3G10490",
"predicate":"http://www.w3.org/2000/01/rdf-schema#label"
},
{
"object":"2000-01-01",
"predicate":"http://askomics.org/test/data/date"
},
{
"object":"http://askomics.org/test/data/transcript",
"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
},
{
"object":"ANAC052",
"predicate":"http://askomics.org/test/data/featureName"
},
{
"object":"http://askomics.org/test/data/Arabidopsis_thaliana",
"predicate":"http://askomics.org/test/data/taxon"
},
{
"object":"NAC_domain_containing_protein_52_[Source:TAIR%3BAcc:AT3G10490]",
"predicate":"http://askomics.org/test/data/description"
}
],
"error":false,
"errorMessage":""
}
54 changes: 54 additions & 0 deletions tests/results/data_public.json
@@ -0,0 +1,54 @@
{
"data":[
{
"object":"3267835",
"predicate":"http://askomics.org/test/data/start"
},
{
"object":"3270883",
"predicate":"http://askomics.org/test/data/end"
},
{
"object":"At3",
"predicate":"http://askomics.org/test/data/chromosomeName"
},
{
"object":"plus",
"predicate":"http://askomics.org/test/data/strand"
},
{
"object":"protein_coding",
"predicate":"http://askomics.org/test/data/biotype"
},
{
"object":"http://askomics.org/test/data/gene",
"predicate":"http://askomics.org/test/data/featureType"
},
{
"object":"label_AT3G10490",
"predicate":"http://www.w3.org/2000/01/rdf-schema#label"
},
{
"object":"2000-01-01",
"predicate":"http://askomics.org/test/data/date"
},
{
"object":"http://askomics.org/test/data/transcript",
"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
},
{
"object":"ANAC052",
"predicate":"http://askomics.org/test/data/featureName"
},
{
"object":"http://askomics.org/test/data/Arabidopsis_thaliana",
"predicate":"http://askomics.org/test/data/taxon"
},
{
"object":"NAC_domain_containing_protein_52_[Source:TAIR%3BAcc:AT3G10490]",
"predicate":"http://askomics.org/test/data/description"
}
],
"error":false,
"errorMessage":""
}

0 comments on commit 21a78e5

Please sign in to comment.