Skip to content

Provide an option for a more focused VoID description computation that would take less time, but focus only on the most important informations #25

Description

@vemonet

For most our use-cases where we use the VoID description as a schema for knowing the content of an endpoint we only use propertyPartitions that are linked to subject and object classPartitions, such as shared in #24. Basically we just use the info from the query below, which enables to know the most detailed information about the endpoints: 1000 distinct Pathways isPartOf 500 distinct AnatomicalEntities

PREFIX up: <http://purl.uniprot.org/core/>
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX void-ext: <http://ldf.fi/void-ext#>
SELECT DISTINCT ?subjectClass ?prop ?objectClass ?objectDatatype
WHERE {
  {
    ?cp void:class ?subjectClass ;
        void:propertyPartition ?pp .
    ?pp void:property ?prop .
    OPTIONAL {
        {
            ?pp  void:classPartition [ void:class ?objectClass ] .
        	
        } UNION {
            ?pp void-ext:datatypePartition [ void-ext:datatype ?objectDatatype ] .
        }
    }
  } UNION {
    ?linkset void:subjectsTarget [ void:class ?subjectClass ] ;
      void:linkPredicate ?prop ;
      void:objectsTarget [ void:class ?objectClass ] .
  }
}

So there are a lot of computation that are done that we end up never using, e.g. from the Wikipathways VoID:

<https://rdf.wikipathway.org/.well-known/void#rdf.wikipathways.org!1cddc767!DataNoderdf.wikipathways.org!1d576fb0!groupRef>
  a void:Dataset;
  void:property <http://vocabularies.wikipathways.org/gpml#groupRef>;
  void_ext:datatypePartition <https://rdf.wikipathway.org/.well-known/void#rdf.wikipathways.org!1d576fb0!groupRefrdf.wikipathways.org!4e598fd1!string>;
  void:triples "55988"^^xsd:long .

<https://rdf.wikipathway.org/.well-known/void#rdf.wikipathways.org!0460e71d!Grouprdf.wikipathways.org!ac64b4fc!hasPublicationXref>
  a void:Dataset;
  void:property <http://vocabularies.wikipathways.org/gpml#hasPublicationXref>;
  void:classPartition <https://rdf.wikipathway.org/.well-known/void#rdf.wikipathways.org!0460e71d!Grouprdf.wikipathways.org!ac64b4fc!hasPublicationXrefrdf.wikipathways.org!564d1421!PublicationXref>,
    <https://rdf.wikipathway.org/.well-known/void#rdf.wikipathways.org!0460e71d!Grouprdf.wikipathways.org!ac64b4fc!hasPublicationXrefrdf.wikipathways.org!f6bd5618!PublicationReference>;
  void:triples "608"^^xsd:long .

I kind of see the principle, but I don't see many moments where it is actually useful. Because if we want to just get the list of existing of available properties we can still just do a SELECT DISTINCT on the propertyPartitions that are linked to classPartitions, and same if we just want to get the available classes

By removing some of the void:Dataset that are calculated we might just lose some counts of properties/classes in specific contexts, but are these counts really needed?

Having so many different types of void:Dataset:

  • increases the time to generate the statistics, and load on endpoints
  • Increases the complexity of the generated statistics, making it scarier to maintainers
  • A lot of them does not seems to add any interesting information that cannot be retrieved by a SPARQL query on the void:Dataset that are linking subjectsClass to objectsClass through predicates (if we have this we have 90% of interesting info)

Would it make sense to provide a flag to only enable calculating the following stats?

  • subjectsClass to objectsClass through predicates (with distinct subjects and objects count)
  • Distinct count for each class and predicates alone (that can be nice general info I guess)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions