ORE: How do we use the ORE RDF types?

February 5, 2008

Warning! Here be RDF and ORE concepts. Some pre-reading is required. I’m referring to the alpha version of the specs in this – things may have changed without my knowledge – I’m hoping that someone from the technical committee will correct me if so. RDF prefixes are used as in the ORE specs

In this post I think out loud about the ramifications of the implicit types in ORE…

An ORE resource map graph is stitched together with two main predicates: ore:describes and ore:aggregates. The resources at either end of these predicates have implicit RDF types; ore:ResourceMap for Resource Maps, ore:Aggregation Aggregations, and ore:AggregatedResource for (you guessed it) AggregatedResources. So this: –


@prefix eg .
eg:myResourceMap ore:describes eg:myResourceMap#aggregation.
eg:myResourceMap#aggregation ore:aggregates eg:myResource1,
eg:myResource2,
eg:myResource3.

is implicitly equivalent to this: –


eg:myResourceMap ore:describes eg:myResourceMap#aggregation;
rdf:type ore:ResourceMap.
eg:myResourceMap#aggregation rdf:type ore:Aggregation;
ore:aggregates eg:myResource1,
eg:myResource2,
eg:myResource3.
eg:myResource1 rdf:type ore:AggregatedResource.
eg:myResource2 rdf:type ore:AggregatedResource.
eg:myResource3 rdf:type ore:AggregatedResource.

So what? Well, in the basic case, you shouldn’t use those types for querying, since they might well not be present. So: –


DESCRIBE ?ar
WHERE {
?ar a ore:AggregatedResource;
dc:author .
}

Could work, but only if the types have been put in there manually, or if you know that the end point has reasoned over the RDF. In general, the query that will work more reliably would be: –


DESCRIBE ?ar
WHERE {
?a ore:aggregates ?ar.
?ar dc:author .
}

I think this will also have an impact when extending ORE. Say I’m using ORE to describe a journal paper and it’s supplemental data. I could create a hasSupportingInformation property as a sub class of ore:aggregates, but that will break queries like the one just above (unless the end-point has reasoned over the graph). So it looks like it’s safest to create a SupportingInformationResource subclass of ore:AggregatedResource instead; then clients that know about SupportingInformation can make specific queries, without breaking generic queries or requiring RDFS reasoning in the end-point.

Advertisements

One Response to “ORE: How do we use the ORE RDF types?”

  1. Peter Murray Says:

    Jim —

    I believe the intent of the specification is to require ore:aggregates triple even if it could be implied by a subsequent predicate. But I don’t think this is explicitly stated in the Users Guide, and it might bake a good addition. Please post your comment to the ORE Google Group — it is likely to see more eyeballs there from other members of the ORE technical committee.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: