SeS project team WHOI CSCI-6962-01 2009

From Semantic Portal Wiki

Jump to: navigation, search

Contents

Demonstration

Use case

Given the name of a vent field, provide relevant People, Publications, Cruises, Dives/Lowerings, and Data Library Holdings so that the researcher can prepare for her Cruise to the vent field.

user queries:

  • use text search against first column in vent_fields.xls
  • provide KML (optional for iteration)

Provide a hot vent scientist (or any user) with relevant information to a chosen hot vent field. For iteration 1, this relevant information includes: related publications (on discovery, et al. if provided by spreadsheet), related people (authors of related articles, crew members of visiting deployments), highlight images, representative image, and links related to visiting deployments (Alvin FrameGrabber Cruise Page, Alvin Dive FrameGrabber, Jason Virtual Van Cruise Page, Jason Virtual Van for Entire

Cruise, start of lowering in Jason Virtual Van).


Possible failures

  • User can not find vent field
  • No information on vent field page
  • Inference does not occur

Resources

  • http://4dgeo.whoi.edu/alvin/ - Alvin Framegrabber
    • System: www; Received on: 3 Nov 2009
    • Lists cruises on which Alvin dove. Exemplar cruise page: AT15-47 lists all dives during the cruise. Page may offer a link to the "snapshot" for each dive. Exemplar snapshot page: dive 4001
  • http://4dgeo.whoi.edu/jason/ - Jason Virtual Control Van
    • System: www; Received on: 3 Nov 2009
    • Lists cruises on which JASON dove. Exemplar cruise page: rb-09-05_2 lists all lowerings during the cruise. Page may offer a link to the "Virtual Control Van" for the entire cruise. Exemplar shapshot page: [1]. Table at bottom lists details about the lowering. Exemplar table: rb-09-05_2
  • Data_Invent-mediatype.xls
    • System: bottom right drawer; Received on: 3 Nov 2009
    • Lists Data Library Holdings - physical artifacts that come back from the cruise to WHOI's physical library.
  • hot_vent_fields_ss.xls ==> hot_vent_fields_ss_5columns.xls ==> vent_fields_ss_6columns.xls
    • System: bottom right drawer; Received on: 5? Nov 2009
    • 6 columns: vent field name, vent field description, lat, long, depth, citations
    • From Stace via Andy; in our Drop Box. Columns of interest: lat/long.
  • Alvin Vehicle and Navigation Attitude cgi
    • System: www cgi; Received on: 6 Nov 2009
    • takes cruiseID and diveID, gives "Vehicle Navigation Attitude"
      • aka "Dive state", "Dive trajectory"
    • useful for selecting the correct video frames that are near vent field (instead of grabbing the first on-the-way frames).
    • http://4dgeo.whoi.edu/om-bin/fg_export?cruiseID=AT15-34&dive=4409
      • :dive_4409 vent:diveID "4409"; vent:deployedFrom :cruise_AT15-34 . #from OM.Alvin.AT15-34.txt.ttl
      • :cruise_AT15-34 vent:cruiseID "AT15-34" . # from AT15-34.html.tidy.any.ttl
  • JASON Vehicle and Navigation Attitude cgi

Not using:

Components

Team member roles:

Activity Eric Selcuk Tim Yongmei
Use case - narrative primary sup sup sup
Use case - sparql sketches primary sup primary sup
UI - map sup primary
UI - sparql execution sup primary
Data - RDFization of data sup primary sup
Data - cruiseID mentions in publications sup primary
Data - foaf:based_near sup sup primary
Ontology primary sup sup

(sup := support)

Triad: SPARQL-centered development of use case, data, and ontology.

UI

Page 2 Content Mapping

The first thing at the top of the page is the hot vent field name.

The next item is the representative image chosen for that hot vent field.

Next we get into the content addressed in the use case.

For related people, we use the Related People query found below to populate a box listing the name, role and contact email of the person.

For related publications, we use the Related Publications query found below to populate a box listing a citation. This citation should either represent a link, or we should include a link to the paper in the box if it is available.

For related deployments, we use the Related Deployments query found below to populate a box listing the type of deployment, the deployment ID, the vehicle used, and a link to the deployment, which points to a different thing depending on the type of deployment.

The query first checks if there is an Alvin Frame Grabber link (given by the snapshotURL datatype property). Only dives should have such a link.

The query then checks if there is a Virtual Control Van link (given by the virtualControlVanURL datatype property). Only cruises which deployed lowerings will have such a link. Also, since there is no other link that represents an individual lowering, a lowering is given the virtualControlVanURL, thus all lowerings from the same cruise are given the same link.

We can leave it at this, and for any deployment that does not have a link defined above, the field is left empty. However, we could adopt the default conditions outlined below:

For any dive that does not have an Alvin Frame Grabber URL, a link will be provided to the Alvin Frame Grabber start page (where you can search through cruises). For any lowering that does not have a virtualControlVanURL, a link will be provided to the Virtual Control Van start pages (similar to dives). For any cruises that do not have a Virtual Van URL (all cruises that deployed dives fall into this category), a link will be provided to either the Frame Grabber start page or the VCV start page if it has any sub deployments (dives go to Frame Grabber, lowerings go to VCV). If the cruise has no sub-deployments, then a link to the 4dgeo home page will do.

Map

Here is how we can set the terrain view on the google maps java script:

http://code.google.com/apis/maps/documentation/introduction.html

 var map;

 function initialize() {

   if (GBrowserIsCompatible()) {

     map = new GMap2(document.getElementById("map_canvas"));

     map.setMapType(G_SATELLITE_MAP);
     map.setCenter(new GLatLng(37.4419, -122.1419), 13);

   }
 }
   
 function animate() {    

   map.panTo(new GLatLng(37.4569, -122.1569));

 }

Executing a sparql query from javascript

Ontology

  • A dive/lowering has links to highlight images, (highlight images are a subset of all images taken in a dive).
    • hasHighlightImage rdfs:subPropertyOf hasGrabbedImage
  • hot vents have representative image

Related Publications

A hot vent field should be associated with any publication that mentions either the vent field directly, or mentions some type of deployment that visited that vent field. First I created the HotVentField class to represent any hot vent field. I created the Publication class to represent any publication. This is the first case where the need for OWL comes in. Ideally a Publication would have exactly one citation, and at least one author. With the cardinality restrictions of OWL, we can handle this. The hasCitation datatype property was created and Publication was restricted to have exactly one citation (string). The Author class was created (talked about more in related people) and Publication was restricted to have at least one author. Lastly, a link property between hot vent fields and publications was created, named referencedByPublication. Note that (incase we would like to go beyond the vent spreadsheet in searching for publication) Deployment is also part of the domain for referencedByPublication. There is also a property chain that infers, any publication associated with a deployment that visits a hot vent field is also associated with the hot vent field. Thus, as long as we can parse the spreadsheet citations and can find hot vent field or deployment identifiers in the bibliography papers, the link between hot vent fields and publications is covered by the ontology. There is also a property linking HotVentField and a Publication that was a publication of the discovery of the hot vent field, named hasDiscoveryPublication.

Related People

A hot vent field should also be associated with (and provide contact info for) a number of different types of people. Thus, a Person class was created, and two foaf properties, foaf:name and foaf:mbox, were created as well. A cardinality restriction was placed on Person, requiring a foaf:name. One of the types of people that should be associated with the hot vent field are authors, and thus a subclass of Person called author was created. An inverse property of the property stated in Related Publications was created to associate an author with publications and a cardinality restriction stated that an Author must have at least one Publication. Some of the other types of people that have to be associated with hot vent fields are pilots and observers (of deployment dives) and chief scientists (of deployment cruises). Subclasses of Person for Pilot, Observer, and ChiefScientist were created. Subclasses of Deployment were created to represent deployment cruises (DeploymentCruise) and deployments from cruises (CruiseDeployments), which include DeploymentDive and DeploymentLowering. Properties were created to link pilots, observers, and chief scientists to the deployments they worked on. Thus as long as Authors can be associated with Publications related to a hot vent field (addressed in the related publications paragraph) and Pilots, Observers, and ChiefScientists can be associated with Deployments that are associated with

to consider

make:

vent:based_near
  a rdf:Property;
  rdfs:subPropertyOf foaf:based_near;
  rdfs:comment "foaf:based_near is very broad; we have a more specific notion of what it means for a {VehicleNavigationAndAttitude, Dive, Cruise} to be near a vent:VentField.";
.

Queries

http://localhost:2020/sparql.html via Configuring Joseki + Pellet + TDB

OPTIONAL functionality: Role that the person served.

SeS_project_team_WHOI_CSCI-6962-01_2009#Namespaces_used_and_prefix_conventions

Use case queries that work

prefix owl:   <http://www.w3.org/2002/07/owl#>
prefix foaf:    <http://xmlns.com/foaf/0.1/>
prefix vent:    <http://escience.rpi.edu/schemas/whoi_vents.owl#>
prefix data:    <http://4dgeo.whoi.edu/data/>
prefix ventxls: <http://4dgeo.whoi.edu/data/CSVtoRDF_7ccad328-899c-4056-a9d6-2b19c9ecd507/>

select distinct ?person ?name ?type ?mbox
where {
  ventxls:thing_298 a vent:VentField; 
              vent:relatedPerson ?person .
 optional { ?person foaf:name ?name }
 optional { ?person foaf:mbox ?mbox }

 ?person a ?type .
   filter(?type != vent:Person)
   filter(?type != owl:Thing)

} order by ?type ?name

New queries to satisfy use case

# Related People
select ?name ?role ?email
where {
  ?hotVentURI vent:relatedPerson ?person .
  ?person
     foaf:name ?name;
     foaf:mbox ?emal;
     rdf:type ?class .
  ?class dc:title ?role .
}
# Related Publications
select ?citation ?url
where {
  ?hotVentURI vent:referencedBy ?publication .
  ?publication
     vent:hasCitation ?citation;
     vent:hasPublicationURL ?url .
}
# Related Deployments
# Please note, I'm not much of a SPARQLer, so 
# I have no idea how conditional blocks work (if at all)
select ?type ?id ?vehicle ?url
where {
  ?hotVentURI vent:visitedBy ?deployment .
  ?deployment rdf:type ?class .
  ?class dc:title ?type .
  ?deployment vent:hasDeploymentID ?id .
  ?deployment vent:hasVehicle ?vehicle . #note, no consistent way of getting a string from this
                                         #(DSV_Alvin and DSV_Jason do not have dc:title values)
  ?deployment vent:snapshotURL ?link .
  ?deployment vent:virtualControlVan ?link .
}

Queries to satisfy use case

Provide related person contact information

# From the use case perspective:
select distinct ?person ?name ?email
where
{
   ?person vent:affiliatedWith data:vent_43;
           foaf:name ?name .
   OPTIONAL { ?person vent:hasContactEmail ?email }
}
order by ?name


# From the ontology+data perspective:
select distinct ?person ?name
where
{
   { # PILOT to vent field
      ?person
         vent:piloted ?dive;
         p:p ?vent;
         foaf:name ?name . 
      ?vent vent:pilot ?person .
   }
   UNION { # AUTHOR: In case inference is not implemented
       ?person  foaf:publications            ?paper .
       ?vent    vent:referencedByPublication ?paper . # TODO: triple does not exist yet.
   }
   UNION { # AUTHOR: Benefits from inference
       ?person  foaf:publications            ?paper .
       ?vent    vent:referencedByPublication ?paper . # TODO: triple does not exist yet.
   }
}
order by ?name


  1. publication to Cruise is asserted.
  2. hot vent associated to publication is inferred.

Supplemental/incremental queries

Visited vent fields (101/500ish)

select distinct ?vent
where
{ 
   ?deployment vent:navigatedWithinHalfKmOf ?vent .
}

Deployments that visited same vent field

select * 
where { 
  ?deployment a vent:Deployment;
    vent:navigatedWithinHalfKmOf ?vent .
  ?deployment2 a vent:Deployment;
    vent:navigatedWithinHalfKmOf ?vent .
  filter(?deployment != ?deployment2)
}
order by ?deployment ?deployment2 ?vent


Crew-type people involved in collecting data for a Dive/Lowering/Cruise

status:Manageable
select distinct ?pilot ?pilotname
where
{ 
   ?resource bco:pilotedBy ?pilot .
   OPTIONAL {?pilot foaf:name ?pilotname .}
}
order by ?pilot
tdbquery --loc=tdb-db-dir --query=rq/dive-people.rq
----------------------------------------------------------------------------
| pilot                                            | pilotname             |
============================================================================
| <http://4dgeo.whoi.edu/data/Anthony_Tarantino>   | "Anthony Tarantino"   |
| <http://4dgeo.whoi.edu/data/B._Strickrott>       | "B. Strickrott"       |
| <http://4dgeo.whoi.edu/data/B._Waters>           | "B. Waters"           |
| <http://4dgeo.whoi.edu/data/Blee_Williams>       | "Blee Williams"       |
| <http://4dgeo.whoi.edu/data/Bob_Water>           | "Bob Water"           |
| <http://4dgeo.whoi.edu/data/Bob_Waters>          | "Bob Waters"          |
| <http://4dgeo.whoi.edu/data/Bruce_Strickrott>    | "Bruce Strickrott"    |
| <http://4dgeo.whoi.edu/data/C._Van_Dover>        | "C. Van Dover"        |
| <http://4dgeo.whoi.edu/data/D._Foster>           | "D. Foster"           |
| <http://4dgeo.whoi.edu/data/Dave_Walter>         | "Dave Walter"         |
| <http://4dgeo.whoi.edu/data/Dudley_Foster>       | "Dudley Foster"       |
| <http://4dgeo.whoi.edu/data/Gavin_Epard>         | "Gavin Epard"         |
| <http://4dgeo.whoi.edu/data/Gavin_Eppard>        | "Gavin Eppard"        |
| <http://4dgeo.whoi.edu/data/M._Spear>            | "M. Spear"            |
| <http://4dgeo.whoi.edu/data/MArk_Spear>          | "MArk Spear"          |
| <http://4dgeo.whoi.edu/data/Mark_Oscar_Spear>    | "Mark Oscar Spear"    |
| <http://4dgeo.whoi.edu/data/Mark_Spear>          | "Mark Spear"          |
| <http://4dgeo.whoi.edu/data/P._Forte>            | "P. Forte"            |
| <http://4dgeo.whoi.edu/data/P._Hickey>           | "P. Hickey"           |
| <http://4dgeo.whoi.edu/data/Pat_HIckey>          | "Pat HIckey"          |
| <http://4dgeo.whoi.edu/data/Pat_Hickey>          | "Pat Hickey"          |
| <http://4dgeo.whoi.edu/data/Patrick_Hickey>      | "Patrick Hickey"      |
| <http://4dgeo.whoi.edu/data/Paul_Tibbetts>       | "Paul Tibbetts"       | 
| <http://4dgeo.whoi.edu/data/Phil_Forte>          | "Phil Forte"          |
| <http://4dgeo.whoi.edu/data/R._Grieve>           | "R. Grieve"           |
| <http://4dgeo.whoi.edu/data/R._Williams>         | "R. Williams"         |
| <http://4dgeo.whoi.edu/data/Ralph_Hollis>        | "Ralph Hollis"        |
| <http://4dgeo.whoi.edu/data/S._Faluotico>        | "S. Faluotico"        |
| <http://4dgeo.whoi.edu/data/Seam_Kelley>         | "Seam Kelley"         |
| <http://4dgeo.whoi.edu/data/Sean_Kelley>         | "Sean Kelley"         |
| <http://4dgeo.whoi.edu/data/Sean_kelley>         | "Sean kelley"         |
| <http://4dgeo.whoi.edu/data/T._Conners>          | "T. Conners"          |
| <http://4dgeo.whoi.edu/data/Tony_Tarantino>      | "Tony Tarantino"      |
| <http://4dgeo.whoi.edu/data/W._Bruce_Strickrott> | "W. Bruce Strickrott" |
----------------------------------------------------------------------------

Authors of publications discuss results from a Dive/Lowering/Cruise

status:UNKNOWN

List of diveID/loweringID and cruiseID from which they were deployed

  • queries/incremental-queries/jason_nav-cgi-inputs.rq
  • queries/incremental-queries/fg_export-inputs.rq

applied to

  • data/4dgeo.who.edu.rdf

provides the list of publication search terms, listed at:

  • data/4dgeo.whoi.edu/alvin-cruiseIDs-diveIDs.csv
  • data/4dgeo.whoi.edu/jason-cruiseIDs-loweringIDs.csv

Data

RDF data currently comprises 28,856 triples (3.7 MB rdf/xml serialization).

Data RDF-ization # triples file size (rdf/xml)
4dgeo.whoi.edu/Alvin.html.ttl.rdf 8,292 800 kb
4dgeo.whoi.edu/Alvin.txt.ttl.rdf 12,761 1.2 Mb
4dgeo.whoi.edu/Jason-cruise.html.ttl.rdf 689 72 kb
4dgeo.whoi.edu/Jason.txt.ttl.rdf 948 100 kb
4dgeo.whoi.edu/Jason-lowering.html.ttl 5,461 600 kb
Alvin Vehicle Navigation and Attitude 4dgeo.whoi.edu/fg_export.cgi.csv.ttl.rdf 5.5 million 315 Mb
JASON Vehicle Navigation and Attitude N/A N/A N/A

Data overview diagram

DropBox/doc/VehicleNavigationAndAttitude.pdf shows an overview of the data that we have.

Few notes:

  • Pirate ship is b/c we don't know the Vessel for Alvin cruises (we do know the Vessel for Jason cruises)
    • Alvin history is here -- http://www.whoi.edu/page.do?pid=10737 . Alvin has been deployed from the following tenders (host ships) -- Lulu (1966-1982), Atlantis II (1983 - 1996) and Atlantis (1996 - present) -- A. Maffei
  • Don't get scared by time:hasBeginning, it is "vent:hasStartTime" now, but I want to keep it here to present to others our abortion of owl time ontology.
  • Alvin has pilots, observers for each dive and a chief scientist for the cruise from which Alvin dove. Jason only has chief scientists of cruises from which it dove.

Artifact types

  • Alvin index page
    • Alvin cruise page
    • Alvin att-val txt file
  • Jason index page
    • Jason cruise page
    • Jason att-val txt file
    • Jason lowering html table
  • Vent field spreadsheet

Alvin Vehicle Navigation Attitude cgi

Here's a link to export the Alvin Frame-Grabber data for dives.

  http://4dgeo.whoi.edu/om-bin/fg_export?cruiseID=AT15-34&dive=4409

If you specify the URL with no parameters it will give you the full usage. Most likely, all you will need to specify is the cruiseID and dive number (as shown above). By default, it will export the following fields as comma-separated records:

EIC.time,EIC.lat,EIC.lon,EIC.x,EIC.y,DAQ.g,DAQ.p,DAQ.r,DAQ.a,EIC.depth,DAQ.da where time is yyyy/mm/dd hh:mm:ss

    lat/lon is in decimal degrees
    x/y     is in alvin coordinates
    DAQ.g   is heading in degrees
    DAQ.p   is pitch in degrees
    DAQ.r   is roll in degrees
    DAQ.a   is altitude above bottom in meters
    depth   is depth in meters
    DAQ.da  is depth + altitude (ie; full bottom depth)
    • What do the fields mean?
      • EIC fields for csv that cgi script returns are described in WHOI-2001-13.pdf pg 54
      • EIC is core
      • DAQ is some sort of acquisition
      • EIC dictionary vs DAQ dictionary (they correspond to namespaces for vocabularies)
        • EIC.time
      • EIC.lat: N is positive, E is positive
      • EIC.lon
      • EIC.x - position in the local coordinate system (using beacons and stuff)
      • EIC.y - same as above
      • DAQ.g - TODO: Andy find and provide DAQ dictionary.
        • Andy: Asked Steve Lerner for this. Taking awhile to find it.
      • DAQ.p
      • DAQ.r
      • DAQ.a
      • EIC.depth - in meters
      • DAQ.da
    • How will we map the csv rows to RDF?
      • rows become instances of VehicleNavigationandAttitude
      • onProperty hasImageURL
      • HighlightNavigationandAttitude rdfs:subClassOf VehicleNavigationandAttitude .
      • how does Dive associate to a VehicleNavigationandAttitude?
      • when processing csv from cgi, add vertabim colums, column for imageURL, and link to diveID.
      • a Dive needs to have a hasHighlightImage (disconnect from cgi table to Dive)
      • VehicleNavigationandAttitude with a vent field.
Goofy values
I don't mind that values are missing, my concern is that values that are usually 
doubles no longer conform to double formats when other values are missing. (e.g., 0*3B and 0*3F)
  Unfortunately that's what we sometimes get as real-time data
and we have to handle it. In this case, the navigation system
died while on the dive and the frame-grabber kept going logging
what it could.
   So from your standpoint, you have some options...as you mentioned,
one approach is to check if the row is complete (i.e., all data
elements are present). Beware that occasionally an instrument might not
output some data. You could also do some sanity check such as valid
latitude/longitude or on particular columns you are interested in.
Ideally, you'd like to make this as general and robust as possible
as I suspect you may run into similar problems on other cruises/dives.

National Deep Submergence Facility Bibliography

Dropbox under /data/dlaweb.whoi.edu/

  • Alvin_cruiseIDs_publication.ttl: publications found by using cruiseIDs as keyword
  • Jason_cruiseIDs_publication.ttl: publications found by using cruiseIDs as keyword
  • Alvin_diveIDs_publication.ttl: publications found by using "Alvin", "dive", and diveIDs as keywords
  • publication.ttl: metadata of publications, which include author, title and etc.

When I used loweringIDs as the keyword, no hit was found. Therefore no result file was generated.


parsing authors

In dropbox://data/publications.ttl,

TODO:

data:http://4dgeo.whoi.edu/data/publication_1012

should be

data:publication_1012

TODO: Can you parse out the authors?

data:publication_1012
   vent:pubAuthor "J. R. Delaney, V. Robigou, R. E. McDuff and M. K. Tivey" ;
   vent:pubDOI "10.1029/92JB00174" ;
   vent:pubISSN "0148-0227" ;
   vent:pubJournal "Journal of Geophysical Research" ;
   vent:pubNotes "HOV Alvin (Human Occupied Vehicle)" ;
   vent:pubPages "19,663-19,682" ;
   vent:pubRecord_Number "1012" ;
   vent:pubReference_Type "Journal Article" ;
   vent:pubShort_Title "Geology of a vigorous hydrothermal system on the Endeavour Segment, Juan de Fuca Ridge" ;
   vent:pubTitle "Geology of a vigorous hydrothermal system on the Endeavour Segment, Juan de Fuca Ridge" ;
   vent:pubURL "http://dx.doi.org/10.1029/92JB00174" ;
   vent:pubVolume "97" ;
   vent:pubYear "1992" ;
.

would become

data:publication_1012
   vent:pubAuthor data:publication_1012_author1, data:publication_1012_author2, data:publication_1012_author3, data:publication_1012_author4;
   vent:pubDOI "10.1029/92JB00174" ;
   vent:pubISSN "0148-0227" ;
   vent:pubJournal "Journal of Geophysical Research" ;
   vent:pubNotes "HOV Alvin (Human Occupied Vehicle)" ;
   vent:pubPages "19,663-19,682" ;
   vent:pubRecord_Number "1012" ;
   vent:pubReference_Type "Journal Article" ;
   vent:pubShort_Title "Geology of a vigorous hydrothermal system on the Endeavour Segment, Juan de Fuca Ridge" ;
   vent:pubTitle "Geology of a vigorous hydrothermal system on the Endeavour Segment, Juan de Fuca Ridge" ;
   vent:pubURL "http://dx.doi.org/10.1029/92JB00174" ;
   vent:pubVolume "97" ;
   vent:pubYear "1992" ;
.
data:publication_1012_author1 foaf:name "J. R. Delaney" .
data:publication_1012_author2 foaf:name "V. Robigou" .
data:publication_1012_author3 foaf:name "R. E. McDuff" .
data:publication_1012_author4 foaf:name "M. K. Tivey" .

This way we could assert

data:John_Delaney  owl:sameAs data:publication_1012_author1 .
data:Maurice_Tivey owl:sameAs data:publication_1012_author4 .
  • data:John_Delaney is mentioned in Alvin.html.ttl.rdf and Alvin.txt.ttl.rdf
  • data:Maurice_Tivey is mentioned in Jason-cruise.html.ttl.rdf and Jason.txt.ttl.rdf

TODO: escape double quotes.

vent:pubShort_Title "Hydrothermal heat flux of the "black smoker" vents on the East Pacific Rise" ;

should be

vent:pubShort_Title "Hydrothermal heat flux of the \"black smoker\" vents on the East Pacific Rise" ;

Namespaces used and prefix conventions

@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix wgs:   <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix time:  <http://www.w3.org/2006/time#> .
@prefix dc:    <http://purl.org/dc/elements/1.1/> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .

@prefix vent:    <http://escience.rpi.edu/schemas/whoi_vents.owl#> .
@prefix data:    <http://4dgeo.whoi.edu/data/> .
@prefix ventxls: <http://4dgeo.whoi.edu/data/CSVtoRDF_7ccad328-899c-4056-a9d6-2b19c9ecd507/>
@prefix :        <http://4dgeo.whoi.edu/data/> .

Sample RDF-izations

Sample RDF-ization of Alvin cruise page:

@prefix bco:        <http://bcodmo.whoi.edu/ns/> .
@prefix alv:        <http://whoi.edu/shipdata/vocab/ALVIN/v0.2/> .
@prefix :        <http://4dgeo.whoi.edu/data/> .


alv:cruise_AT15-47
   a bco:Cruise;
   bco:cruiseID "AT15-47";
   bco:hasChiefScientist alv:James_Holden;
.
alv:James_Holden foaf:name "James Holden" .

alv:dive_4514
   a                bco:Dive;
   bco:hasVehicle   alv:DSV_Alvin;
   bco:diveID       "4514";
   bco:deployedFrom alv:cruise_AT15-47;
   bco:snapshotURL  "http://4dgeo.whoi.edu//webdata/DAQ/AT15-47/Alvin-D4514/html/S0001.html"^^:url;
   bco:pilotedBy    alv:Sean_Kelley;
   bco:observedBy   alv:Lane_Abrams;
   bco:observedBy   alv:Matt_Fowler;
   bco:hasLocation  <http://4dgeo.whoi.edu/data/MEF/Mothra/HiRIse/Axial>;
   bco:hasSynopsis  "Went to Lobo to recover RAS. Took 2 gas tights, 1 major and temperature. Released RAS to Surface. Went east of MEF and performed Propulsion tests and VB tests.";
.

alv:Sean_Kelley foaf:name "Sean Kelley" .
alv:Lane_Abrams foaf:name "Lane Abrams" .
alv:Matt_Fowler foaf:name "Matt Fowler" .

:dive_4515
   a                bco:Dive;
   bco:hasVehicle   :DSV_Alvin;
...

Sample RDF-ization of Alvin att-val txt file:

@prefix bco:   <http://bcodmo.whoi.edu/ns/> .
@prefix jsn:   <http://whoi.edu/shipdata/vocab/JASON/v0.2/> .
@prefix alv:   <http://whoi.edu/shipdata/vocab/ALVIN/v0.2/> .
@prefix data:  <http://4dgeo.whoi.edu/data/> .
@prefix :     <http://4dgeo.whoi.edu/data/> .


:dive_4514
  a bco:Dive;
  bco:diveID            "4514";
  bco:deployedFrom      :cruise_AT15-47;
  bco:cruiseName        "EAGER 09";
  bco:hasLocation       <http://4dgeo.whoi.edu/data/MEF/Mothra/HiRIse/Axial_>;
  wgs:lat               "47.950634";
  wgs:lon               "-129.096095";
  bco:hasChiefScientist :James_Holden;
  bco:pilotedBy         :Sean_Kelley;
  bco:observedBy        :Lane_Abrams;
  bco:observedBy        :Matt_Fowler;
  bco:hasSynopsis       "Went to Lobo to recover RAS.  Took 2 gas tights, 1 major and temperature.  Released RAS to Surface.  Went east of MEF and performed Propulsion tests and VB tests.";
  bco:startTime         "2009-06-14T16:27:31"^^xsd:dateTime;
  bco:endTime           "2009-06-14T20:29:31"^^xsd:dateTime;
.

<http://4dgeo.whoi.edu/data/MEF/Mothra/HiRIse/Axial_> dc:description "MEF/Mothra/HiRIse/Axial " .
:James_Holden foaf:name "James Holden" .
:Sean_Kelley foaf:name "Sean Kelley" .
:Lane_Abrams foaf:name "Lane Abrams" .
:Matt_Fowler foaf:name "Matt Fowler" .

:dive_4515
  a bco:Dive;
  bco:diveID            "4515";
...

Sample RDF-ization of JASON cruise page:

@prefix bco:        <http://bcodmo.whoi.edu/ns/> .
@prefix alv:        <http://whoi.edu/shipdata/vocab/ALVIN/v0.2/> .
@prefix :        <http://4dgeo.whoi.edu/data/> .


:cruise_rb-09-05_2
   a bco:Cruise;
   bco:cruiseID          "rb-09-05_2";
   bco:cruiseName        "rb-09-05_2";
   bco:hasChiefScientist :Erik_Cordes;
   bco:hasVessel         <http://4dgeo.whoi.edu/data/NOAA_Ronald_H._Brown>;
   bco:hasLocation       :Gulf_of_Mexico;
   wgs:lat               "29";
   wgs:long              "87";
   time:hasBeginning [ time:inXSDDateTime "2009-09-05T17:55:56"^^xsd:dateTime; ];
   time:hasEnd       [ time:inXSDDateTime "2009-09-10T20:02:04"^^xsd:dateTime; ];
.
:Erik_Cordes foaf:name "Erik Cordes" .
<http://4dgeo.whoi.edu/data/NOAA_Ronald_H._Brown> dc:title "NOAA Ronald H. Brown" .
:Gulf_of_Mexico dc:title "Gulf of Mexico" .


Sample RDF-ization of JASON att-val txt file:

@prefix bco:   <http://bcodmo.whoi.edu/ns/> .
@prefix jsn:   <http://whoi.edu/shipdata/vocab/JASON/v0.2/> .
@prefix alv:   <http://whoi.edu/shipdata/vocab/ALVIN/v0.2/> .
@prefix data:  <http://4dgeo.whoi.edu/data/> .
@prefix :     <http://4dgeo.whoi.edu/data/> .


:cruise_rb-09-05_2
  a bco:Cruise;
  bco:cruiseID             "rb-09-05_2";
  bco:cruiseName           "rb-09-05_2";
  bco:hasVessel            <http://4dgeo.whoi.edu/data/NOAA_Ronald_H._Brown>;
  bco:hasLocation          :Gulf_of_Mexico;
  wgs:lat                  "29.";
  wgs:lon                  "-87.";
  bco:hasChiefScientist    :Erik_Cordes;
  bco:hasObjective         "Shipwrecks, Biological Sampling";
  bco:startTime            "2009-09-05T17:55:56"^^xsd:dateTime;
  bco:endTime              "2009-09-10T20:02:04"^^xsd:dateTime;
  bco:hasSensor            "Magnetom";
  bco:isPrivate            "1";
  bco:virtualControlVanURL "http://4dgeo.whoi.edu/webdata/virtualvan/html/VV-rb-09-05_2/index.html"^^bco:url;
  bco:highlightsURL        "http://4dgeo.whoi.edu/vv-bin/view_snaps.pl?imdir=/webdata/DAQ/rb-09-05_2/Jason/Highlights&title=rb-09-05_2"^^bco:url;
  bco:dataDirURL           "http://4dgeo.whoi.edu//webdata/DAQ/rb-09-05_2/Jason"^^bco:url;
. 


<http://4dgeo.whoi.edu/data/NOAA_Ronald_H._Brown> dc:title "NOAA Ronald H. Brown" .
:Gulf_of_Mexico dc:description "Gulf of Mexico" .
:Erik_Cordes foaf:name "Erik Cordes" .

Sample RDF-ization of Jason Lowering html tables:

@prefix bco:        <http://bcodmo.whoi.edu/ns/> .
@prefix :        <http://4dgeo.whoi.edu/data/> .

:cruise_rb-07-04
   a bco:Cruise;
   bco:cruiseID "rb-07-04";
.

:lowering_J2-269
   a bco:Lowering;
   bco:loweringID    "J2-269";
   bco:deployedFrom  :cruise_rb-07-04;
   bco:hasVehicle    :DSV_JASON;
   time:hasBeginning [ time:inXSDDateTime "2007-06-03T15:32:03"^^xsd:dateTime; ];
   time:hasEnd       [ time:inXSDDateTime "2007-06-09T12:56:18"^^xsd:dateTime; ];
   bco:maxDepth     "2212.44"^^xsd:double;
   bco:numRecords   "5009"^^xsd:integer;
.

:lowering_J2-270
   a bco:Lowering;
   bco:loweringID    "J2-270";
...

Sample RDF-ization of hot_vent_fields_ss.xls:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix row: <http://bcodmo.whoi.edu/data/hot_vent_fields_ss.xls/thing_> .
@prefix csvtordf: <http://bcodmo.whoi.edu/data/hot_vent_fields_ss.xls> .
@prefix p: <http://bcodmo.whoi.edu/data/Property-3A> .
@prefix bco: <http://bcodmo.whoi.edu/data/Property-3A> .
@prefix rl: <http://bcodmo.whoi.edu/data/> .


<http://bcodmo.whoi.edu/data/hot_vent_fields_ss.xls/thing_1> 
   bco:csvRow "1"^^<http://www.w3.org/2001/XMLSchema#int> ;
   bco:Name_ID <http://bcodmo.whoi.edu/data/Piip_-28=_Piyp-29_Submarine_Volcano-2C_western_Aleutian_Arc-2C_Bering_Sea> ;
   bco:Name_of_individual_vent_sites "North Peak, South Peak" ;
   bco:Activity rl:Active ;
   bco:Depth "382 (North Peak); 450-500 (South Peak)" ;
   bco:Ocean <http://bcodmo.whoi.edu/data/N._Pacific> ;   
   bco:Region rl:Aleutian_-28NW_Pacific-29 ;
  <http://bcodmo.whoi.edu/data/Property-3ANational_Jurisdiction_-28EEZ_confirmed_with_VLIZ_Maritime_Boundaries_Geodatabase_Sep._2009-29> rl:Russia ;
   bco:Longitude_-28min_-26_sec_as_decimal-29 "167.2717" ;
   bco:Latitude_-28min_-26_sec_as_decimal-29 "55.4167" ;
   bco:Site_description "hydrothermally active seamount; two shallow summit craters; several active vents and silica, anhydrite, calcite, barite mounds and chimneys with minor pyrite; black smokers at northern cone (www.volcano.si.edu #1000-271)" ;
   bco:Deposit_type "LTH, silica, barite, anhydrite, carbonate mounds" ;   
   bco:Host_rock "andesite to dacite" ;
   <http://bcodmo.whoi.edu/data/Property-3AMax._Temp._-28deg._C-29> ">133" ;   
   bco:Tectonic_setting "seamount adjacent to back-arc spreading center; Petersen lists \"\"fore-arc volcano\"\"" ;   
   bco:Dominant_biology "Vesicomyidae and non-endemics; bacterial mats" ;   
   bco:Year_and_means_by_which_discovered_-28Visual_Confirmation_listed_first-2C_unless_otherwise_noted-29 "1990 Mir submersible; 1987 (or 1986) echo-sounder fluid discharge, although Taran et al. (1992) paper says discovered 1981" ;
   bco:Citations "Discovery: Taran et al. (1992) Isotopic composition of mineral precipitates and free gas associated with hydrothermal vents of Piip submarine volcano, Bering Sea. Geochem. J. 26: 291-297; Other citations: Glasby, GP et al. (2006) Submarine hydrothermal activity and mineralization on the Kurile and western Aleutian island arcs, N.W. Pacific. Mar Geol 231(1-4): 163-180; References not checked: Bogdanova et al. (1990) Hydrothermal deposits from Piip submarine volcano, Komandorskii Basin. Volc Seism, 11: 354-373 (English translation); Sagalevitch et al. (1992) Hydrothermal manifestations of the submarine Piip's volcano. Izvestiya RAN, Ser. Geol. 9: 104-114; Sagalevitch et al. Internat. Geol. Rev. 34, 1200-1209, 1992." ;
   bco:References_CHECKED rl:y 
.

foaf:based_near based on proximity of wgs:lat/wgs:long

Need a utility to read in an RDF graph, look for resources with wgs:lat/wgs:long within some cartesian radius, and dump an RDF to assert :x foaf:based_near :y?

input: radius = 10

x wgs:lat "4"; wgs:long "5" .
y wgs:lat "3"; wgs:long "6" .
z wgs:lat "56" wgs:long "-45" .

output:

x foaf:based_near :y .
  • Eric has a more sophisticated distance algorithm we can use ("convert coordinates to distances").
input: one file that has union of ventField and Dive descriptions.
for each ventFieldURI (query for all rdf:type vent:VendField)
  ventLat
  ventLong
  for each diveURI (query for all rdf:type :Deployment)
     NAAs    = get all CompleteNavigationAndAttitudes that point to diveURI
     minDist = min(distance(ventField,NAAs))
     print ventFieldURI diveURI minDist

Tasks

Discussions

Highlight Frames

We had discussed highlight frames with Andy. Has anyone figured out where information on these highlight frames exists, if anywhere? I also can't recall if it was only Alvin dives that had highlight frames or if the Jason Virtual Vans had highlights selected as well.

Will crew members and chief scientists be included in the related people section?

Probably an immediate yes, but just wanted to discuss some details. Crew members might include the pilot or observers, only Alvin dives have pilots and observers associated with them. Chief scientists associated with dives and lowerings. Any other related people besides the ones I've just explained?

How will we associate Cruises to Vent fields? Is the current plan to hack relations based on lat/long?

widget assert vent:visited? No, vent:getsWithin50km

because we should keep data data, and impose interpretation later. when we make

navigatedWithin

Importing foaf and wgs into Protege

resolved - no need to import

Stripping out owl:time

  • too many blank nodes listed in Protege GUI
  • will slow down reasoning
  • use case does not require it.

need make or NetKernel's Golden Thread

When data changes, need to run appropriate conversions

when conversion changes, need to run conversions

when rdf changes, need to populate into tdb.

Rerunning everything any time anything changes is costly.

Should really only ever do it when we make a query that requires it.

Maintaining owl separate from data

  • want to edit ontology while looking at data (because data guides design of ontology).
    • but can't export JUST ontology without data.
  • want to modify data and reapply ontology
    • but if data is bundled with ontology file, you get the old data...

Meetings

6 Nov 2009 - bonus

  • cgi script takes cruiseID and diveID and gives "Vehicle Navigation and Attitude" (currently only for Alvin, will get JASON version TODO)
  • KML
    • what do with all of the KML files even if we had them?
    • TODO: someone figure it out.
    • google vis.
    • sparql code camp presentations. earthquakes in world.
      • 3 versions. Start with Jin's
        • loads an xml file containing the already-created sparql results - not querying a live endpoint.
    • generated google maps developer key
  • paper
  • highlight frames
    • TODO: Andy to ask Steve about highlights.
      • Andy: See note in previous section giving url for example highlights
    • highlights are sparse.
    • TODO: ask Andy what cruise/dives have highlights.
      • Andy: Best highlights start in 2004 Jason cruises. Later dives don't have so many
  • TODO: group decide what dives to show during demo
  • DONE: Andy find and provide JASON cgi that provides Lowering Navigation and Attitude.
  • differences of data set aggregations
    • Alvin dive gives a single data set (CD)
    • Jason has a single data set for the entire cruise
    • Jason two vans on boat, tethered, 24x7 operations, with staff monitoring
    • something breaks: lower
    • data sytem running continuously for an entire cruise
    • start and end time of a lowering
  • what is the lat/long associated with a dive.
    • lowering: Andy bet is where put in water.
    • dive: same guess for both.
    • really irrelevant b/c we have the whole path.

6 Nov 2009

  • Reconcile namespaces b/w ont and data
    • keep escience for ont, use 4dgeo for data
  • use case writeup
  • foaf:based_near function
  • server for sparql endpoint
    • will JUST query localhost with the server, web page hosted on localhost?
    • how will that connect up to the web page? just double-click the file? not really working (maps)
    • can turn on web sharing on mac, drag to ~/Sites/
    • hello world will run javascript both double-click and hosted, but google maps works slightly better when hosted to itself.
  • developing queries
    • against just data
    • against inferences from ontology
      • run a priori or on the fly?
  • ontology
    • functional properties
  • KML
  • UI dev

13 Nov 2009

  • eric's GUI mockup
    • selcuk can do map and table all in one script from markers.xml
ACTION: selcuk to apply his script this weekend.
ACTION: tim to remove url

link from hot vents to navigation

andy: need anything? how close should dive be from a vent to be visitedBy?

navigation can be quite variable

dive goes to vent field, indiv vents in vent field.

ASSUME: link vent to navigation


YONGMEI: -

the rdf owl. sparqls.


Eric checked inferences in protege, not queries.

Tim's attempt to get inferences from queries:

  • ATTEMPT 1: full material inferences
  • ATTEMPT 2: sparql endpoint

Tim did this on Tue, Eric posted new ontology on wed

wed night Eric had working ontology.


ACTION: Tim, Eric will try independently fully materialize again.

sparql bindings - markers.xml, PAGE_1.html rdf/xml - xslt

for single vent field

name, rep image, people, related deployments, publications



next steps dynamic:


selcuk,

maps goolge maps API markers. not using kml vent names, long, lat, (baked) url


alternatives to baked vend field pages.

  • cgi with uri param
  • baked
    • java
    • xslt


ACTION: andy give url to get frame at a particular time in dive.

Andy: Have sent Steve Lerner email. Waiting on reply (11/17/2009)


andy: publications people realted to partiucar vent field list include people have been to dive site before? or just dive itself?

eric: authors, pilots, observers, chief scientists andy: cool

click on authors, will see publications? future enhancement: list publication

google scholar search results? add to a publications table.

andy: in ontology: add discovery publication - pub first mentioned


ACTION: eric add hasDiscoveryPub subpropertyof referenced by

TWO OUTSTANDING: yongmei - tweak threshold create RDF .5 km fulllly materialize - eric

everyone needs to try to make html eric - perl against fully (greg sesame and rdfs) tim - xslt, java sesame, selcuk - rdflib python,

python rdflib


andy: use case template: complexity, narrowing things down. make sure we

we need to flesh, are we doing more than

ACTION: eric send andy draft of use case template. andy will look at it.

andy on west coast on monday, send before monday.


navigation - simplify number of triples.


yongmei


vent to naas

DONE: use .5 km threshold and product:

<http://4dgeo.whoi.edu/data/dive_2763> vent:navigatedWithinHalfKmOf <http://4dgeo.whoi.edu/data/CSVtoRDF_7ccad328-899c-4056-a9d6-2b19c9ecd507/thing_21> .

publications

what has been done: from http://dlaweb.whoi.edu/DIG_RES/NDSF_bib.html

curled e.g., http://dlaweb.whoi.edu/PHP/NDSF/tag_display.php?key=ID&keyvalue=238  (x 1000)

converted to text if had url, curled it.

e.g. https://darchive.mblwhoilibrary.org/handle/1912/2717

from that html, walked for a anchor for pdf and curled THAT

e.g. https://darchive.mblwhoilibrary.org/bitstream/handle/1912/2717/WHOI-2009-01.pdf?sequence=1   (x 100)

convert subset of 100 for text. pdfbox converted to text. (x 100) (most of the pdfs converted)

keyID from html attribute page is *.html


what to do:

use:

@prefix data: <http://4dgeo.whoi.edu/data/> .

data:http://4dgeo.whoi.edu/data/publication_677 
   vent:pubAuthor "Fusaro, A" ;
   vent:pubISSN "1541-5856" ;
.

ignore


Currently only searched cruiseID

andy suggested alvin dive.


for:

"tn151     	1014.txt"
<http://4dgeo.whoi.edu/data/publication_1014> vent:referencesCruise <http://4dgeo.whoi.edu/data/cruise_tn151> .

ALVIN:

<http://4dgeo.whoi.edu/data/publication_xxx> vent:referencesDive <http://4dgeo.whoi.edu/data/dive_tn151> .
<http://4dgeo.whoi.edu/data/publication_yyyy> vent:referencesLowering <http://4dgeo.whoi.edu/data/dive_tn151> .

16 Nov

  • Everyone do slides for what they did
  • Selcuk to aggregate
  • Eric to draft use case template
  • Eric to find representative images, log in rdf, and edit pages with Selcuk
  • Yongmei to talk about how she made the links.

Incompletes

Cruise-ids are attributes of lowerings and dives and should be "extractable" from the alvin/jason data you (so quickly and efficiently) extracted from the sites.

# rb-09-05_2.html.tidy.ttl
:lowering_J2-468
   a bco:Lowering;
   bco:loweringID    "J2-468";
   bco:deployedFrom  :cruise_rb-09-05_2;
...

# AT11-10.html.tidy.any.ttl
:dive_3996
   a                bco:Dive;
   bco:diveID       "3996";
   bco:deployedFrom :cruise_AT11-10;
...

probably best to use lats/longs of dives/lowerings

# OM.Alvin.AT11-10.txt.ttl
:dive_3996
  a bco:Dive;
  bco:diveID            "3996";
  bco:deployedFrom      :cruise_AT11-10;
  bco:cruiseName        "Pirates-2";
  bco:hasLocation       <http://4dgeo.whoi.edu/data/9N50_BioTransect>;
  wgs:lat               "9.832257";
  wgs:lon               "-104.289981";
# rb-09-05_2.html.tidy.ttl
:cruise_rb-09-05_2
   a bco:Cruise;
   bco:cruiseID          "rb-09-05_2";
   bco:cruiseName        "rb-09-05_2";
   bco:hasChiefScientist :Erik_Cordes;
   bco:hasVessel         <http://4dgeo.whoi.edu/data/NOAA_Ronald_H._Brown>;
   bco:hasLocation       :Gulf_of_Mexico;
   wgs:lat               "29";
   wgs:long              "87";
...

to associate dives/lowerings with vent-fields (which also have lats/longs

# hot_vent_fields_ss.xls.csv.ttl
<http://bcodmo.whoi.edu/data/hot_vent_fields_ss.xls/thing_1> 
  bco:csvRow "1"^^<http://www.w3.org/2001/XMLSchema#int> ;
  bco:Name_ID <http://bcodmo.whoi.edu/data/Piip_-28=_Piyp-29_Submarine_Volcano-2C_western_Aleutian_Arc-2C_Bering_Sea> ;
  bco:Name_of_individual_vent_sites "North Peak, South Peak" ;
  bco:Activity rl:Active ;
  bco:Depth "382 (North Peak); 450-500 (South Peak)" ;
  bco:Ocean <http://bcodmo.whoi.edu/data/N._Pacific> ;
  bco:Region rl:Aleutian_-28NW_Pacific-29 ;
  <http://bcodmo.whoi.edu/data/Property-3ANational_Jurisdiction_28EEZ_confirmed_with_VLIZ_Maritime_Boundaries_Geodatabase_Sep._2009-29> rl:Russia ;
  bco:Longitude_-28min_-26_sec_as_decimal-29 "167.2717" ;
  bco:Latitude_-28min_-26_sec_as_decimal-29 "55.4167" ;
...

and then associate cruises to vent fields by knowing that dives/lowerings that happen during a particular cruise must be associated with that cruise.


TODO: Andy provide cgi for cruiseID, diveID, timestamp -> URL for image frame at that time.

Domain Specialist Q+A

List questions here for domain specialists. Andy Maffei will contact specialists and post answers.

Things Tim Owes

  • Redo RDF-ization of vent db spreadsheet

Evaluation

  • Current resources do not
    • give vent-centered information.

transition from "what happened?" to "what can I do next?"

ideas

faster, more complete, less mistakes?

wider range of users?


degree to enhance search?

appears local and integrated?

Personal tools
Semantic Web Community
Tetherless World constellation
maintenance