Demo 2026-03-31#
dieses Notebook: Durchstich
# ! pip install rdflib owlrl
import rdflib
import owlrl
def focus(focus_string_list, ttl):
return "\n\n".join( [ paragraph for paragraph in ttl.split("\n\n") \
if any( [ focus_string in paragraph for focus_string in focus_string_list ] ) ] )
ttl = """
# https://www.w3.org/wiki/TheUsualPrefixes
@prefix jb: <https://www.jbusse.de/semweb/o/prof-studi-ontologie.ttl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
jb:BUJ
jb:unterrichtet jb:IF640 ;
a jb:Prof .
jb:011112
jb:belegt jb:IF640 .
jb:Prof rdfs:subClassOf jb:Mensch .
jb:Studi rdfs:subClassOf jb:Mensch .
jb:belegt
rdfs:domain jb:Studi ;
rdfs:range jb:Modul .
"""
print(ttl)
# https://www.w3.org/wiki/TheUsualPrefixes
@prefix jb: <https://www.jbusse.de/semweb/o/prof-studi-ontologie.ttl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
jb:BUJ
jb:unterrichtet jb:IF640 ;
a jb:Prof .
jb:011112
jb:belegt jb:IF640 .
jb:Prof rdfs:subClassOf jb:Mensch .
jb:Studi rdfs:subClassOf jb:Mensch .
jb:belegt
rdfs:domain jb:Studi ;
rdfs:range jb:Modul .
g = rdflib.Graph().parse( data=ttl )
print( g.serialize(format="ttl") ) # https://rdflib.readthedocs.io/en/7.1.1/plugin_serializers.html
@prefix jb: <https://www.jbusse.de/semweb/o/prof-studi-ontologie.ttl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
jb:011112 jb:belegt jb:IF640 .
jb:BUJ a jb:Prof ;
jb:unterrichtet jb:IF640 .
jb:belegt rdfs:domain jb:Studi ;
rdfs:range jb:Modul .
jb:Prof rdfs:subClassOf jb:Mensch .
jb:Studi rdfs:subClassOf jb:Mensch .
owlrl.DeductiveClosure(owlrl.OWLRL_Semantics,
axiomatic_triples = False).expand(g)
print( focus( ["BUJ", "IF640" ], g.serialize(format="ttl") ) )
jb:011112 a jb:Mensch,
jb:Studi ;
owl:sameAs jb:011112 ;
jb:belegt jb:IF640 .
jb:BUJ a jb:Mensch,
jb:Prof ;
owl:sameAs jb:BUJ ;
jb:unterrichtet jb:IF640 .
jb:IF640 a jb:Modul ;
owl:sameAs jb:IF640 .