David Booth, Detlef Grittner, Erich Bremer, EricP, Jim Balhoff, Rob Hausam
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
DICOM directory files
erich: They're just DICOM files. So I added code to my parser to read them. … I like Detlef's idea conceptually, but one ref to the pt may be problematic. … Eg, pt age is the age at the time when the image was done. So merging files could give the pt multiple ages.
detlef: We found the same problem. In the rec there is something for the ID of pt data uses a study model rather than pt. The study is always unique in time. A different study could have a different age. … So the age is associated w the study, not directly w the pt. … If you want to merge the pt you need other unique pt IDs, like SSN.
erich: Which properties would roll up, and which would be taken out?
detlef: Every slice has its own file, up to 330 times if you don't merge them. But only one study and one pt.
erich: About a third of the data was redundant or not needed.
dbooth: Sounds like the semantics of the properties need to be understood, to know which ones can be rolled up to the pt, and which need to be rolled up to the study.
dbooth: What questions do we need to answer?
detlef: What is the use of RDF? Why use it?
ericp: On challenge in FHIR land, and you want to merge data, they say to make that other model a logical model. … But we can say that there are people who want to use RDF, and we want to make it available to them.
dbooth: Agree. It's too difficult to convince people to use RDF. Let them come to us.
erich: What are the translational rules to produce RDF from DICOM? … If we want to drop all of the redundancies, what would stay and what would merge?
detleft: Follow DICOM std. It says "If it is the same ID, then it SHALL be the same". … If you follow that rule then merging is easy.
erich: I'll give that a whirl. … I guess we'd have predicates like dcm:hasSeries … Josh Moore is a fan of RDF, interested in how to get DICOM metadata into the zar file format. … Guessing he's interested in FHIR also. … That's OME. … He's another use case.
ericp: I know Josh and can talk w him. … about FHIR and LDP use cases.
jim: Tim Prudhomme set up a test file that makes it much easier to test the output, without running the whole build.
ericp: Canonical pretends that it's just an xsd:anyURI … Canonical permits a pipe symbol in it, which is no longer anRFC3986 URI, but we allow it to be called an xsd:AnyURI
ericp: Also it would be nice to use boolean true symbol (in Turtle) instead of "true"^^xsd:boolean .
erich: detlef suggested using instance UID. Two different files might use the same one, causing a clash. Should we worry about that?
detlef: In our case, the first wins and the other goes into quarantine for human intervention.
erich: That's similar to other clashes that can happen. I'm okay with that. I used to use a file hash to avoid clash. … But my DCM to RDF converter allows either. I'm fine w your suggestion.
detlef: THere's a second in DICOM to use your own IDs without registering your root ID, like for research projects that need to shuffle around file. They use their own IDs. … So there's one that means "locally generated" ID
erich: If someone copies a folder (w copy of original files) the metadata will be identical. If I use the SOP instance UID, I won't get duplicate because they're literally the same file. … But for a SOP instance ID in converstion to RDF, I want to see 'derived from ...' … I want to see that there are multiple files that are really the same thing. … Want to avoid duplicate series. … Want to avoid accidental file duplication: same file but different folders.
detlef: But what if the data is transferred over a network? The info is lost.
detlef: We treat them as completely different files. … If there are different sub-instance UIDs, they'll be treated as different.
erich: I need a way to detect duplicated files.
detlef: Need to recognize that subinstance UID is always part of it. Might need to look into the file.
erich: I was using prov:derivedFrom … So I might have 10 prov:derivedFrom but they're all copies of the same file.
detlef: Sometimes the original file program is not relevant. subinstance UID is enough to find a local copy.
dbooth: Pack system?
erich: Main engine for imaging system.
dbooth: Any harm in having also the prov:derivedFrom ?
detlef: No harm, but could be confusing.
erich: It would expose details of the original system that might not want to be exposed. … I'm fine w leaving it as an option on my own converter.
gaurav: We had a spreadsheet of all of the naming and code systems in HL7 UTG. Updated that, and added a link to the issue. … It's in its own branch. A Scala script creates it. Probably don't want to integrate the script into UTG itself. Where to put it?
dbooth: I suggest the HCLS github space.
ACTION: Gaurav to look at where to store the scala script
gaurav: Also created a ticket for IRI stem lookup code being out of date.
jim: I think there were other issues I was going to address.. I'll look. … I also opened an issue a out xsd:anyURI strings that have pipe symbols. Jena doesn't complain about them. … HAPI FHIR code says "Illegal URI". It has a regex. … Jena doesn't complain, but only because it's not parsing any URIs. … In w3c/hcls-fhir-rdf#155 Jena allows the fhir:v "http://hl7.org/fhir/ValueSet/all-languages|5.0.0"^^xsd:anyURI ; statmeent, but complains about the hir:link <http://hl7.org/fhir/ValueSet/all-languages|5.0.0> statmement.
dbooth: We need ericP for further discussion.
DICOM issue 144
erich: Want to look more at 144 and check w our radiology people.
Maybe use a relative URI like: Maybe relative URI like: <dcm:30060080/0>
erich: That's similar to my suggestion after it is expanded w the base URI
dbooth: Yes.
eric: Or we could go with a simpler solution that would allow users to choose their own URI namespace for it, which would not guarantee that indpendent users would detect the same object.
dbooth: If you use bnodes, then RDF cannot link them automatically even though, using DICOM knowledge, two bnodes are intended to represent the same thing.
ACTION: Erich to try this in his converter, w URN
erich: I'm also working on a SHACL representation of DICOM
dbooth: Relative URIs only exist at the syntactic level, for example in Turtle. RDF itself has no notion of relative URIs. They are immediately converted to absolute URIs (using whatever base URI is currently applicable) when a Turtle document is loaded into a triple store.
dbooth: In summary, if we leave those list item identifiers as bnodes, then two independent users who load the same file and understand DICOM could infer that those two first items in that list are actually the same thing, but the triplestore would not know to join them for you automatically.
detlef: Would like to be able to reference each item within a list
erich: Want to also be able to reference the list itself?
detlef: We have both arrays and sequences. Sequences can be complex objects, whereas an array can only hold primitive objects. … And a sequence has a common template for all objects in it.
eric: I'll try generating a URN for each element of the list.
dbooth: In detlef's example of a sequence in which one item is the heart, and you want to reference it, how is that done in DICOM?
ACTION: Detlef to provide an exmaple of how he currently references the heart in an example like that
detleft: They look like foreign key references
detlef: Also, DICOM has an ER model, that says how these objects reference each other. It is hierarchical, and uses relationship links. These could be easily modeled in RDF. … But it broke down into FKs in RDMSs, because the std they were implementing didn't allow them to implement the ER model directly. But I think we could in RDF. Hierarchy is just a special case for an RDF graph.
ACTION: Detlef to create an issue for that
eric: Is there a std for the relational model? Detlef: No. The official std is the ER model.
eric: What about ordering of attributes?
detlef: The order is sometimes very important.
ACTION: Erich to add another option to turn list elements that start w bnode, turn it into a URN indicating the index into the list.
David Booth, Erich Bremer, EricP, Gaurav Vaidya, Jim Balhoff
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
IRI stems
gaurav: This is is logged w FHIR folks: https://jira.hl7.org/browse/FHIR-42696 … One of the docs refer to rdf.html but not the full path, so i submitted a request and they decided to make it a link. Hasn't been done yet. … And I did a PR to make the change.
HL7/fhir#3205 … Also, I have a script to gen all the code systems and naming systems. We decided it should go into the HCLS FHIR RDF repo, and I've got that ready. … Someone needs to review it.
erich: Working on the list stuff we discussed last week. But every time you go into a sublist, you're appending it to the upper list. Prob done by next wk. Skolemizing each bnode item in a list.
dbooth: Noticed that the property names need to be uncurried and type arcs added for the fhir:effective[x] properties. Filing this as a technical correction. Agreed?
jim, gaurav: Yes.
Updating examples
https: //github.com/w3c/hcls-fhir-rdf/issues/154
jim: I have a fix for using native Turtle types.
... Do we want decimals have a decimal point added to use the shorthand turtle?
eric: Look on datatypes page
jim: The date one is handled in the code already.
eric: The FHIR SheX schema tries for maximal typing.
... Suggest having a ToShorthand function, that sometimes gives real Turtle shorthand, and sometimes uses hat types when needed.
dbooth: Could we map any FHIR datatype to double?
eric: Not safely. If FHIR were later to use double then we'd be stuck if we mapped something to double now.
dbooth: Helpful to gen diffs of the examples, so that reviewers can easily see the resulting changes.
erich: Want to use a reference off the SOP instance OID, w the property appended.
dbooth: Need to be careful not to squat on URN space. We'd have to register a subspace of URN space and insert something before the OID part.
erich: Is it syntactically legal to append things to a URN using slashes?
example URN Erich generated: <urn:oid:1.3.6.1.4.1.5962.99.1.2280943358.716200484.1363785608958.60.0/00120064/0>
eric: You're allowed to have two URIs for the same thing, but encouraged to use the same URI
... Eg, ideally wikipedia and dppedia would use the same URIs, but they don't.
... If we provide an algorithm that let's people invent identifiers that share things, they could use the same IDs for the same thing where it's practical.
... I.e., we don't need a soln that will guarantee the same URIs, but give them a pattern they can use to use the same URIs if desired.
... E.g., something in the OID space, or something in a URL space of ours.
<scribe> ACTION: EricP to make a wiki page for discussing options, and link it from issue 146
erich: DICOM OIDs are limited to 64 chars … But that restriction would not apply in RDF
ericp: concerned about other tools that people might want to use on our proposed extended OIDs (with list item index added) … Sometimes things from RDF land bleeds back to other lands, like JSON.
dbooth: We could tack that info onto the front of the URN instead, before "oid:".
eric: Could register a new OID for our RDF stuff, then prefix the list index to the OID.
erich: The 64 char limit comes from DICOM.
ACTION: Erich to check on allows syntax for OIDs, to add chars at the end
RDF Examples
gaurav: Grahame merged all of Jim's open PRs. He's going to work on a PR next, for shorthand values in Turtles.
erich: If you add a frag ID to the URN, then you aren't squatting on someone else's namespace. … How to refer to subportions of files? DICOM is a container format, and we want to to refer to a subsection.
eric: The frag ID can also just provide additional info, not necessarily related to the URI on which it is affixed.
dbooth: Media type seems to own the frag ID interpretation
erich: Should get DICOM's buy-in to treat the frag ID as identifying a portion of the DICOM file
eric: Media type is used for both semantics and format. The pluses try to make that less painful. … If we're trying to identify the 5th item of list 7, that's applicable to more than just RDF.
detlef: Would this allow us to identify any attribute in DICOM?
eric: Like JSON path … Suppose you have a JSON path in JSON-LD, then that would effectively give you a URI for it, instead of just a bnode.
erich: The problem we want to solve is to have an identifier for each element of a list. … I want to talk w DICOm folks soon, bc they want to be involved.
dbooth: specifically suggest using JSON path in the frag ID?
AGREED: suggest using JSON path in the DICOM frag ID
ADJOURNED
Minutes manually created (not a transcript), formatted by scribe.perl version 242 (Fri Dec 20 18:32:17 2024 UTC).
David Booth, Detlef Grittner, Erich Bremer, Jim Balhoff
Regrets
-
Chair
David Booth
Scribe
dbooth
Meeting minutes
FHIR RDF examples
jim: Made another PR … Linked from repo issue … Also make a branch from that branch and committed all the TUrtle outputs for the examples, and then commited that, to make it easy to see the changes on github.
DICOM
erich: I can change the slash to a hash, to make it a frag ID on the URN. … Might write a paper on this. … And think others on this call should also be co-authors.
dbooth: I'd be happy to help edit.
erich: I'm also interested in using a SOLID pod for this.
detlef: We have a DICOM ont, but it's closed source.
erich: Can we converge on a single representation, instead of having multiple dialects?
ACTION: Erich to change his code to gen URNs with JSON path frag ID