[Zope3-dev] Re: RDFLib and Zope 3
Daniel Krech
eikeon at eikeon.com
Thu Sep 1 12:51:29 EDT 2005
On Sep 1, 2005, at 11:00 AM, Florent Guillaume wrote:
> Gary Poster wrote:
>
>> On Aug 23, 2005, at 8:07 PM, Michel Pelletier wrote:
>>
>>> On Tue, 2005-08-23 at 18:04 -0400, Gary Poster wrote:
>>>
>>>
>>>
>>>> The relationship between ZODB content objects, their int id as
>>>> provided by the pertinent intid utility, and a (theoretical)
>>>> corresponding RDF URI is what I'm having a hard time not making
>>>> hacky
>>>> in my mind. I'll think about it some more.
>>>>
>>>>
>>>
>>> They might not be that hacky, this might be the wrong direction
>>> to take
>>> but URI's don't have to be visually meaningful, blank nodes, for
>>> example, are usually just '_:' concatenated to a random opaque
>>> string.
>>> If the URI were 'zope:XXXXXXXX' (maybe path/to/intid/
>>> util:XXXXXXXX) that
>>> would work just as well, it would also be trival to transform into a
>>> feasible join key if the URI was also a URL that looked up,
>>> instead of
>>> some network resource, an intid.
>>>
>>> Actually being able to trivially transform an intid to an rdflib URI
>>> might be something to think about. Thinking about it more, the
>>> current
>>> Zemantic uses the physical path of the object as the rdf:about=""
>>> URI
>>> when an object adds itself, because honestly I could think of no
>>> other
>>> URI in Zope. This is obviously wrong, but I didn't have a
>>> better answer
>>> in paris. Why not use the `intid` plus some URI sugar? If the
>>> URI and
>>> the intid can be easily converted from one to the other then
>>> that should
>>> solve the whole problem, no?
>>>
>
> Here's another way to work with intids that I think could work:
>
> In rdflib in some backends like IOMemory, and internal id is found
> for a subject (or predicate or object) to use in the internal
> storage datastructures. rdflib uses some randid() for that.
>
> I propose that instead of calling randid(), it called self.assignid
> (subject) which would be pluggable. By default this would be the
> default randid, but you could allow Zope to create a graph with an
> assignid that assigned ids based on the intid service.
This should definitely work for BNodes and think it can work for
URIRef and Literals (will just need a second to think about it). I'll
definitely keep this in mind as we're formalizing the interfaces with
zope.interface -- which hopefully we can get a first cut done this
weekend.
> Then if a subject or object passed to rdflib is an integer instead
> of a URI, it would be used directly. In effect you'd give access to
> the internal ids.
>
> (There are more details to solve (assignid needs to check for
> collisions sometimes), but I think that's a good starting point).
I agree. We'll give it a go.
> Florent
>
> --
> Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D
> +33 1 40 33 71 59 http://nuxeo.com fg at nuxeo.com
>
Daniel Krech, http://eikeon.com/
More information about the Zope3-dev
mailing list