Vocabulary
Resource = a record of a "thing" in eagle-i. A resource is an instance of a class defined in the eagle-i ontology (e.g. "My nifty DNA Microarray" is an instance of the class "DNA MicroArray", which is a subclass of "Instrument")
Configuration
# General # What general type of resources we are dealing with baseType=http://purl.obolibrary.org/obo/ERO_0000071 # What organization are the resources "attached" to (all resources in eagle-i need to belong to an organization) virtualOrganization=http://harvard.eagle-i.net/i/xyz # What properties to show in the overview record # Literal properties (i.e. properties whose value is a simple string) lp1=http://purl.obolibrary.org/obo/ERO_0000480 # Object properties (i.e. properties whose value is a link to another resource or ontology term) op1=http://purl.obolibrary.org/obo/ERO_0001719 op2=http://purl.obolibrary.org/obo/ERO_0000078
========= More advanced version with open-ended lists, potentially using yaml (but need to get the syntax right
# What properties to show in the overview record # Literal properties (i.e. properties whose value is a simple string) literalProperties: propertyUri: http://purl.obolibrary.org/obo/ERO_0000480 # Object properties (i.e. properties whose value is a link to another resource or ontology term) objectProperties: propertyUri: http://purl.obolibrary.org/obo/ERO_0001719 propertyUri: http://purl.obolibrary.org/obo/ERO_0000078 # What properties to show on the left nav # What properties to filter on # => TBD with Richard
Queries
Query for base, unfiltered dataset:
Find all instances of baseType
affiliated with virtualOrganization
, returns a table with a column per query variable defined in property configuration above
Option 1 one query
PREFIX ei: <http://purl.obolibrary.org/obo/> PREFIX eiapp: <http://eagle-i.org/ont/app/1.0/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?resourceUri ?resourceLabel ?resourceDescription ?lp1Label ?lp1Value ?op1Label ?op1ValueLabel ?op1ValueUri ?op2Label ?op2ValueLabel ?op2ValueUri WHERE { ?resourceUri a <${baseType}> . ?resourceUri ei:ERO_0000070 <${virtualOrganization}> . ?resourceUri rdfs:label ?resourceLabel . OPTIONAL { ?resourceUri eiapp:resource_description ?resourceDescription . ?resourceUri <${lp1}> ?lp1Value . <${lp1}> eiapp:preferredLabel ?lp1Label . ?resourceUri <${op1}> ?op1ValueUri . ?op1ValueUri rdfs:label ?op1ValueLabel . <${op1}> eiapp:preferredLabel ?op1Label . ?resourceUri <${op2}> ?op2ValueUri . ?op2ValueUri rdfs:label ?op2ValueLabel . <${op2}> eiapp:preferredLabel ?op2Label . } }
Option 2 split in two queries (one for Ontology labels, one for instances) = > this may be preferable
Note that if desired props don't have preferred label we'll need to alter query 1
Query 1 => to be executed only once (labels don't change)
PREFIX eiapp: <http://eagle-i.org/ont/app/1.0/> SELECT ?lp1Label ?op1Label ?op2Label WHERE { OPTIONAL { <${lp1}> eiapp:preferredLabel ?lp1Label . <${op1}> eiapp:preferredLabel ?op1Label . <${op2}> eiapp:preferredLabel ?op2Label . } }
Query 2
PREFIX ei: <http://purl.obolibrary.org/obo/> PREFIX eiapp: <http://eagle-i.org/ont/app/1.0/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?resourceUri ?resourceLabel ?resourceDescription ?lp1Value ?op1ValueLabel ?op1ValueUri ?op2ValueLabel ?op2ValueUri WHERE { ?resourceUri a <${baseType}> . ?resourceUri ei:ERO_0000070 <${virtualOrganization}> . ?resourceUri rdfs:label ?resourceLabel . OPTIONAL { ?resourceUri eiapp:resource_description ?resourceDescription . ?resourceUri <${lp1}> ?lp1Value . ?resourceUri <${op1}> ?op1ValueUri . ?op1ValueUri rdfs:label ?op1ValueLabel . ?resourceUri <${op2}> ?op2ValueUri . ?op2ValueUri rdfs:label ?op2ValueLabel . } }
Example with substituted values (option 1)
PREFIX ei: <http://purl.obolibrary.org/obo/> PREFIX eiapp: <http://eagle-i.org/ont/app/1.0/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?resourceUri ?resourceLabel ?resourceDescription ?lp1Label ?lp1Value ?op1Label ?op1ValueLabel ?op1ValueUri ?op2Label ?op2ValueLabel ?op2ValueUri WHERE { ?resourceUri a <http://purl.obolibrary.org/obo/ERO_0000071> . ?resourceUri rdfs:label ?resourceLabel . OPTIONAL { ?resourceUri eiapp:resource_description ?resourceDescription . ?resourceUri <http://purl.obolibrary.org/obo/ERO_0000480> ?lp1Value . <http://purl.obolibrary.org/obo/ERO_0000480> eiapp:preferredLabel ?lp1Label . ?resourceUri <http://purl.obolibrary.org/obo/ERO_0001719> ?op1ValueUri . ?op1ValueUri rdfs:label ?op1ValueLabel . <http://purl.obolibrary.org/obo/ERO_0001719> eiapp:preferredLabel ?op1Label . ?resourceUri <http://purl.obolibrary.org/obo/ERO_0000078> ?op2ValueUri . ?op2ValueUri rdfs:label ?op2ValueLabel . <http://purl.obolibrary.org/obo/ERO_0000078> eiapp:preferredLabel ?op2Label . } }