- From: David Booth <david@dbooth.org>
- Date: Thu, 12 Jul 2018 20:37:52 -0400
- To: semantic-web@w3.org
On 07/12/2018 08:01 PM, Sebastian Samaruga wrote: > Hi, sorry for my ignorance but, could an XML DOM / XSL / XSLT approach > help with the declarative notion of templates working over a > canonicalized / normalized representation of a graph, maybe with help of > context resources / nodes? If you are able to create a canonicalized representation of each graph then the main problem is solved, and I don't think it would matter much which serialization you use, as long as the serialization deterministically mirrors the canonicalization. David Booth > > Regards, Sebastian. > > http://exampledotorg.blogspot.com > > > On Wed, Jul 11, 2018, 4:15 PM David Booth <david@dbooth.org > <mailto:david@dbooth.org>> wrote: > > On 07/11/2018 12:57 PM, Victor Porton wrote: > > I am writing a program which takes decisions based on several RDF > files > > which it may download. > > > > How to make my program deterministic? (no change in the RDF files > => no > > change in program decisions) > > > > So I want to retrieve triples in a fixed ("deterministic") order, if > > this is possible. > > > > I use Python with rdflib. > > Short answer: canonicalize your RDF files when you receive them, by > parsing and re-serializing using a suitable tool. Then compare the > newly receive canonical file with the previous canonical file, using > standard text-based diff comparison, to find out if anything changed. > > Longer explanation: This is a weakness in standard RDF, and the origin > of the problem is due to the semantics of blank nodes. Instead of > being > able to easily compare two RDF graphs for equality, as you can do in > most data representations, in RDF you have to check for graph > isomorphism, which according to wikipedia "is not known to be solvable > in polynomial time nor to be NP-complete". (I don't know if rdflib > offers a graph isomorphism function, but if so then you could use that.) > > This graph isomorphism problem is why no RDF canonicalization algorithm > has been adopted as a W3C standard to date. However, most RDF > graphs in > practice do not cause the canonicalization algorithms to blow up. And > if blank node usage is modestly restricted to avoid blank node cycles, > then the canonicalization algorithms are guaranteed to be easy and > fast. > This is a direction that I advocate and described in "Well Behaved > RDF: A Straw-Man Proposal for Taming Blank Nodes": > http://dbooth.org/2013/well-behaved-rdf/Booth-well-behaved-rdf.pdf > > One bit of good news is that there has been significant progress in > JSON-LD toward adopting a canonicalization standard, in part because it > is also needed for digital signatures. A draft spec is here (though at > the moment it is called "normalization" instead of "canonicalization"): > https://json-ld.github.io/normalization/spec/index.html > Unfortunately that document is out of scope for the current JSON-LD > working group, so there is still no clear timeline for it to become a > W3C standard: > https://www.w3.org/2018/03/jsonld-wg-charter.html > > I hope that helps. > > David Booth > > >
Received on Friday, 13 July 2018 00:38:16 UTC