Demo 2026-03-31

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 .