Open matentzn opened 11 months ago
Is this necessary, given #44? Couldn't you pack all Of these annotations inside a theoretical meta object for a given xref, and just assume the default predicate is hasdbxref?
I find this terrible... Like really bad. Chris also suggested the same as you (overloading xref), but it really offends my sense of aesthetics. It is also very hard to communicate, unless we want to somehow start educating the world that "mappings" are types of "xrefs" 😱 . 🙅
I think the alternatives are either adding syntactic sugar:
"mappings": [
{
"pred": "exact",
"val": "UMLS:C4310678",
"xrefs": [
"Orphanet:123"
],
"meta": {
"basicPropertyValues": [
{
"pred": "sssom:mapping_justification",
"val": "semapv:ManualMappingCuration"
},
{
"pred": "sssom:confidence",
"val": 0.9
}
]
}
},
{
"pred": "related",
"val": "OMIM:617182",
"meta": {
"basicPropertyValues": [
{
"pred": "sssom:mapping_justification",
"val": "semapv:ManualMappingCuration"
},
{
"pred": "sssom:confidence",
"val": 0.9
}
]
}
}
],
or leaving it at:
"basicPropertyValues": [
{
"pred": "http://www.w3.org/2004/02/skos/core#exactMatch",
"val": "http://linkedlifedata.com/resource/umls/id/C4310678"
"meta": {
"basicPropertyValues": [
{
"pred": "sssom:mapping_justification",
"val": "semapv:ManualMappingCuration"
},
{
"pred": "sssom:confidence",
"val": 0.9
}
]
}
},
{
"pred": "http://www.w3.org/2004/02/skos/core#relatedMatch",
"val": "https://omim.org/entry/617182",
"meta": {
"basicPropertyValues": [
{
"pred": "sssom:mapping_justification",
"val": "semapv:ManualMappingCuration"
},
{
"pred": "sssom:confidence",
"val": 0.9
}
]
}
}
]
No good solutions here.
For the majority of users, the function of (term-level) xrefs and mappings are interchangeable, this is what xrefs have always been used for (with a handful of known overloading cases, e.g CHEBI class-level xrefs to PMIDs). IMO it's perfectly reasonable to say xrefs are mappings that just haven't committed to a predicate.
OTOH this is a good chance to make a break with the past and move the community to start using semantically committed mappings. But there will be a long period of confusion where some ontologies will have one or the other, and others will include both (and having two ways to get essentially the same information is confusing).
I am tending towards this, and your proposal for a new field in meta called "mappings" is the best
On Thu, Oct 26, 2023 at 9:25 AM Nico Matentzoglu @.***> wrote:
I find this terrible... Like really bad. Chris also suggested the same as you (overloading xref), but it really offends my sense of aesthetics. It is also very hard to communicate, unless we want to somehow start educating the world that "mappings" are types of "xrefs" 😱 . 🙅
— Reply to this email directly, view it on GitHub https://github.com/geneontology/obographs/issues/102#issuecomment-1781449837, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMMOOMOT6OKE7BGYAIVZTYBKFG3AVCNFSM6AAAAAA6Q2SS76VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBRGQ2DSOBTG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>
I don’t have a strong opinion either way and will support whatever the Java implementer is willing to trudge through :)
Thank you both for your comments! :) You know I am in favour, I wonder now how to move this forward.
Can I get this absolutely clear, please. Given a current BasicPropertyValue
(i.e. generic type), when the predicate equals "http://www.w3.org/2004/02/skos/core#relatedMatch" or "http://www.w3.org/2004/02/skos/core#exactMatch", these should instead be represented as a new specialised type MappingPropertyValue
, contained in Meta
meta:
definition: string
synonyms: SynonymPropertyValue[]
xrefs: XrefPropertyValue[]
mappings: MappingPropertyValue[] # NEW!
basicPropertyValues: BasicPropertyValue[]
where the MappingPropertyValue
is essentially a type of XrefPropertyValue
and has the following fields:
mapping:
lbl: string
pred: string
val: string
xrefs: string[] # should this be `sources` ?
meta: Meta
Examples below, however this will be ontology dependent as HPO does not use skos:exactMatch
so the xrefs
remain the same, MONDO does use skos:exactMatch
and therefore contains mappings
and xrefs
.
For the case of skos:relatedMatch
, what is that supposed to mean when defined as a 'mapping'? Shouldn't a 'mapping' be a 1:1 relationship i.e. an exact match?
As you mentioned 'xref' is a pretty non-committal term, sometimes it is used as a direct or indirect mapping but other times it is used to describe the source of an assertion (generally when used in the nested fashion). Wouldn't it be useful to define this nested xref
as a source
instead?
<!-- http://purl.obolibrary.org/obo/MONDO_0014957 -->
<owl:Class rdf:about="http://purl.obolibrary.org/obo/MONDO_0014957">
<rdfs:subClassOf rdf:resource="http://purl.obolibrary.org/obo/MONDO_0003847"/>
<rdfs:subClassOf rdf:nodeID="genid212486"/>
<obo:IAO_0000233 rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://github.com/monarch-initiative/mondo/issues/4521</obo:IAO_0000233>
<oboInOwl:hasDbXref>OMIM:617182</oboInOwl:hasDbXref>
<oboInOwl:hasDbXref>UMLS:C4310678</oboInOwl:hasDbXref>
<oboInOwl:hasExactSynonym>LADCI</oboInOwl:hasExactSynonym>
<oboInOwl:hasExactSynonym>language delay and ADHD/cognitive impairment with or without cardiac arrhythmia</oboInOwl:hasExactSynonym>
<oboInOwl:hasExactSynonym>language delay and attention Deficit-hyperactivity disorder/cognitive impairment with or without Cardiac arrhythmia</oboInOwl:hasExactSynonym>
<oboInOwl:hasExactSynonym>language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia; LADCI</oboInOwl:hasExactSynonym>
<oboInOwl:id>MONDO:0014957</oboInOwl:id>
<rdfs:label>language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia</rdfs:label>
<skos:exactMatch rdf:resource="http://linkedlifedata.com/resource/umls/id/C4310678"/>
<skos:exactMatch rdf:resource="https://omim.org/entry/617182"/>
</owl:Class>
<owl:Restriction rdf:nodeID="genid212486">
<owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/RO_0004003"/>
<owl:someValuesFrom rdf:resource="http://identifiers.org/hgnc/4401"/>
</owl:Restriction>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf"/>
<owl:annotatedTarget rdf:resource="http://purl.obolibrary.org/obo/MONDO_0003847"/>
<oboInOwl:source>https://orcid.org/0000-0001-5208-3432</oboInOwl:source>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf"/>
<owl:annotatedTarget rdf:nodeID="genid212486"/>
<oboInOwl:source>MONDO:mim2gene_medgen</oboInOwl:source>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasDbXref"/>
<owl:annotatedTarget>OMIM:617182</owl:annotatedTarget>
<oboInOwl:source>MONDO:equivalentTo</oboInOwl:source>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasDbXref"/>
<owl:annotatedTarget>UMLS:C4310678</owl:annotatedTarget>
<oboInOwl:source>MONDO:equivalentTo</oboInOwl:source>
<oboInOwl:source>MONDO:ncbi_mim2gene_medline</oboInOwl:source>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasExactSynonym"/>
<owl:annotatedTarget>LADCI</owl:annotatedTarget>
<oboInOwl:hasDbXref>OMIM:617182</oboInOwl:hasDbXref>
<oboInOwl:hasSynonymType rdf:resource="http://purl.obolibrary.org/obo/mondo#ABBREVIATION"/>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasExactSynonym"/>
<owl:annotatedTarget>language delay and ADHD/cognitive impairment with or without cardiac arrhythmia</owl:annotatedTarget>
<oboInOwl:hasDbXref>OMIM:617182</oboInOwl:hasDbXref>
<oboInOwl:hasDbXref>OMIM:genemap2</oboInOwl:hasDbXref>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/MONDO_0014957"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasExactSynonym"/>
<owl:annotatedTarget>language delay and attention Deficit-hyperactivity disorder/cognitive impairment with or without Cardiac arrhythmia</owl:annotatedTarget>
<oboInOwl:hasDbXref>OMIM:617182</oboInOwl:hasDbXref>
</owl:Axiom>
Currently becomes:
{
"id" : "http://purl.obolibrary.org/obo/MONDO_0014957",
"lbl" : "language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia",
"type" : "CLASS",
"meta" : {
"synonyms" : [ {
"synonymType" : "http://purl.obolibrary.org/obo/mondo#ABBREVIATION",
"pred" : "hasExactSynonym",
"val" : "LADCI",
"xrefs" : [ "OMIM:617182" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and ADHD/cognitive impairment with or without cardiac arrhythmia",
"xrefs" : [ "OMIM:617182", "OMIM:genemap2" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and attention Deficit-hyperactivity disorder/cognitive impairment with or without Cardiac arrhythmia",
"xrefs" : [ "OMIM:617182" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia; LADCI"
} ],
"xrefs" : [ {
"val" : "OMIM:617182"
}, {
"val" : "UMLS:C4310678"
} ],
"basicPropertyValues" : [ {
"pred" : "http://purl.obolibrary.org/obo/IAO_0000233",
"val" : "https://github.com/monarch-initiative/mondo/issues/4521"
}, {
"pred" : "http://www.w3.org/2004/02/skos/core#exactMatch",
"val" : "http://linkedlifedata.com/resource/umls/id/C4310678"
}, {
"pred" : "http://www.w3.org/2004/02/skos/core#exactMatch",
"val" : "https://omim.org/entry/617182"
} ]
}
}
With mappings
becomes:
{
"id" : "http://purl.obolibrary.org/obo/MONDO_0014957",
"lbl" : "language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia",
"type" : "CLASS",
"meta" : {
"synonyms" : [ {
"synonymType" : "http://purl.obolibrary.org/obo/mondo#ABBREVIATION",
"pred" : "hasExactSynonym",
"val" : "LADCI",
"xrefs" : [ "OMIM:617182" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and ADHD/cognitive impairment with or without cardiac arrhythmia",
"xrefs" : [ "OMIM:617182", "OMIM:genemap2" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and attention Deficit-hyperactivity disorder/cognitive impairment with or without Cardiac arrhythmia",
"xrefs" : [ "OMIM:617182" ]
}, {
"pred" : "hasExactSynonym",
"val" : "language delay and attention deficit-hyperactivity disorder/cognitive impairment with or without cardiac arrhythmia; LADCI"
} ],
"xrefs" : [ {
"val" : "OMIM:617182"
}, {
"val" : "UMLS:C4310678"
} ],
"mappings" : [ {
"pred" : "http://www.w3.org/2004/02/skos/core#exactMatch",
"val" : "UMLS:C4310678" # URI becomes CURIE
}, {
"pred" : "http://www.w3.org/2004/02/skos/core#exactMatch",
"val" : "OMIM:617182" # URI becomes CURIE
} ],
"basicPropertyValues" : [ {
"pred" : "http://purl.obolibrary.org/obo/IAO_0000233",
"val" : "https://github.com/monarch-initiative/mondo/issues/4521"
} ]
}
}
<!-- http://purl.obolibrary.org/obo/HP_0000006 -->
<owl:Class rdf:about="http://purl.obolibrary.org/obo/HP_0000006">
<rdfs:subClassOf rdf:resource="http://purl.obolibrary.org/obo/HP_0034345"/>
<obo:IAO_0000115>A mode of inheritance that is observed for traits related to a gene encoded on one of the autosomes (i.e., the human chromosomes 1-22) in which a trait manifests in heterozygotes. In the context of medical genetics, an autosomal dominant disorder is caused when a single copy of the mutant allele is present. Males and females are affected equally, and can both transmit the disorder with a risk of 50% for each child of inheriting the mutant allele.</obo:IAO_0000115>
<oboInOwl:hasAlternativeId>HP:0001415</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001447</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001448</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001451</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001452</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001455</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001456</oboInOwl:hasAlternativeId>
<oboInOwl:hasAlternativeId>HP:0001463</oboInOwl:hasAlternativeId>
<oboInOwl:hasDbXref>SNOMEDCT_US:263681008</oboInOwl:hasDbXref>
<oboInOwl:hasDbXref>UMLS:C0443147</oboInOwl:hasDbXref>
<oboInOwl:hasExactSynonym>Autosomal dominant</oboInOwl:hasExactSynonym>
<oboInOwl:hasExactSynonym>monoallelic_autosomal</oboInOwl:hasExactSynonym>
<oboInOwl:hasRelatedSynonym>Autosomal dominant form</oboInOwl:hasRelatedSynonym>
<oboInOwl:hasRelatedSynonym>Autosomal dominant type</oboInOwl:hasRelatedSynonym>
<oboInOwl:id>HP:0000006</oboInOwl:id>
<rdfs:label>Autosomal dominant inheritance</rdfs:label>
<!-- N.B. MISSING <skos:exactMatch /> TAGS, SO MAPPINGS WILL NOT BE CREATED -->
</owl:Class>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/HP_0000006"/>
<owl:annotatedProperty rdf:resource="http://purl.obolibrary.org/obo/IAO_0000115"/>
<owl:annotatedTarget>A mode of inheritance that is observed for traits related to a gene encoded on one of the autosomes (i.e., the human chromosomes 1-22) in which a trait manifests in heterozygotes. In the context of medical genetics, an autosomal dominant disorder is caused when a single copy of the mutant allele is present. Males and females are affected equally, and can both transmit the disorder with a risk of 50% for each child of inheriting the mutant allele.</owl:annotatedTarget>
<oboInOwl:hasDbXref rdf:resource="https://orcid.org/0000-0002-0736-9199"/>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/HP_0000006"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasExactSynonym"/>
<owl:annotatedTarget>monoallelic_autosomal</owl:annotatedTarget>
<oboInOwl:hasSynonymType rdf:resource="http://purl.obolibrary.org/obo/HP_0034334"/>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/HP_0000006"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasRelatedSynonym"/>
<owl:annotatedTarget>Autosomal dominant form</owl:annotatedTarget>
<oboInOwl:hasDbXref rdf:resource="https://orcid.org/0000-0002-5316-1399"/>
</owl:Axiom>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/HP_0000006"/>
<owl:annotatedProperty rdf:resource="http://www.geneontology.org/formats/oboInOwl#hasRelatedSynonym"/>
<owl:annotatedTarget>Autosomal dominant type</owl:annotatedTarget>
<oboInOwl:hasDbXref rdf:resource="https://orcid.org/0000-0002-5316-1399"/>
</owl:Axiom>
currently and with mappings
remains the same:
{
"id" : "http://purl.obolibrary.org/obo/HP_0000006",
"lbl" : "Autosomal dominant inheritance",
"type" : "CLASS",
"meta" : {
"definition" : {
"val" : "A mode of inheritance that is observed for traits related to a gene encoded on one of the autosomes (i.e., the human chromosomes 1-22) in which a trait manifests in heterozygotes. In the context of medical genetics, an autosomal dominant disorder is caused when a single copy of the mutant allele is present. Males and females are affected equally, and can both transmit the disorder with a risk of 50% for each child of inheriting the mutant allele.",
"xrefs" : [ "https://orcid.org/0000-0002-0736-9199" ]
},
"synonyms" : [ {
"pred" : "hasExactSynonym",
"val" : "Autosomal dominant"
}, {
"synonymType" : "http://purl.obolibrary.org/obo/HP_0034334",
"pred" : "hasExactSynonym",
"val" : "monoallelic_autosomal"
}, {
"pred" : "hasRelatedSynonym",
"val" : "Autosomal dominant form",
"xrefs" : [ "https://orcid.org/0000-0002-5316-1399" ]
}, {
"pred" : "hasRelatedSynonym",
"val" : "Autosomal dominant type",
"xrefs" : [ "https://orcid.org/0000-0002-5316-1399" ]
} ],
"xrefs" : [ {
"val" : "SNOMEDCT_US:263681008"
}, {
"val" : "UMLS:C0443147"
} ],
"basicPropertyValues" : [ {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001415"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001447"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001448"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001451"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001452"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001455"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001456"
}, {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasAlternativeId",
"val" : "HP:0001463"
} ]
}
}
Alright, after some back and forth, @julesjacobsen has now convinced me that extending the existing schema for xrefs
to support semantic predicates is less destructive and confusing for the community. So basically, similarly to the way synonyms are modelled:
"synonyms" : [ {
"synonymType" : "http://purl.obolibrary.org/obo/mondo#ABBREVIATION",
"pred" : "hasExactSynonym",
"val" : "LADCI",
"xrefs" : [ "OMIM:617182" ]
}
We would extend the xref system to semantic precision, from what it is right now:
"xrefs" : [ {
"val" : "MESH:D010319"
}
to semantic:
"xrefs" : [ {
"val" : "MESH:D010319",
"pred" : "exactMatch"
}
My biggest qualm (other than the fact that my mission to obliterate the notion of "xref" from the face of the earth) with this is that this would only neatly work for standard mapping predicates, like exact, related etc. We are introducing other mapping relations, like "crossSpeciesExactMatch" or others would be harder, because we are not introducing another type system like synonym types for these (relying instead of actual predicates).
I'm not sure I understand the qualm. Isn't it good that you can use whatever CURIE you want to specify the predicate? And if none is given, it just means a default predicate from OIO?
Yes that would be good, but that is not what it says right now:
"xrefs" : [ {
"val" : "MESH:D010319",
"pred" : "exactMatch"
}
is not using a CURIE, it is using a built in enum,
"xrefs" : [ {
"val" : "MESH:D010319",
"pred" : "skos:exactMatch"
}
That would be better, but less obographs style.
How do open-ended predicates work right now for translating between OWL and SSSOM? Does the mapper assume only the fixed predicates?
It's important for our whole stack to be aligned here.
I am not yet fully convinced by the "destructive and confusing for the community" argument. Or rather, I don't think this is unique to obographs. Moving ontologies to specific predicates either as a replacement to or as semi-duplicative xref shadows is going to be confusing to everyone, whether they are consuming obojson, rdf/owl, or obo format. We should open this more generally
On Mon, Nov 20, 2023 at 7:28 AM Nico Matentzoglu @.***> wrote:
Yes that would be good, but that is not what it says right now:
"xrefs" : [ { "val" : "MESH:D010319", "pred" : "exactMatch" }
is not using a CURIE, it is using a built in enum,
"xrefs" : [ { "val" : "MESH:D010319", "pred" : "skos:exactMatch" }
That would be better, but less obographs style.
— Reply to this email directly, view it on GitHub https://github.com/geneontology/obographs/issues/102#issuecomment-1819285806, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMMONN2R7D7DTX67YV7MDYFNZLPAVCNFSM6AAAAAA6Q2SS76VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJZGI4DKOBQGY . You are receiving this because you commented.Message ID: @.***>
How do open-ended predicates work right now for translating between OWL and SSSOM? Does the mapper assume only the fixed predicates?
There are certain predicates that are by default assumed to be valid mapping predicates, but a user can pass in any predicate id to process as a mapping predicate.
Moving ontologies to specific predicates either as a replacement to or as semi-duplicative xref shadows is going to be confusing to everyone, whether they are consuming obojson, rdf/owl, or obo format. We should open this more generally
Can you give an example? I am not sure how this relates to my comment above https://github.com/geneontology/obographs/issues/102#issuecomment-1819269397
I thought this is what you where suggesting?
What's wrong with saying "pred" : "skos:exactMatch"
and have that resolve to https://www.w3.org/2009/08/skos-reference/skos.html#exactMatch via the resources (like what @cthoyt mentions above)? This means libraries can interpret what they know and safely fall back to their original interpretations of an unasserted xref
.
My point about adding a predicate to a xref is that it is simply clarifying an existing data structure and a non-breaking, additive change. I agree than defining it as an enum is by definition fixed and therefore might not be the best choice.
What's wrong with saying "pred" : "skos:exactMatch"
yeah, maybe that is the best way. Its a bit inconsistent with the way we do synonyms, but not worse than my above mappings
proposal!
Like this?