RDFS Testbed
Examples
This query lists all triples in the RDF graph
RDF Database
# implied subClassOf relations: triple({rdfs:subClassOf},C1,C2) :- triple({rdfs:subClassOf2},C1,C2), triple({rdfs:subClassOf},C2,C3). triple({rdfs:subClassOf2},C1,C2) :- triple({rdfs:subClassOf,C1,C2). # SubClass implies type membership: triple({rdf:type},S, O) :- triple({rdfs:subClassOf},O2,O), triple({rdf:type},S,O2). # TODO: subPropertyOf tricky without getting tinyprolog stuck in a loop #triple({rdfs:subPropertyOf},R1,R2) :- triple({rdfs:subProperty2},R1,R2), triple({rdfs:subPropertyOf},R2,R3). #triple({rdfs:subProperty2},R1,R2) :- triple({rdfs:subPropertyOf,R1,R2). #triple(Predicate,R1,R2) :- triple(TighterPredicate,R1,R2),triple({rdfs:subPropertyOf},TighterPredicate, Predicate). # Domain and Range Rules: triple({rdf:type},From,Y) :- triple({rdfs:domain},X,Y), triple(X,From,To). triple({rdf:type},To,Y) :- triple({rdfs:range},X,Y), triple(X,From,To). ### RDF Schema Core: triple({rdfs:subClassOf},{rdf:Property},{rdfs:Resource}). triple({rdfs:subClassOf},{rdf:ConstraintProperty},{rdf:Property}). triple({rdf:type},{rdfs:domain},{rdfs:ConstraintProperty}). triple({rdf:type},{rdfs:range},{rdfs:ConstraintProperty}). ##### Some Application's RDF Schema ####################### triple({rdfs:range}, {bib:creator},{bib:Person}). triple({rdfs:domain},{bib:creator},{bib:Document}). triple({rdfs:subClassOf}, {bib:Document}, {rdfs:Resource}). ##### Misc Aggregation of RDF data ####################### # Instance data factoids (including schema-ish facts) triple({bib:creator}, resource1, resource2). triple({bib:creator}, {http://www.desire.org/rdf/},{uuid:2342342342356235}). triple({rdfs:subClassOf},{bib:Person},{abc:Agent}). triple({rdfs:subClassOf},{abc:Agent},{rdfs:Resource}). triple({rdfs:subPropertyOf},{bib:creator},{dc:contributor}).