RE: Entailing SKOS Inferences in Kowari

Hi Dave,

> The Kowari Metastore [1] has a new rules engine built into it 
> for the  
> upcoming version 1.1 release, called krule.  Krule may be pronounced  
> 'kay-rule' or 'cruel', as you desire :)  Paul Gearon, the developer  
> of krule, has used it to allow the entailment of RDFS rules.  In  
> brief, one may apply a set of rules implementing RDFS to a 
> set of RDF  
> statements and have new statements created.

Good to hear of this :)

> I thought it might be nice to use krule to entail SKOS rules :)
> 
> In looking over the SKOS Core Guide, it seems to me that only the  
> inferencing rules would need to be applied.  There seem to be three  
> of them:
> 
>    Subject Generality Rule
> 
>    (?i skos:subject ?x) (?x skos:broader ?y)
>    ->
>    (?i skos:subject ?y)

This is probably the most important SKOS rule, an implementation would be great.

(Btw this pattern is an example of 'Role Inclusion' or 'regular property inclusion' which may become a feature of 'OWL 1.1' [1]).

[1] http://lists.mindswap.org/pipermail/owl/2005-November/000025.html

> 
>    Collectable Property Rule
> 
>    (?x ?p ?c) (?c skos:member ?m) (?p rdf:type 
> skos:CollectableProperty)
>    ->
>    (?x ?p ?m)
> 

This rule is tentative, as the underlying SKOS 'Collections' vocab is unstable, and there is currently an inconsistency between prose and schema [2].  From a rules point of view, you might be interested in some alternatives I wrote up at [3].

[2] http://www.w3.org/2004/02/skos/core/proposals#collections-5
[3] http://isegserv.itd.rl.ac.uk/cvs-public/~checkout~/skos/drafts/collections-5.html?rev=1.2

>    Ordered Collection Membership Rule
> 
>    (?c skos:memberList ?l) elementOfList(?e,?l)
>    ->
>    (?c skos:member ?e)
>    ... where 'elementOfList' is a function that returns true if the  
> first argument is an element of the RDF list for which the second  
> argument is the head.
> 
> The elementOfList function could be interesting, but I'll 
> tackle that  
> as it comes...

I was thinking to modify this rule to depend on other RDF list rules that don't depend on builtin functions, based on [4,5] e.g. (using N3 syntax) ...

@prefix list: <http://www.w3.org/2000/10/swap/list#>.

{?L rdf:first ?I; a rdf:List} => {?I list:in ?L}.
{?L rdf:rest ?R; a rdf:List. ?I list:in ?R} => {?I list:in ?L}.

# ... allows rewrite of Ordered Collection Membership Rule as ...

{?C skos:memberList ?L. ?I list:in ?L.} => {?C skos:member ?I}.

[4] http://lists.w3.org/Archives/Public/www-archive/2005Nov/att-0005/arc.html
[5] http://eulersharp.sourceforge.net/2003/03swap/rpo-rules.n3

N.B. I expect this scenario, i.e. using rules to model the dependency between an expression that uses an RDF list and other expressions, to be a common scenario, and I anticipate future use cases within SKOS Core.

> Am I missing anything?  I would like to try to implement these rules  
> in Krule before the end of the year and ship them with the Kowari  
> v1.1 release in January.  Any comments/help appreciated!

Nope, not missing anything I don't think :)

Would you prefer to have them published on the web somewhere, using whatever rule syntax Krule uses, so krule can load them dynamically?  

Cheers,

Al.




> 
> [1]  http://kowari.org/
> 
> Regards,
> Dave
> 
> 
> 
> 

Received on Monday, 28 November 2005 17:19:22 UTC