Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIR/Data relations #5

Open
ksonda opened this issue Jun 12, 2022 · 4 comments
Open

MIR/Data relations #5

ksonda opened this issue Jun 12, 2022 · 4 comments

Comments

@ksonda
Copy link
Member

ksonda commented Jun 12, 2022

We have been using schema:provider for how a MIR for a reference feature links to

  • the organization or person who maintains the MIR
  • a dataset or system that it is derived from
  • the organization or person who maintains the dataset it it derived from

and subjectOf for

  • other MIRs
  • out-of-band websites
  • out-of-band datasets

Technically, schema:provider is basically meant for business-type activities, and has domain
image

Since the relevant domain type is CreativeWork, we can't use it for a NIR or a MIR with a URI. Particularly with reference features, I think we have to use a pretty specific combination of schema:subjectOf, schema:provider, and schema:isBasedOn to properly document what we mean by "this record is related to this record which came from here originally"

something like

{
	"@context": [{
		"schema": "https://schema.org/",
		"skos": "http://www.w3.org/2004/02/skos/core#",
		"hyf": "https://www.opengis.net/def/schema/hy_features/hyf/",
		"gsp": "http://www.opengis.net/ont/geosparql#",
		"name": "schema:name",
		"sameAs": "schema:sameAs",
		"subjectOf": "schema:subjectOf",
		"provider": {
			"@id": "schema:provider",
			"@type": "@id"
		},
		"related": "skos:related",
		"description": "schema:description",
		"geo": "schema:geo",
		"image": {
			"@id": "schema:image",
			"@type": "@id"
		},
		"hyf:linearElement": {
			"@type": "@id"
		}
	}],
	"@id": "https://geoconnex.us/ref/dams/1000002",
	"@type": [
		"https://www.opengis.net/def/schema/hy_features/hyf/HY_HydrometricFeature",
		"https://www.opengis.net/def/schema/hy_features/hyf/HY_HydroLocation",
		"schema:Place"
	],
	"name": "Lake Wilhelmina Dam",
	"description": "Reference feature for USACE National Inventory of Dams: MS02525",
	"subjectOf": [{
			"@id": "https://doi.org/10.5066/P92S9ZX6",
			"@type": "schema:Dataset",
			"schema:isBasedOn": {
				"@type": "schema:Dataset",
				"schema:url": "https://nid.usace.army.mil/#/downloads"
			}
		},
		{
			"@type": "schema:WebPage",
			"schema:url": "https://nid.usace.army.mil/#/dams/system/501234/summary",
			"schema:provider": "https://nid.usace.army.mil/"
		}
	]

}

This will need to be updated in all templates, documentation, and in deployed reference features

@dblodgett-usgs
Copy link
Member

I guess I'm a little confused about the premise here...

Since the relevant domain type is CreativeWork, we can't use it for a NIR or a MIR with a URI.

But the table you put up there is just "Used on these types" -- as in "used in existing schema.org objects". That doesn't seem like it's a strict limit on what it can be used on, right?

There's a sentence from the definition:

Another party (a seller) may offer those services or goods on behalf of the provider.

Another party (geoconnex) may offer those reference features on behalf of the provider.

Right? Maybe I'm thinking at a different level here?

It seems to me that schema:provider is an appropriate way to decorate a blank node that also has a schema:url

@ksonda
Copy link
Member Author

ksonda commented Jun 13, 2022

well, we can implement any validation we want on stuff that isn't in schema.org I suppose, but the schema.org validator does not like if the subject of schema:provider is a schema.org Type that is not one of those things

@dblodgett-usgs
Copy link
Member

I see. This makes me think we need to take more care in what the @type is for things that are decorated with schema.org as much as change the predicates we are using.

More generally, I think we are just going to run into some logicaly issues here in general though. schema.org is assuming indirect identification of things like schema:Place. e.g. a resource URL that is "about" a place is thought to be a stand in for a URI for the place. This leads me to question whether "valid" in the schema.org context is really "invalid" in our context?

@dblodgett-usgs
Copy link
Member

Wanting to think through this a bit more slowly. We currently have: (this was generated with the jsonld playground)

{
  "@id": "https://geoconnex.us/ref/dams/1074846",
  "@type": "https://schema.org/Place",
  "http://www.opengis.net/ont/geosparql#hasGeometry": {
    "@type": "http://www.opengis.net/ont/sf#Point",
    "http://www.opengis.net/ont/geosparql#asWKT": {
      "@type": "http://www.opengis.net/ont/geosparql#wktLiteral",
      "@value": "POINT (-85.89643320731987 44.21302163137249)"
    }
  },
  "https://schema.org/description": "Reference feature for USACE National Inventory of Dams: MI00229",
  "https://schema.org/geo": {
    "@type": "https://schema.org/GeoCoordinates",
    "https://schema.org/latitude": 44.21302163137249,
    "https://schema.org/longitude": -85.89643320731987
  },
  "https://schema.org/name": "Stronach Dam",
  "https://schema.org/provider": {
    "@type": "https://schema.org/url",
    "@value": "https://nid.usace.army.mil"
  },
  "https://schema.org/subjectOf": {
    "@type": "https://schema.org/url",
    "@value": "https://nid.usace.army.mil/#/dams/system/489350/summary"
  }
}

OK -- so with this, your example does make more sense. We should not be saying that "the provider of a place is an organization".

{
  "@id": "https://geoconnex.us/ref/dams/1000002",
  "@type": [
    "https://www.opengis.net/def/schema/hy_features/hyf/HY_HydrometricFeature",
    "https://www.opengis.net/def/schema/hy_features/hyf/HY_HydroLocation",
    "https://schema.org/Place"
  ],
  "https://schema.org/description": "Reference feature for USACE National Inventory of Dams: MS02525",
  "https://schema.org/name": "Lake Wilhelmina Dam",
  "https://schema.org/subjectOf": [
    {
      "@id": "https://doi.org/10.5066/P92S9ZX6",
      "@type": "https://schema.org/Dataset",
      "https://schema.org/isBasedOn": {
        "@type": "https://schema.org/Dataset",
        "https://schema.org/url": "https://nid.usace.army.mil/#/downloads"
      }
    },
    {
      "@type": "https://schema.org/WebPage",
      "https://schema.org/provider": "https://nid.usace.army.mil/",
      "https://schema.org/url": "https://nid.usace.army.mil/#/dams/system/501234/summary"
    }
  ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants