Skip to content
roomthily edited this page Jun 30, 2015 · 11 revisions

Some examples, in turtle, of the representations using our ontology mappings. Note, these are intended to reuse existing ontologies.

The ontologies:

  • OWL-S (prefix owls)
  • ESIP DATA (prefix esip)
  • the standard set of rdf/dublin core (rdf, rdfs, dc, dcat, xsd)
  • FOAF (prefix foaf)

Any entity, object or data property that can't be associated with an existing object will be tagged with the bcube prefix.

TODOs:

  • : add uuid identifiers
  • : look up the SWEET Property definition for a reasonable parameter structure
  • : change the ESIP temporal extent to just use the startTime and endTime data properties
  • : add some verbs
  • : ServiceCategory definition (I have no exemplars)
Example 1. An OWL-S ServiceProfile
:10d3f3f3-c366-4493-9f41-8ed51ec2d953
    a owls:ServiceProfile ;
    owls:presents a_profile ;
    # todo: add a process model
    .

:9c8c8e88-b293-4c9b-ad7c-94d57c6587ef 
    a owls:Profile ;
   
    # backref to the service
    owls:presentedBy :10d3f3f3-c366-4493-9f41-8ed51ec2d953 ;

    # equivalentTo dc:title
    owls:serviceName "A WCS" ;
    # equivalentTo dc:description
    owls:textDescription "This is our first WCS service profile in turtle." ;
    # referencing a foaf person or organization
    owls:contactInformation :5e43e024-7400-485b-80e6-b33ffe3bf962 ;

    # the keywords as a semicolon-delimited string
    dc:subject "turtles ; biodiversity ; wetlands ; boulder ;" ;
    esip:Keyword "turtles ; biodiversity ; wetlands ; boulder ;" ;
    
    # the spatial reference information
    dcat:spatial "POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))" ;
    esip:BoundingBox :f173e6ba-d8f6-4ec9-b609-e30cd6dedbcd ;

    dcat:temporal "2000-01-15T00:45:00Z/2010-01-15T00:06:00Z" ;
    # note: there is some notion of time in esip but I don't understand the format. 
   
    bcube:version "1.1.2" ;
    dc:language "eng" ;

    # some parameters
    owls:hasParameter :first_service_parameter,
        :second_service_parameter ;

    # the service category (the protocol?)
    owls:ServiceCategory :2ef2dd59-9e51-4f4b-b820-46ffa5261492 ;

    # and our harvested url
    bcube:hasUrl :1fa7bbec-2fc1-44ad-a6ff-06c261cce57b ;
    .

:5e43e024-7400-485b-80e6-b33ffe3bf962
    a foaf:Person ;
    foaf:name "A. Researcher" ;
    rdfs:label "A GIS Person" ;
    .

:2ef2dd59-9e51-4f4b-b820-46ffa5261492
    a owls:ServiceCategory ;
    # this is also not really the correct usage (it is an enumeration?)
    owls:categoryName "Response Types" ;
    owls:taxonomy "OGC" ;
    .

:1fa7bbec-2fc1-44ad-a6ff-06c261cce57b 
    a bcube:Url ;
    # the url
    bcube:location "http://www.example.com/response?service=wcs&version=1.1.2&request=GetCapabilities"^^xsd:anyURL ; 

    # the type of url (harvested, extracted?)
    bcube:type "harvested" ;

    # the received http status code from the link checker
    bcube:httpStatus "404"^^xsd:integer ;

    # the aggregated status bucket (200, 300, 400, 500, 900 (app error))
    bcube:aggregatedStatus "400"^^xsd:integer ;

    # text from the link checker response
    bcube:statusDescription "Not Found"^^xsd:string ;

    # an indication of the kind of url - complete url extracted from the response
    # or some generated url for opensearch, ogc, thredds, etc
    # enum: [good | bad | we don't know]
    bcube:truthiness "Good"^^xsd:string ;

    # date of the status check
    dc:modified "2015-06-25T07:30.246Z"^^xsd:date ;
    .
    
:f173e6ba-d8f6-4ec9-b609-e30cd6dedbcd
    a esip:BoundingBox ;
    # these are not correct as far as mapping to the wkt, fyi. that isn't even a proper bbox!
    esip:northBound "4.0"^^<http://www.w3.org/2001/XMLSchema#decimal> ;
    esip:southBound "0.0"^^<http://www.w3.org/2001/XMLSchema#decimal> ;
    esip:eastBound "2.0"^^<http://www.w3.org/2001/XMLSchema#decimal> ;
    esip:westBound "1.0"^^<http://www.w3.org/2001/XMLSchema#decimal> ;
    .

:first_service_parameter
    a owls:ServiceParameter ;
    owls:serviceParameterName "Request" ;
    owls:Parameter :first_parameter ;
    .

:second_service_parameter
    a owls:ServiceParameter ;
    owls:serviceParameterName "Version" ;
    owls:Parameter :second_parameter ;
    .

:first_parameter
    a owls:Parameter ;
    rdfs:label "Request" ;
    .

:second_parameter
    a owls:Parameter ;
    rdfs:label "Version" ;
    .
Example 2. A Dataset
:2aeae03e-c740-40e1-b22b-d73046e89100
    a dcat:dataset ;
    dc:title "Distribution of Turtles in the city of Boulder" ;
    dc:description" "A longer discussion of all the turtles in the city of Boulder and why we care." ;
    dc:subject "turtles ; biodiversity ; wetlands ; boulder ;" ;
    esip:Keyword "turtles ; biodiversity ; wetlands ; boulder ;" ;
    dcat:hasDistribution :dataset_distribution ;
    bcube:hasParameter :turtle_name, :turtle_location ;
    bcube:isDocumentedBy :7eaf72fd-a63b-4cdf-b44c-15240d53bb85 ;
    .

:dataset_distribution
    a dcat:Distribution ;
    # still don't know that we can reliably identify this
    dc:title "Turtle Locations" ;
    dcat:modified "2015-06-02"^^xsd:date ;
    dcat:accessUrl "http://example.com/my_turtle_file.zip"^^xsd:anyURL ;
    dcat:mediaType "application/x-zip" ;
    .

:turtle_name
    a bcube:Parameter ;
    rdfs:label "Turtle Name" ;
    esip:datafield :name_field ;
    .

:name_field
    a esip:DataField ; 
    # this seems incredibly unnecessary
    esip:FieldType <http://www.w3.org/2001/XMLSchema#string> ;
    . 

:turtle_location
    a bcube:Parameter ;
    rdfs:label "Turtle Location" ;
    esip:datafield :location_field ;
    .
:location_field
    a esip:DataField ; 
    # this seems incredibly unnecessary
    esip:FieldType <http://www.w3.org/2001/XMLSchema#string> ;
    . 
Example 3. A Metadata Record
:7eaf72fd-a63b-4cdf-b44c-15240d53bb85
    a dcat:record ;
    dc:title "Distribution of Turtles in the city of Boulder" ;
    dc:description" "A longer discussion of all the turtles in the city of Boulder and why we care." ;
    dc:subject "turtles ; biodiversity ; wetlands ; boulder ;" ;
    esip:Keyword "turtles ; biodiversity ; wetlands ; boulder ;" ;
    bcube:version "ISO 19115-2" ;
    dcat:spatial "POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))" ;
    dcat:temporal "2000-01-15T00:45:00Z/2010-01-15T00:06:00Z" ; 
    dc:contact :wcs_contact ;
    bcube:hasUrl :metadata_link_1, :metadata_link_2 ;
    bcube:documents :2aeae03e-c740-40e1-b22b-d73046e89100 ;
    .

:metadata_link_1
    a bcube:Url ;
    # the url
    bcube:location "http://www.example.com/metadata.xml"^^xsd:anyURL ; 

    # the type of url (harvested, extracted?)
    bcube:type "extracted" ;

    # the received http status code from the link checker
    bcube:httpStatus "200"^^xsd:integer ;

    # the aggregated status bucket (200, 300, 400, 500, 900 (app error))
    bcube:aggregatedStatus "200"^^xsd:integer ;

    # text from the link checker response
    bcube:statusDescription "OK"^^xsd:string ;

    # an indication of the kind of url - complete url extracted from the response
    # or some generated url for opensearch, ogc, thredds, etc
    # enum: [good | bad | we don't know]
    bcube:truthiness "Good"^^xsd:string ;

    # date of the status check
    dc:modified "2015-06-25T07:30.246Z"^^xsd:date ;
    .

:metadata_link_2
    a bcube:Url ;
    # the url
    bcube:location "http://www.example.com/opendap/something/else/catalog.xml"^^xsd:anyURL ; 

    # the type of url (harvested, extracted?)
    bcube:type "generated" ;

    # the received http status code from the link checker
    bcube:httpStatus "200"^^xsd:integer ;

    # the aggregated status bucket (200, 300, 400, 500, 900 (app error))
    bcube:aggregatedStatus "200"^^xsd:integer ;

    # text from the link checker response
    bcube:statusDescription "OK"^^xsd:string ;

    # this is not necessarily true for this url.
    bcube:truthiness "We Don't Know"^^xsd:string ;

    # date of the status check
    dc:modified "2015-06-25T07:30.246Z"^^xsd:date ;
    .
Clone this wiki locally