RDFS Entailment Examples
RDFS Entailment Examples#
https://www.w3.org/TR/sparql11-entailment/
Absatz https://www.w3.org/TR/sparql11-entailment/#entEffects:
import rdflib
import pprint
import owlrl
ex_book_prefixes = "@prefix ex: <http://example.org/ns#> . \n\
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . \n\
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . #0"
ex_book_triples = [ ex_book_prefixes, #0
"ex:book1 rdf:type ex:Publication . #1",
"ex:book2 rdf:type ex:Article . #2",
"ex:Article rdfs:subClassOf ex:Publication . #3",
"ex:publishes rdfs:range ex:Publication . #4",
"ex:MITPress ex:publishes ex:book3 . #5"
]
ex_book_triples
['@prefix ex: <http://example.org/ns#> . \n @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . \n @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . #0',
'ex:book1 rdf:type ex:Publication . #1',
'ex:book2 rdf:type ex:Article . #2',
'ex:Article rdfs:subClassOf ex:Publication . #3',
'ex:publishes rdfs:range ex:Publication . #4',
'ex:MITPress ex:publishes ex:book3 . #5']
ttl zusammenbauen, dann parsen
ex_book_items = [0,1,2,3,4,5 ]
ex_book = "\n".join([ex_book_triples[i] for i in range(len(ex_book_triples)) if i in ex_book_items])
print(ex_book)
@prefix ex: <http://example.org/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . #0
ex:book1 rdf:type ex:Publication . #1
ex:book2 rdf:type ex:Article . #2
ex:Article rdfs:subClassOf ex:Publication . #3
ex:publishes rdfs:range ex:Publication . #4
ex:MITPress ex:publishes ex:book3 . #5
g1 = rdflib.Graph().parse(data= ex_book)
for row in g1: print(row)
(rdflib.term.URIRef('http://example.org/ns#publishes'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#range'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#book1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#MITPress'), rdflib.term.URIRef('http://example.org/ns#publishes'), rdflib.term.URIRef('http://example.org/ns#book3'))
(rdflib.term.URIRef('http://example.org/ns#book2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://example.org/ns#Article'))
(rdflib.term.URIRef('http://example.org/ns#Article'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://example.org/ns#Publication'))
print(g1.serialize(format="ttl"))
@prefix ex: <http://example.org/ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
ex:MITPress ex:publishes ex:book3 .
ex:book1 a ex:Publication .
ex:book2 a ex:Article .
ex:publishes rdfs:range ex:Publication .
ex:Article rdfs:subClassOf ex:Publication .
q = """
SELECT ?pub ?class
WHERE { ?pub rdf:type ?class }
LIMIT 7
"""
q1_result = g1.query(q)
for row in q1_result:
print(row)
(rdflib.term.URIRef('http://example.org/ns#book1'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#book2'), rdflib.term.URIRef('http://example.org/ns#Article'))
g2 = rdflib.Graph().parse(data= ex_book)
owlrl.DeductiveClosure(owlrl.OWLRL_Semantics,
axiomatic_triples = False).expand(g2)
for row in g2.query(q): print(row)
(rdflib.term.URIRef('http://example.org/ns#book1'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#book2'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#book3'), rdflib.term.URIRef('http://example.org/ns#Publication'))
(rdflib.term.URIRef('http://example.org/ns#book2'), rdflib.term.URIRef('http://example.org/ns#Article'))
(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'))
(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'))
(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'))
g2_ttl = g2.serialize(format="ttl")
print(g2_ttl)
@prefix ex: <http://example.org/ns#> .
@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#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:MITPress ex:publishes ex:book3 ;
owl:sameAs ex:MITPress .
ex:book1 a ex:Publication ;
owl:sameAs ex:book1 .
ex:book2 a ex:Article,
ex:Publication ;
owl:sameAs ex:book2 .
ex:publishes rdfs:range ex:Publication ;
owl:sameAs ex:publishes .
rdf:HTML a rdfs:Datatype ;
owl:sameAs rdf:HTML .
rdf:PlainLiteral a rdfs:Datatype ;
owl:sameAs rdf:PlainLiteral .
rdf:XMLLiteral a rdfs:Datatype ;
owl:sameAs rdf:XMLLiteral .
rdf:langString a rdfs:Datatype ;
owl:sameAs rdf:langString .
rdf:type owl:sameAs rdf:type .
rdfs:Literal a rdfs:Datatype ;
owl:sameAs rdfs:Literal .
rdfs:comment a owl:AnnotationProperty ;
owl:sameAs rdfs:comment .
rdfs:isDefinedBy a owl:AnnotationProperty ;
owl:sameAs rdfs:isDefinedBy .
rdfs:label a owl:AnnotationProperty ;
owl:sameAs rdfs:label .
rdfs:range owl:sameAs rdfs:range .
rdfs:seeAlso a owl:AnnotationProperty ;
owl:sameAs rdfs:seeAlso .
rdfs:subClassOf owl:sameAs rdfs:subClassOf .
xsd:NCName a rdfs:Datatype ;
owl:sameAs xsd:NCName .
xsd:NMTOKEN a rdfs:Datatype ;
owl:sameAs xsd:NMTOKEN .
xsd:Name a rdfs:Datatype ;
owl:sameAs xsd:Name .
xsd:anyURI a rdfs:Datatype ;
owl:sameAs xsd:anyURI .
xsd:base64Binary a rdfs:Datatype ;
owl:sameAs xsd:base64Binary .
xsd:boolean a rdfs:Datatype ;
owl:sameAs xsd:boolean .
xsd:byte a rdfs:Datatype ;
owl:sameAs xsd:byte .
xsd:date a rdfs:Datatype ;
owl:sameAs xsd:date .
xsd:dateTime a rdfs:Datatype ;
owl:sameAs xsd:dateTime .
xsd:dateTimeStamp a rdfs:Datatype ;
owl:sameAs xsd:dateTimeStamp .
xsd:decimal a rdfs:Datatype ;
owl:sameAs xsd:decimal .
xsd:double a rdfs:Datatype ;
owl:sameAs xsd:double .
xsd:float a rdfs:Datatype ;
owl:sameAs xsd:float .
xsd:hexBinary a rdfs:Datatype ;
owl:sameAs xsd:hexBinary .
xsd:int a rdfs:Datatype ;
owl:sameAs xsd:int .
xsd:integer a rdfs:Datatype ;
owl:sameAs xsd:integer .
xsd:language a rdfs:Datatype ;
owl:sameAs xsd:language .
xsd:long a rdfs:Datatype ;
owl:sameAs xsd:long .
xsd:negativeInteger a rdfs:Datatype ;
owl:sameAs xsd:negativeInteger .
xsd:nonNegativeInteger a rdfs:Datatype ;
owl:sameAs xsd:nonNegativeInteger .
xsd:nonPositiveInteger a rdfs:Datatype ;
owl:sameAs xsd:nonPositiveInteger .
xsd:normalizedString a rdfs:Datatype ;
owl:sameAs xsd:normalizedString .
xsd:positiveInteger a rdfs:Datatype ;
owl:sameAs xsd:positiveInteger .
xsd:short a rdfs:Datatype ;
owl:sameAs xsd:short .
xsd:string a rdfs:Datatype ;
owl:sameAs xsd:string .
xsd:time a rdfs:Datatype ;
owl:sameAs xsd:time .
xsd:token a rdfs:Datatype ;
owl:sameAs xsd:token .
xsd:unsignedByte a rdfs:Datatype ;
owl:sameAs xsd:unsignedByte .
xsd:unsignedInt a rdfs:Datatype ;
owl:sameAs xsd:unsignedInt .
xsd:unsignedLong a rdfs:Datatype ;
owl:sameAs xsd:unsignedLong .
xsd:unsignedShort a rdfs:Datatype ;
owl:sameAs xsd:unsignedShort .
owl:backwardCompatibleWith a owl:AnnotationProperty ;
owl:sameAs owl:backwardCompatibleWith .
owl:deprecated a owl:AnnotationProperty ;
owl:sameAs owl:deprecated .
owl:equivalentClass owl:sameAs owl:equivalentClass .
owl:incompatibleWith a owl:AnnotationProperty ;
owl:sameAs owl:incompatibleWith .
owl:priorVersion a owl:AnnotationProperty ;
owl:sameAs owl:priorVersion .
owl:sameAs owl:sameAs owl:sameAs .
owl:versionInfo a owl:AnnotationProperty ;
owl:sameAs owl:versionInfo .
ex:Article rdfs:subClassOf ex:Publication ;
owl:sameAs ex:Article .
ex:book3 a ex:Publication ;
owl:sameAs ex:book3 .
owl:Class owl:sameAs owl:Class .
owl:Nothing a owl:Class ;
rdfs:subClassOf owl:Nothing,
owl:Thing ;
owl:equivalentClass owl:Nothing ;
owl:sameAs owl:Nothing .
owl:Thing a owl:Class ;
rdfs:subClassOf owl:Thing ;
owl:equivalentClass owl:Thing ;
owl:sameAs owl:Thing .
ex:Publication owl:sameAs ex:Publication .
owl:AnnotationProperty owl:sameAs owl:AnnotationProperty .
rdfs:Datatype owl:sameAs rdfs:Datatype .