1

I'm running some basic tests with GraphDB, and I am surprised to see that when a new repository is created, some statements seems to already be there (inferred by GraphDB).

Here is the summary of the repository that tells about those statements:

enter image description here

And the result of a sparql query to list them CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o .} LIMIT 100

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sesame: <http://www.openrdf.org/schema/sesame#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix fn: <http://www.w3.org/2005/xpath-functions#> .

rdf:type a rdf:Property;
  rdfs:subPropertyOf rdf:type;
  <http://proton.semanticweb.org/protonsys#transitiveOver> rdfs:subClassOf .

rdfs:subPropertyOf a rdf:Property, owl:TransitiveProperty;
  rdfs:subPropertyOf rdfs:subPropertyOf;
  <http://proton.semanticweb.org/protonsys#transitiveOver> rdfs:subPropertyOf .

rdfs:subClassOf a rdf:Property, owl:TransitiveProperty;
  rdfs:subPropertyOf rdfs:subClassOf;
  rdfs:domain rdfs:Class;
  rdfs:range rdfs:Class;
  <http://proton.semanticweb.org/protonsys#transitiveOver> rdfs:subClassOf .

rdfs:domain a rdf:Property;
  rdfs:subPropertyOf rdfs:domain;
  rdfs:range rdfs:Class .

rdfs:range a rdf:Property;
  rdfs:subPropertyOf rdfs:range;
  rdfs:range rdfs:Class .

owl:equivalentProperty a owl:SymmetricProperty, owl:TransitiveProperty;
  rdfs:subPropertyOf rdfs:subPropertyOf;
  <http://proton.semanticweb.org/protonsys#transitiveOver> owl:equivalentProperty;
  owl:inverseOf owl:equivalentProperty .

owl:equivalentClass a owl:SymmetricProperty, owl:TransitiveProperty;
  rdfs:subPropertyOf rdfs:subClassOf;
  <http://proton.semanticweb.org/protonsys#transitiveOver> owl:equivalentClass;
  owl:inverseOf owl:equivalentClass .

<http://proton.semanticweb.org/protonsys#transitiveOver> a rdf:Property;
  rdfs:subPropertyOf <http://proton.semanticweb.org/protonsys#transitiveOver> .

owl:inverseOf a rdf:Property, owl:SymmetricProperty;
  rdfs:subPropertyOf owl:inverseOf;
  owl:inverseOf owl:inverseOf .

rdf:subject a rdf:Property;
  rdfs:domain rdf:Statement .

rdf:predicate a rdf:Property;
  rdfs:domain rdf:Statement .

rdf:object a rdf:Property;
  rdfs:domain rdf:Statement .

rdf:first a rdf:Property;
  rdfs:domain rdf:List .

rdf:rest a rdf:Property;
  rdfs:domain rdf:List;
  rdfs:range rdf:List .

rdf:value a rdf:Property .

rdf:nil a rdf:List .

rdf:XMLLiteral a rdfs:Class, rdfs:Datatype;
  rdfs:subClassOf rdfs:Literal, rdf:XMLLiteral .

owl:differentFrom a owl:SymmetricProperty;
  owl:inverseOf owl:differentFrom .

xsd:nonNegativeInteger a rdfs:Class, rdfs:Datatype;
  rdfs:subClassOf xsd:nonNegativeInteger .

xsd:string a rdfs:Class, rdfs:Datatype;
  rdfs:subClassOf xsd:string .

rdf:_1 a rdf:Property, rdfs:ContainerMembershipProperty .

rdfs:isDefinedBy rdfs:subPropertyOf rdfs:seeAlso .

rdf:Alt rdfs:subClassOf rdfs:Container .

rdf:Bag rdfs:subClassOf rdfs:Container .

rdf:Seq rdfs:subClassOf rdfs:Container .

rdfs:ContainerMembershipProperty rdfs:subClassOf rdf:Property .

rdfs:Datatype rdfs:subClassOf rdfs:Class .

rdfs:comment rdfs:range rdfs:Literal .

rdfs:label rdfs:range rdfs:Literal .

They seem to reflect a partial description of the rdf, rdfs and owl vocabulary, but also include some properties from http://proton.semanticweb.org/protonsys#. I tried to figure out what they are and especially why they are present by default in a GraphDB repository, but I haven't found such information in GraphDb documentation.

Thanks!

Erick Hupin
  • 162
  • 7
  • Just a guess, but from the docs it looks like they use Proton for rule optimization: https://graphdb.ontotext.com/documentation/8.4/free/rules-optimisations.html – UninformedUser Nov 23 '20 at 06:32
  • These are the axiomatic statements (and what is derived from these) defined in the ruleset you choose when the repository was created ... – Damyan Ognyanov Nov 23 '20 at 08:21

1 Answers1

2

The returned 70 triples are the axiomatic triples part of the selected default RDFS Plus (Optimized) ruleset during the repository instantiation. The purpose of these non-deletable statements is to assert evident base assumptions like:

<rdf:type> <rdf:type> <rdf:Property> (every rdf:type relation is a property)

Their sole purpose is to ensure compliance with the RDFS semantics. You can control them from the PIE files stored in $GDB_HOME/configs/rules directory. For further information, you can check the software documentation:

https://graphdb.ontotext.com/documentation/free/reasoning.html

vassil_momtchev
  • 1,173
  • 5
  • 11
  • 2
    I'm pretty sure his question was about the triples with Proton ontology predicates, like `` - those are clearly not part of any standard so it's not standard conformant with RDF, RDFS, etc. if those are also returned. But as I said in my comment, most likely you make use of those triples for rule optimizations? And you call it RDFS Plus, so there is no standard for it anyways ... – UninformedUser Nov 23 '20 at 21:02
  • 1
    Yes, it is used to implement a more generic transitivity so to reduce the number of rules. It is discussed in GraphDB documentation at https://graphdb.ontotext.com/documentation/free/rules-optimisations.html#consider-specialized-property-constructs – Damyan Ognyanov Nov 24 '20 at 06:02