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)
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 AnatomicalEntitiesSo there are a lot of computation that are done that we end up never using, e.g. from the Wikipathways VoID:
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 DISTINCTon the propertyPartitions that are linked to classPartitions, and same if we just want to get the available classesBy removing some of the
void:Datasetthat 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:void:Datasetthat 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?