earthcubearchitecture-project418 / p418Docs

Documentation on Project 418. Includes publishing guideline, example JSON-LD, and presentations about the project.
7 stars 2 forks source link

Use "Role" for creator and contributor #12

Closed smrgeoinfo closed 6 years ago

smrgeoinfo commented 6 years ago

I suggest we could type values for creator and contributor with "Role" as well as "Person" or "Organization" to clarify relationship of the agent to the resource. This would also allow more precise mapping from DataCite or ISO19115 metadata. e.g

"creator": [
    {
      "@id": "https://www.bco-dmo.org/person/51317",
      "@type": ["Person", "Role"],
      "additionalType": "geolink:Person",
      "name": "Dr Uta Passow",
      "roleName":"author",
      "url": "https://www.bco-dmo.org/person/51317"
    }],
    "contributor": [
    {
      "@id": "https://viaf.org/person/7532748",
      "@type": ["Organization","Role"],
      "roleName":"HostingInstitution",
      "name": "Random Data Inc.",
      "url": "https://random.org/info"
    },
    {
      "@id": "https://dx.doi.org/10.13039/100000141",
      "@type": ["Organization","Role"],
      "roleName":"funder",
      "name": "National Science Foundation",
        "legalName": "Division of Ocean Sciences",
        "alternateName": "OCE",
        "url": "https://www.nsf.gov/div/index.jsp?div=OCE",
        "identifier": {
            "@type": "PropertyValue",
            "propertyID": "datacite:doi",
            "value": "10.13039/100000141",
            "url": "https://doi.org/10.13039/100000141"
        }
    },
    {
      "@id": "https://www.bco-dmo.org/contact/dataCurator",
      "@type": "Role",
      "name": "DataCurator",
      "url": "https://www.bco-dmo.org/contact/dataCurator"
    },
    {
      "@id": "https://www.bco-dmo.org/person/471722",
      "@type": ["Person","Role"],
      "additionalType": "geolink:Person",
      "roleName":"DataManager",
      "name": "Ms Anna James",
      "url": "https://www.bco-dmo.org/person/471722"
    }
  ]
ashepherd commented 6 years ago

It looks like from this blog post on schema.org, we can use the Role class explicitly right now: http://blog.schema.org/2014/06/introducing-role.html

It could be that the web documentation hasn’t been updated (since 2014)?

Steve, can you confirm by using just the Role class as stated in the blog and the examples from http://schema.org/Role at the Google testing tool to see what it returns?

On Feb 15, 2018, at 4:19 PM, Stephen Richard notifications@github.com wrote:

I suggest we could type values for creator and contributor with "Role" as well as "Person" or "Organization" to clarify relationship of the agent to the resource. This would also allow more precise mapping from DataCite or ISO19115 metadata. e.g

"creator": [ { "@id": "https://www.bco-dmo.org/person/51317", "@type": ["Person", "Role"], "additionalType": "geolink:Person", "name": "Dr Uta Passow", "roleName":"author", "url": "https://www.bco-dmo.org/person/51317" }], "contributor": [ { "@id": "https://viaf.org/person/7532748", "@type": ["Organization","Role"], "roleName":"HostingInstitution", "name": "Random Data Inc.", "url": "https://random.org/info" }, { "@id": "https://dx.doi.org/10.13039/100000141", "@type": ["Organization","Role"], "roleName":"funder", "name": "National Science Foundation", "legalName": "Division of Ocean Sciences", "alternateName": "OCE", "url": "https://www.nsf.gov/div/index.jsp?div=OCE", "identifier": { "@type": "PropertyValue", "propertyID": "datacite:doi", "value": "10.13039/100000141", "url": "https://doi.org/10.13039/100000141" } }, { "@id": "https://www.bco-dmo.org/contact/dataCurator", "@type": "Role", "name": "DataCurator", "url": "https://www.bco-dmo.org/contact/dataCurator" }, { "@id": "https://www.bco-dmo.org/person/471722", "@type": ["Person","Role"], "additionalType": "geolink:Person", "roleName":"DataManager", "name": "Ms Anna James", "url": "https://www.bco-dmo.org/person/471722" } ] — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

smrgeoinfo commented 6 years ago

@ashepherd, yup it works; there's an example in the IEDA p418 fork. The blog post you reference is what put me onto it. I'm going to use it in the xml to JSON-LD transforms.

ashepherd commented 6 years ago

But one thing they don't do is type it both as Person and Role. Can you try it with making the Dataset creator field point to only a Role, with the Role member field pointing to the person. See from their example:

{
  "@context": "http://schema.org",
  "@type": "Organization",
  "name": "Cryptography Users",
  "member": {
    "@type": "OrganizationRole",
    "member": {
    "@type": "Person",
    "name": "Alice"
    },
    "startDate": "1977"
  }
}
ashepherd commented 6 years ago

Ok, I just tried to follow their example, and it works. This is great, Steve. To do it, you take the property from the Dataset (creator, author or contributor), and use it on the Role like this:

{
  "@context": {
    "@vocab": "http://schema.org/",
    "datacite": "http://purl.org/spar/datacite/",
    "earthcollab": "https://library.ucar.edu/earthcollab/schema#",
    "geolink": "http://schema.geolink.org/1.0/base/main#",
    "vivo": "http://vivoweb.org/ontology/core#"
  },
  "@id": "https://www.bco-dmo.org/dataset/472032",
  "@type": "Dataset",
  "additionalType": [
    "geolink:Dataset",
    "vivo:Dataset"
  ],
  "name": "Test Role for Dataset",
  "creator": [
    {
      "@type": "Role",
      "roleName":"author",
      "creator": {
        "@id": "https://www.bco-dmo.org/person/51317",
        "@type": "Person",
        "additionalType": "geolink:Person",
        "name": "Dr Uta Passow",
        "url": "https://www.bco-dmo.org/person/51317"
      }
    }
  ]
}
ashepherd commented 6 years ago

I'll role this into the diagrams and examples over at the vocabulary. Can you confirm this publishing pattern at IEDA?

smrgeoinfo commented 6 years ago

I don't understand why they repeat the person key-- it doesn't make sense to me, and seems like it adds unnecessary complexity, that's why I simplified.

ashepherd commented 6 years ago

It could be that Role and Person are meant to be disjoint classes? I think they want the same property repeated because in SPARQL 1.1 you can use the ‘+’ or ‘*’ to drill down to the leaf node in both cases. But all good questions we we should ask Dan at the Semantics Symposium. Will you be there?

On Feb 18, 2018, at 5:20 PM, Stephen Richard notifications@github.com wrote:

I don't understand why they repeat the person key-- it doesn't make sense to me, and seems like it adds unnecessary complexity, that's why I simplified.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

ashepherd commented 6 years ago

Just reviewing the Role and Person and, to me, the main concern I have is sharing the following properties between the Person entity and the Role entity.

we might back ourselves into a corner by having the Person and Role share a url, description, identifier.

Properties from Thing

Property Expected Type Description
additionalType URL An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally.
alternateName Text An alias for the item.
description Text A description of the item.
disambiguatingDescription Text A sub property of description. A short description of the item used to disambiguate from other, similar items. Information from other properties (in particular, name) may be necessary for the description to be useful for disambiguation.
identifier PropertyValue  or Text  or URL The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See background notes for more details.
image ImageObject  or URL An image of the item. This can be a URL or a fully described ImageObject.
mainEntityOfPage CreativeWork  or URL Indicates a page (or other CreativeWork) for which this thing is the main entity being described. See background notes for details.Inverse property: mainEntity.
name Text The name of the item.
potentialAction Action Indicates a potential Action, which describes an idealized action in which this thing would play an 'object' role.
sameAs URL URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website.
subjectOf CreativeWork  or Event A CreativeWork or Event about this Thing..Inverse property: about.
url URL URL of the item.
ashepherd commented 6 years ago

Just updated the vocabulary repo and http://geodex.org/voc/

Thank you, @smrgeoinfo . I made a mention of your contribution in the publishing docs.