A new conversation because I can not add a new to the previous. 

@Boris, Yes, sometimes even inference within TB Composer is complex.

So I hoped pyshacl is an alternative. But a minimal running example does 
not give inferred triples; sorry to be a hard learner. Here I try to infer 
keyWords for schema:Avatar.

Python code
---------------------------------------------------------------------
from rdflib import Graph, URIRef
from pyshacl import validate

shapes = Graph()
shapes.parse('testshapes.ttl', format='ttl')
data_graph = Graph()
data_graph.parse('testdata.ttl', format='ttl')

data_graph_orig = Graph()
for t in data_graph:
    data_graph_orig.add(t)

r = validate(data_graph,
      shacl_graph=shapes,
      #ont_graph=og,
      inference='rdfs',
      abort_on_error=False,
      meta_shacl=True,
      advanced=True,
      js=False,
      debug=True)

conforms, results_graph, results_text = r

added_triples = data_graph - data_graph_orig
print('Added triples: ', len(added_triples))
print(added_triples.all_nodes())


Data
-----------------------------------------------------
@prefix schema: <http://schema.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <http://example.org#>.

:movies a owl:Ontology ;
    owl:imports schema: .

:Avatar a schema:Movie ;
    schema:actor :Sam .



Shapes:
------------------------------------------------------
@prefix sh: <http://www.w3.org/ns/shacl#>.
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix schema: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix : <http://example.org#>.

:movieOntology
    a owl:Ontology ;
    owl:imports schema: ;
    owl:imports sh: ;
    owl:imports xsd: ;
    sh:declare
    [ sh:prefix "sh" ;
      sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ; ] ,
    [ sh:prefix "schema" ;
      sh:namespace "http://schema.org/"^^xsd:anyURI ;] ,
    [ sh:prefix "owl" ;
      sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; ]
    .

:keywordsRule
    a sh:NodeShape ;
    sh:targetClass schema:Movie ;
    sh:rule [
        a sh:SPARQLRule ;
        sh:prefixes schema: ;
        sh:construct """
            CONSTRUCT {
                $this schema:keyWords ?actor  .
            }
            WHERE {
                $this schema:actor ?actor .
            }
            """ ;
    ] ;
.


Regards,
Richard

-- 
http://github.com/RDFLib
--- 
You received this message because you are subscribed to the Google Groups 
"rdflib-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rdflib-dev/15aef451-28f3-4501-872a-9ae2ca5193d2n%40googlegroups.com.

Reply via email to