Closed VladimirAlexiev closed 1 month ago
Some messed up MD tags (appears to be mostly misplaced and/or missing backticks; definitely in the last paragraph; quite possibly elsewhere) may decrease comprehension of what you're trying to say. I suggest viewing your opening comment on the website, and editing the MD tags.
Discussed on call, @mkhraisha to review.
I believe the ask here is use schema.org/identifier
for the identifiers used to identify the specific object and to use https://schema.org/propertyID
for other identifiers for example in the NaturalGasProduct.yml we would have:
I didn't attend to this, will work on it soon.
@mkhraisha, progress on this?
There are also parts of this I should do, assigning myself as well.
@mkhraisha
I believe the ask here is use schema.org/identifier for the identifiers used to identify the specific object and to use https://schema.org/propertyID for other identifiers
No!
identifier
to be pretty much anything, including an ambiguous string that doesn't describe WHAT it is (the conflation described by this issue leads to this exact problem).propertyID
is a way to specify the kind of identifier value.Identifier
for the others: it's best to always use a structured identifiertr:IdentifierSystem
Will take care of this issue soon. We should have one person clean up the credentials for their vertical:
use the Structured Value With Prefix system as laid out in #944
@mkhraisha on the next call can we discuss exactly what needs done on this, pls?
Reading through this I'm not clear on what a property making use of PropertyID would look like.
For example, on CBPEntrySummary
:
manufacturerId:
title: Manufacturer Identifier
description: [...]
type: string
$linkedData:
term: manufacturerId
'@id': https://schema.org/identifier
What would an acceptable revision be? I can dig in further, but thought I'd ask in case it's obvious to someone else in this discussion.
Would that be something like https://traceability.org/identifier/manufacturerId
?
This would create <https://w3id.org/traceability/identifier/ManufacturerID>
and allow other people to reuse to create other IDs.
This is the solution called "Structured Value With Prefix" at https://github.com/w3c-ccg/traceability-vocab/issues/944#issue-2181065847
@rhofvendahl your example repeats the conflation I've explained above. It takes a specific json key and maps it to a more generic RDF property. @nissimsan and @mkhraisha introducing Traceability-specific URLs for trade-related identifiers is a good idea: making a register of all such identifiers will be a great contribution. But you should also decide whether these will be straight RDF props, or thesaurus entries to be used in an Identifier class.
11 schemas use a URL containing
/identifier
multiple times:After #570 is fixed, this would probably mean they use the same
schema.org/identifier
URL multiple times. This probably means they conflate several different identifiers in one field. I can see two cases, eg:NaturalGasProduct.yml
This conflates two different objects (the well and the gas extracted from it) into the same RDF prop
identifier
.NaturalGasProduct.UWI, NaturalGasProduct.HSCode
.NaturalGasProduct.facility.UWI, NaturalGasProduct.product.HSCode
One of the worst offenders is EntrySummary that conflates 5 values to the same RDF prop
identifier
, eg below two identifiers of entry and of manufacturer are conflated:ImmediateDelivery.yml has a slightly different problem:
assignedIdentifier
to two different objects (ImmediateDelivery vs Party): okentryNumber
andassignedIdentifier
to the same RDF propidentifier
assignedIdentifier
. The fact thatassignedIdentifierType
accommodates multiple agencies suggests that it should allow multiple identifiers.The cleanest way to solve all these cases is to use "structured identifiers", i.e. simple records that record the identifier value, but also its type ("propertyID"). And don't use specific sub-properties of identifier (which would be redundant with this identifier type). Using schema.org, this can be expressed as follows in turtle (prefixes omitted for brevity). The URLs also reflect some "URL policy" for making URLs of sub-objects rather than using blank nodes:
Better, you can define
traceability:Idenifier
as a subclass of:PropertyValue
specialized for expressing structured identifiers. You could also record extra data such as issuer, date issued, valid until, etc.adms:Identifier
has similar stuff, and we used it in the euBusinessGraph ontology.