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 <$
> .
?resourceUri ei:ERO_0000070 <$
> .
?resourceUri rdfs:label ?resourceLabel .
OPTIONAL {
?resourceUri eiapp:resource_description ?resourceDescription .
?resourceUri <$
> ?lp1Value . <$
> eiapp:preferredLabel ?lp1Label .
?resourceUri <$
> ?op1ValueUri . ?op1ValueUri rdfs:label ?op1ValueLabel . <$
> eiapp:preferredLabel ?op1Label .
?resourceUri <$
> ?op2ValueUri . ?op2ValueUri rdfs:label ?op2ValueLabel . <$
> 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 {
<$
> eiapp:preferredLabel ?lp1Label .
<$
> eiapp:preferredLabel ?op1Label .
<$
> 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 <$
> .
?resourceUri ei:ERO_0000070 <$
> .
?resourceUri rdfs:label ?resourceLabel .
OPTIONAL {
?resourceUri eiapp:resource_description ?resourceDescription .
?resourceUri <$
> ?lp1Value .
?resourceUri <$
> ?op1ValueUri . ?op1ValueUri rdfs:label ?op1ValueLabel .
?resourceUri <$
> ?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
}