Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(api-v1): Optimise some SPARQL patterns for Fuseki (DSP-1325) #1814

Merged
merged 2 commits into from Feb 4, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -40,14 +40,19 @@ SELECT ?resource ?project ?property
WHERE {
BIND(IRI("@searchValueIri") as ?searchValue)

?searchValue knora-base:isDeleted false .

@* Find something that links to searchValue, and make sure it's a Resource. *@

?resource ?property ?searchValue ;
knora-base:isDeleted false ;
rdf:type ?resourceClass .
?resourceClass rdfs:subClassOf* knora-base:Resource .
?property rdfs:subPropertyOf* knora-base:hasValue .
?resource knora-base:attachedToProject ?project .

FILTER NOT EXISTS {
?searchValue knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}
}
Expand Up @@ -43,17 +43,23 @@ SELECT ?objPred ?objObj ?predStandoff ?objStandoff
FROM <http://www.ontotext.com/explicit>
}
WHERE {
BIND(IRI("@resourceIri") as ?resource)
BIND(IRI("@propertyIri") as ?property)
BIND(IRI("@searchValueIri") as ?searchValue)

{
?resource ?property ?currentValue ;
knora-base:isDeleted false .
?currentValue knora-base:previousValue* ?searchValue ;
knora-base:isDeleted false .
BIND(IRI("@resourceIri") as ?resource)
BIND(IRI("@propertyIri") as ?property)
BIND(IRI("@searchValueIri") as ?searchValue)

?resource ?property ?currentValue .
?currentValue knora-base:previousValue* ?searchValue .
?searchValue ?objPred ?objObj .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?currentValue knora-base:isDeleted true .
}

FILTER(?objPred != knora-base:attachedToProject)

OPTIONAL {
Expand All @@ -63,11 +69,22 @@ WHERE {
}
UNION
{
BIND(IRI("@resourceIri") as ?resource)
BIND(IRI("@propertyIri") as ?property)
BIND(IRI("@searchValueIri") as ?searchValue)

?resource ?property ?currentValue ;
knora-base:isDeleted false ;
knora-base:attachedToProject ?resourceProject .
?currentValue knora-base:previousValue* ?searchValue ;
knora-base:isDeleted false .

?currentValue knora-base:previousValue* ?searchValue .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?currentValue knora-base:isDeleted true .
}

@* Return the project of the resource that contains the value. *@

Expand Down
Expand Up @@ -56,17 +56,15 @@ SELECT ?sourceObject
WHERE {
BIND(IRI("@resourceIri") as ?resource)

?resource rdf:type ?resourceClass ;
knora-base:isDeleted false .
?resource rdf:type ?resourceClass .

?resourceClass rdfs:subClassOf* knora-base:Resource .

# Find something that relates to this resource via knora-base:isPartOf.

?linkingProp rdfs:subPropertyOf* knora-base:isPartOf .

?sourceObject ?linkingProp ?resource ;
knora-base:isDeleted false .
?sourceObject ?linkingProp ?resource .

OPTIONAL {
?seqProp rdfs:subPropertyOf* knora-base:seqnum .
Expand All @@ -87,16 +85,30 @@ WHERE {
rdf:subject ?sourceObject ;
rdf:predicate ?linkingProp ;
rdf:object ?resource ;
knora-base:isDeleted false ;
knora-base:attachedToUser ?linkValueCreator ;
knora-base:hasPermissions ?linkValuePermissions .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?sourceObject knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?linkValue knora-base:isDeleted true .
}

OPTIONAL {
?fileValueProp rdfs:subPropertyOf* knora-base:hasFileValue .
?sourceObject ?fileValueProp ?fileValue .

?fileValue a knora-base:StillImageFileValue ;
knora-base:isDeleted false .
?fileValue a knora-base:StillImageFileValue .

FILTER NOT EXISTS {
?fileValue knora-base:isDeleted true .
}

?fileValue knora-base:internalMimeType ?internalMimeType ;
knora-base:originalFilename ?originalFilename ;
Expand Down
Expand Up @@ -52,17 +52,21 @@ WHERE {

BIND(IRI("@resourceIri") as ?resource)

?resource knora-base:isDeleted false .

?linkProp rdfs:subPropertyOf* knora-base:hasLinkTo .

FILTER NOT EXISTS {
?linkProp rdfs:subPropertyOf* knora-base:isPartOf .
}

?referringResource ?linkProp ?resource ;
knora-base:isDeleted false .
FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

?referringResource ?linkProp ?resource .

FILTER NOT EXISTS {
?referringResource knora-base:isDeleted true .
}
} LIMIT 50
}

Expand All @@ -84,8 +88,11 @@ WHERE {
?prop rdfs:subPropertyOf* knora-base:hasLinkToValue .
?referringResource ?prop ?obj .

?obj knora-base:isDeleted false ;
?objPred ?objObj .
?obj ?objPred ?objObj .

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

BIND(true as ?isLinkValue)
}
Expand Down
Expand Up @@ -38,17 +38,21 @@ PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?region ?resclass ?regionObjectPermissions ?owner ?project
WHERE {
BIND(IRI("@resourceIri") as ?resource)
?resource knora-base:isDeleted false .

?linkingProp rdfs:subPropertyOf* knora-base:isRegionOf .
?region ?linkingProp ?resource .

?region knora-base:isDeleted false .

?region a ?resclass .
?resclass rdfs:subClassOf* knora-base:Region .
?region a ?resclass .

?region knora-base:attachedToUser ?owner ;
knora-base:attachedToProject ?project ;
knora-base:hasPermissions ?regionObjectPermissions .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?region knora-base:isDeleted true .
}
}
Expand Up @@ -38,10 +38,13 @@ SELECT ?prop ?isLinkProp ?isLinkValueProp ?obj ?objPred ?objObj ?predStandoff ?o
WHERE {
BIND(IRI("@resourceIri") as ?resource)

?resource rdf:type ?resourceClass ;
knora-base:isDeleted false .
?resource rdf:type ?resourceClass .
?resourceClass rdfs:subClassOf* knora-base:Resource .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

{
@* Get properties that point to Value objects. *@

Expand All @@ -63,29 +66,41 @@ WHERE {
@* Get the project of the containing resource. *@

?resource ?prop ?obj .
?obj knora-base:isDeleted false .

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?resource knora-base:attachedToProject ?resourceProject .
BIND(knora-base:attachedToProject AS ?objPred)
BIND(COALESCE(?valueProject, ?resourceProject) AS ?objObj)
BIND(COALESCE(?valueProject, ?resourceProject) AS ?objObj)
}
UNION
{
@* Get the value's standoff markup nodes if it has any. *@

?resource ?prop ?obj .
?obj knora-base:isDeleted false .

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?obj a knora-base:TextValue .
BIND(knora-base:valueHasStandoff AS ?objPred)
?obj ?objPred ?objObj .
?obj ?objPred ?objObj .
?objObj ?predStandoff ?objStandoff .
}
UNION
{
@* Get any other statements about the value. *@

?resource ?prop ?obj .
?obj knora-base:isDeleted false .
?obj ?objPred ?objObj .

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?obj ?objPred ?objObj .

FILTER(!(?objPred = knora-base:attachedToProject || ?objPred = knora-base:valueHasStandoff))
}
Expand All @@ -98,7 +113,11 @@ WHERE {
BIND(true AS ?isLinkProp)

?resource ?prop ?obj .
?obj knora-base:isDeleted false .

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?obj ?objPred ?objObj .
}
}
Expand Up @@ -68,7 +68,9 @@ WHERE {
}
}

?resourceIri knora-base:isDeleted false .
FILTER NOT EXISTS {
?resourceIri knora-base:isDeleted true .
}

@restypeIriOption match {

Expand Down Expand Up @@ -98,9 +100,11 @@ WHERE {
?resourceIri ?property ?valueObjectIri .
?property knora-base:objectClassConstraint knora-base:TextValue .
?valueObjectIri knora-base:valueHasString ?valueString ;
knora-base:isDeleted false ;
knora-base:valueHasOrder ?valueOrder .

FILTER NOT EXISTS {
?valueObjectIri knora-base:isDeleted true .
}
}

}
Expand Down
Expand Up @@ -43,6 +43,9 @@ WHERE {
BIND(IRI("@resType") as ?resType)

?s rdf:type ?resType ;
knora-base:isDeleted false ;
knora-base:attachedToProject ?projectIri .

FILTER NOT EXISTS {
?s knora-base:isDeleted true .
}
}
Expand Up @@ -41,10 +41,16 @@ WHERE {
?resourceProp rdfs:subPropertyOf* knora-base:hasValue .

{
?resource ?resourceProp ?obj ;
knora-base:isDeleted false .
?resource ?resourceProp ?obj .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?obj knora-base:isDeleted false .
?obj ?objPred ?objObj .

FILTER(?objPred != knora-base:attachedToProject)
Expand All @@ -58,10 +64,16 @@ WHERE {
{
@* Return the project of the resource that contains the value. *@

?resource ?resourceProp ?obj ;
knora-base:isDeleted false .
?resource ?resourceProp ?obj .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

FILTER NOT EXISTS {
?obj knora-base:isDeleted true .
}

?obj knora-base:isDeleted false .
?resource knora-base:attachedToProject ?resourceProject .

BIND(knora-base:attachedToProject AS ?objPred)
Expand Down
Expand Up @@ -46,17 +46,22 @@ WHERE {
BIND(IRI("@propertyIri") AS ?prop)
BIND(IRI("@currentValueIri") AS ?currentValue)

?resource knora-base:isDeleted false .
?currentValue knora-base:hasPermissions ?valuePermissions .

?currentValue knora-base:isDeleted false ;
knora-base:hasPermissions ?valuePermissions .
FILTER NOT EXISTS {
?currentValue knora-base:isDeleted true .
}

?resource ?prop ?currentValue .
?prop rdfs:subPropertyOf* knora-base:hasValue .
?resource knora-base:attachedToProject ?project .

?currentValue knora-base:previousValue* ?value .

FILTER NOT EXISTS {
?resource knora-base:isDeleted true .
}

OPTIONAL {
?value knora-base:valueCreationDate ?valueCreationDate .
}
Expand Down