Inferring Quicklisp System Descriptions

by James

We presented, at the recent ELS 2016[0], the speculative results from using SPARQL to analyse implicit dependancy relations in the LISP ecosystem, as embodied in a recent Quicklisp[1] release.

The slides are now up and available at the link from the programme page. The repository is available[2] — together with several illustrative queries and the ontology is online as well[3]. There were numerous limitations in the quality and specificity of the extracted relations, but it was still possible to draw initial conclusions about source code dependency based on property path queries, such as

prefix ssd: 
prefix prov: 
prefix pav: 
prefix code:  
select distinct ?loadFilename ?dependentSource # ?sequenceNr
from  
where {
  { select * where {
    bind ( '2000-05-08T00:00:00Z'^^xsd:dateTime as ?SYSTEM_LOAD_TIME )
    { select ?source where {
      ?source a  .
      optional { ?otherSource ssd:requiredBy ?source }
      filter ( !bound(?otherSource) )
    } }
    ?source ssd:requiredBy+ ?dependentSource .
    bind (rdf:Seq(xsd:integer) as ?sequenceNr )
  } }
  ?source pav:authoredOn ?timeModified .
  filter ( ?timeModified > ?SYSTEM_LOAD_TIME )
  ?dependentSource code:location ?sourcePathname .
  ?dependentSource pav:authoredOn ?sourceTime .
  ?dependentSource rdfs:label ?sourceFile .
  optional {
    [] prov:used ?dependentSource ;
       prov:generated ?dependentBinary ;
       prov:endedAtTime  ?binaryTime .
    ?dependentBinary code:location ?binaryPathname .
    ?dependentBinary rdfs:label ?binaryFile .
 }
  bind (if( bound(?binaryTime),
            if ((?binaryTime > ?sourceTime),
                 ?binaryFile, ?sourceFile ),
            ?sourceFile )
        as ?loadFilename )
} order by desc(?sequenceNr)

to produce speculative dependancy models, such as this one, for BKNR:

or this from alexandria


[0] : http://www.european-lisp-symposium.org/content-programme-full.html
[1] : http://quicklisp.org
[2] : http://dydra.com/quicklisp/release
[3] : http://dydra.com/schema/ssd

blog comments powered by Disqus