Introduction
We have created an ontology in OWL to represent a qualitative biological model in the domain of chromatin research. The model separates the biological model view from the text mining model view. We populate this ontology with instances created by an ontology using AIDA services and some others. The results are stored on the web as an owl file, and is stored in our Sesame repository. We want to be able to browse this populated ontology in Sesame using VBrowser.
Task
Provide SeRQL queries for VBrowser. I assume I need to map SeRQL queries to the folder and files view of VBrowser (correct me if I’m wrong).
Suggestions
1) Traditional
Folders: query producing class type objects
‘Files’: query producing instances, VBrowser can use their mime type for subsequent click actions.
2) Traditional+
Folders: query producing class type objects and anonymous classes to disclose properties.
Files: as 1
3) Upside down
Start with instances (like in Protege), not yet fully worked out this idea. May look at Protege for an example.
4) Follow Protege
Provide 3 views as starting point: Class, Property, Instance
5) Namespace -> Class -> (Domain) Instances -> Properties -> (Range) Instances
- Namespaces produced by a user [SeRQL]
SELECT DISTINCT namespace(c) AS "namespace"
FROM
{c} rdf:type {owl:Class}
WHERE
namespace(c) != rdf: AND namespace(c) != rdfs: AND namespace(c) != owl: AND namespace(c) != owl2: AND namespace(c) != xsd: AND namespace(c) != dc:AND namespace(c) != serql:
USING NAMESPACE
dc = <http://purl.org/dc/elements/1.1/>,
rdfs = <http://www.w3.org/2000/01/rdf-schema#>,
owl2xml = <http://www.w3.org/2006/12/owl2-xml#>,
Workflow = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/Workflow.owl#>,
xsd = <http://www.w3.org/2001/XMLSchema#>,
owl = <http://www.w3.org/2002/07/owl#>,
rdf = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>,
owl2 = <http://www.w3.org/2006/12/owl2#>,
Text = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/Text.owl#>,
TextMining = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/TextMining.owl#>,
BioModel = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/BioModel.owl#>,
BioAnnotations = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/BioAnnotations.owl#>,
Proto-ontology = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/>,
MappingBioTextMining = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/MappingBioTextMining.owl#>,
AIDA_Instances = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/AIDA_Instances.owl#>,
txt = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/TextMining.owl#>,
meth = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/TextMining.owl#>,
bio = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/BioModel.owl#>,
map = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/MappingBioTextMining.owl#>,
aida = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/AIDA_Instances.owl#>,
eg = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Enriched-ontology/ExampleInstances.owl#>,
proto = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/>,
inst = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Enriched-ontology/BioAID_Instances.owl#>- One level down:
Classes that have instances or classes and between brackets their number of instances.[SeRQL for 'bio' namespace']SELECT DISTINCT c AS "class"
FROM
{instance} rdf:type {c},
{c} rdf:type {owl:Class}
WHERE
namespace(c) = bio:
Notes: 1) obligatory ‘using namespace’ clause omitted, same as for query above; 2) couldnt figure out yet how to include class label and class comment cf the instance query below, such that it is robust for when there is no label or comment
- One level down (when ‘opening’ a class)
Instances of the class above[SeRQL for class 'Protein']
SELECT DISTINCT instance, label(first_label) AS "label", label(first_comment) AS "comment"
FROM
{instance} rdf:type {c}; rdfs:label {first_label}; rdfs:comment {first_comment},
{c} rdf:type {owl:Class}
WHERE
c = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/BioModel.owl#Protein> AND
first_label = ALL ( SELECT inst_label FROM {instance} rdfs:label {inst_label} ) AND
first_comment = ALL ( SELECT inst_comment FROM {instance} rdfs:comment {inst_comment} )
Notes: 1) obligatory ‘using namespace’ clause omitted, same as for namespace query above; 2) ‘WHERE’ clause ensure only the first comment and label is used when several exist, this query will fail when label or comment are missing!
- One level down (when ‘opening’ an instance)
Properties of the instance (possibly with range (classes) between brackets, and/or number of instances)[SeRQL for instance 'O70494']SELECT DISTINCT property, property_label, property_comment
FROM
{domain} property {range},
[{property} rdfs:label {property_label}],
[{property} rdfs:comment {property_comment}]
WHERE
(domain = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Enriched-ontology/BioAID_Instances.owl#O70494>) AND
namespace(property) != rdf: AND namespace(property) != rdfs: AND namespace(property) != owl: AND namespace(property) != owl2: AND namespace(property) != xsd: AND namespace(property) != serql:
Notes: 1) obligatory ‘using namespace’ clause omitted, same as for namespace query above; 2) label and comment provided in ‘raw’ form to prevent problems (couldn’t make it nicer yet). 3) this query omits the properties of which the range corresponds to the selected instance; this can be a substantial omission: it is simple to add the following phrase in the where clause, but I couldn’t yet work out how to deal with this at the next lower level: ‘OR
range = <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Enriched-ontology/BioAID_Instances.owl#O70494>'
- One level down (when ‘opening’ a property)
The instances at the range end of the property of the instance of the class.[SeRQL for proerty 'bio:isModelComponentOf']SELECT DISTINCT instance AS "range", label(first_label) AS "label", label(first_comment) AS "comment"Notes: 1) obligatory ‘using namespace’ clause omitted, same as for namespace query above.
FROM
{<http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Enriched-ontology/BioAID_Instances.owl#O70494>} <http://rdf.adaptivedisclosure.org/owl/BioAID/myModel/Proto-ontology/BioModel.owl#isModelComponentOf> {instance},
{instance} rdf:type {c}; rdfs:label {first_label}; rdfs:comment {first_comment},
{c} rdf:type {owl:Class}
WHERE
first_label = ALL ( SELECT inst_label FROM {instance} rdfs:label {inst_label} ) AND
first_comment = ALL ( SELECT inst_comment FROM {instance} rdfs:comment {inst_comment} )
- One level down (when ‘opening’ a property)
- One level down (when ‘opening’ an instance)
- One level down (when ‘opening’ a class)
- One level down:
0 responses so far ↓
You must log in to post a comment.