PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX voidext: <http://purl.org/query/voidext#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

voidext:LINK_SHAREDINSTANCE_SET a rdfs:Class .

<http://rdfs.org/ns/void#target> a rdf:Property ;
  rdfs:label "Target" ;
  rdfs:comment "One of the two datasets linked by the Linkset or the Shared instance set." ;
  rdfs:domain voidext:LINK_SHAREDINSTANCE_SET ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> .

voidext:resourceMapping a rdf:Property ;
  rdfs:label "resource mapped with"@en ;
  rdfs:comment """The preprocessing of a resource (i.e. IRI or literal) in a source void:Dataset in order
to match another resource in the target void:Dataset. A resource is either the subject or the 
object of an RDF triple. The resource preprocessing (i.e. the resource mapping)
must be defined with the SPARQL language by mainly using SPARQL built-ins for assignments
(e.g. BIND), and expression and testing values (e.g. IF and FILTER). BIND is used to assign
the output of a function.""" ;
  rdfs:domain voidext:LINK_SHAREDINSTANCE_SET ;
  rdfs:range <https://w3id.org/linkml/Any> .

voidext:SharedInstanceSet a rdfs:Class ;
  rdfs:label "Shared instance set"@en ;
  rdfs:comment "A shared instance set between exactly two datasets. For example, two datasets that contain the same OWL/RDFS class instances."@en ;
  rdfs:subClassOf voidext:LINK_SHAREDINSTANCE_SET , <http://rdfs.org/ns/void#Dataset> .

<http://rdfs.org/ns/void#propertyPartition> a rdf:Property ;
  rdfs:label "property partition" ;
  rdfs:comment "A subset of a void:Dataset that contains only the triples of a certain rdf:Property." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> ;
  rdfs:subPropertyOf <http://rdfs.org/ns/void#subset> .

<http://rdfs.org/ns/void#uriRegexPattern> a rdf:Property ;
  rdfs:label "has URI regular expression pattern" ;
  rdfs:comment "Defines a regular expression pattern matching URIs in the dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#distinctObjects> a rdf:Property ;
  rdfs:label "distinct objects" ;
  rdfs:comment "The total number of distinct objects in a void:Dataset. In other words, the number of distinct resources that occur in the object position of triples in the dataset. Literals are included in this count." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

voidext:sharedInstanceType a rdf:Property ;
  rdfs:label "shared instance type"@en ;
  rdfs:comment "This property assings the type (i.e. class) of the shared instances from a given void:Dataset. Shared instances implies equivalent or similar instance IRIs that belong to different datasets."@en ;
  rdfs:domain voidext:SharedInstanceSet ;
  rdfs:range rdfs:Class .

<http://rdfs.org/ns/void#classPartition> a rdf:Property ;
  rdfs:label "class partition" ;
  rdfs:comment "A subset of a void:Dataset that contains only the entities of a certain rdfs:Class." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> ;
  rdfs:subPropertyOf <http://rdfs.org/ns/void#subset> .

<http://rdfs.org/ns/void#distinctSubjects> a rdf:Property ;
  rdfs:label "distinct subjects" ;
  rdfs:comment "The total number of distinct subjects in a void:Dataset. In other words, the number of distinct resources that occur in the subject position of triples in the dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

voidext:isSubsetOf a rdf:Property ;
  rdfs:label "is subset of" ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> .

voidext:supportFederatedQuery a rdf:Property ;
  rdfs:label "supports SPARQL 1.1 federated query"@en ;
  rdfs:comment "This property should be used to explicitly assert that a void:Dataset supports SPARQL 1.1. federated queries to be able to access the dataset with the SERVICE keyword and perform federated join queries."@en ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:boolean .

<http://rdfs.org/ns/void#entities> a rdf:Property ;
  rdfs:label "number of entities" ;
  rdfs:comment "The total number of entities that are described in a void:Dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

<http://rdfs.org/ns/void#feature> a rdf:Property ;
  rdfs:label "feature" ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://rdfs.org/ns/void#TechnicalFeature> .

<http://rdfs.org/ns/void#uriSpace> a rdf:Property ;
  rdfs:label "URI space" ;
  rdfs:comment "A URI that is a common string prefix of all the entity URIs in a void:Dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#classes> a rdf:Property ;
  rdfs:label "classes" ;
  rdfs:comment "The total number of distinct classes in a void:Dataset. In other words, the number of distinct resources occuring as objects of rdf:type triples in the dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

<http://rdfs.org/ns/void#dataDump> a rdf:Property ;
  rdfs:label "Data Dump" ;
  rdfs:comment "An RDF dump, partial or complete, of a void:Dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#exampleResource> a rdf:Property ;
  rdfs:label "example resource of dataset" ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#vocabulary> a rdf:Property ;
  rdfs:label "vocabulary" ;
  rdfs:comment "A vocabulary that is used in the dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#rootResource> a rdf:Property ;
  rdfs:label "root resource" ;
  rdfs:comment "A top concept or entry point for a void:Dataset that is structured in a tree-like fashion. All resources in a dataset can be reached by following links from its root resources in a small number of steps." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#documents> a rdf:Property ;
  rdfs:label "number of documents" ;
  rdfs:comment "The total number of documents, for datasets that are published as a set of individual documents, such as RDF/XML documents or RDFa-annotated web pages. Non-RDF documents, such as web pages in HTML or images, are usually not included in this count. This property is intended for datasets where the total number of triples or entities is hard to determine. void:triples or void:entities should be preferred where practical." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

<http://rdfs.org/ns/void#properties> a rdf:Property ;
  rdfs:label "number of properties" ;
  rdfs:comment "The total number of distinct properties in a void:Dataset. In other words, the number of distinct resources that occur in the predicate position of triples in the dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

<http://rdfs.org/ns/void#sparqlEndpoint> a rdf:Property ;
  rdfs:label "has a SPARQL endpoint at" ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#subset> a rdf:Property ;
  rdfs:label "has subset" ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> .

<http://rdfs.org/ns/void#openSearchDescription> a rdf:Property ;
  rdfs:label "open search description" ;
  rdfs:comment "An OpenSearch description document for a free-text search service over a void:Dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <http://xmlns.com/foaf/0.1/Document> .

<http://rdfs.org/ns/void#uriLookupEndpoint> a rdf:Property ;
  rdfs:label "has an URI look-up endpoint at" ;
  rdfs:comment "Defines a simple URI look-up protocol for accessing a dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range <https://w3id.org/linkml/Any> .

<http://rdfs.org/ns/void#triples> a rdf:Property ;
  rdfs:label "number of triples" ;
  rdfs:comment "The total number of triples contained in a void:Dataset." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range xsd:integer .

<http://rdfs.org/ns/void#class> a rdf:Property ;
  rdfs:label "class" ;
  rdfs:comment "The rdfs:Class that is the rdf:type of all entities in a class-based partition." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range rdfs:Class .

<http://rdfs.org/ns/void#property> a rdf:Property ;
  rdfs:label "property" ;
  rdfs:comment "The rdf:Property that is the predicate of all triples in a property-based partition." ;
  rdfs:domain <http://rdfs.org/ns/void#Dataset> ;
  rdfs:range rdf:Property .

voidext:SimpleLinkSet a rdfs:Class ;
  rdfs:label "Simple link set"@en ;
  rdfs:comment "A simple link set must be a linkset that does not target another linkset (i.e. it has exactly one link predicate) or a set with exactly the same shared instances of the same type (i.e. class) in both datasets. The instances of this class must be also instances of either void:Linkset or voidext:SharedInstanceSet."@en ;
  rdfs:subClassOf voidext:VirtualLinkSet .

voidext:hasPerformanceMeasure a rdf:Property ;
  rdfs:label "has performance measure"@en ;
  rdfs:comment "This property assings the performance of the virtual link set, for example, in terms of recall and precision. The values to be assigned (property range) are represented with the ontology MEX Performance Ontology."@en ;
  rdfs:domain voidext:VirtualLinkSet ;
  rdfs:range <http://mex.aksw.org/mex-perf#PerformanceMeasure> .

<http://rdfs.org/ns/void#Dataset> a rdfs:Class ;
  rdfs:label "dataset" ;
  rdfs:comment "A set of RDF triples that are published, maintained or aggregated by a single provider." .

<http://www.w3.org/ns/prov#Entity> a rdfs:Class .

<http://rdfs.org/ns/void#Linkset> a rdfs:Class ;
  rdfs:label "linkset" ;
  rdfs:comment "A collection of RDF links between two void:Datasets." ;
  rdfs:subClassOf <http://rdfs.org/ns/void#Dataset> , voidext:LINK_SHAREDINSTANCE_SET .

<http://rdfs.org/ns/void#subjectsTarget> a rdf:Property ;
  rdfs:label "Subjects Target" ;
  rdfs:comment "The dataset describing the subjects of triples contained in the Linkset." ;
  rdfs:domain <http://rdfs.org/ns/void#Linkset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> ;
  rdfs:subPropertyOf <http://rdfs.org/ns/void#target> .

voidext:linkPredicateDomain a rdf:Property ;
  rdfs:label "link predicate domain"@en ;
  rdfs:comment "The link predicate's subject type (i.e. class), if any. Moreover, in the case of a void:Linkset that is classified as a simple link set (voidext:SimpleLinkSet), if the two datasets are linked through the link predicate's subject then the link predicate domain must be specified. Indeed, this subject matches a second resource in an external dataset. Therefore, the type of this second resource is asserted as the link predicate domain."@en ;
  rdfs:domain <http://rdfs.org/ns/void#Linkset> ;
  rdfs:range rdfs:Class .

<http://rdfs.org/ns/void#objectsTarget> a rdf:Property ;
  rdfs:label "Objects Target" ;
  rdfs:comment "The dataset describing the objects of the triples contained in the Linkset." ;
  rdfs:domain <http://rdfs.org/ns/void#Linkset> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> ;
  rdfs:subPropertyOf <http://rdfs.org/ns/void#target> .

voidext:linkPredicateRange a rdf:Property ;
  rdfs:label "link predicate range"@en ;
  rdfs:comment "The link predicate's object type (i.e. class), if any. Moreover, in the case of a void:Linkset that is not classified as a simple link set, if the two datasets are linked through the link predicate's object then the link predicate range must be specified. Indeed, this object matches a second resource in an external dataset. Therefore, the type of this second resource is asserted as the link predicate range."@en ;
  rdfs:domain <http://rdfs.org/ns/void#Linkset> ;
  rdfs:range rdfs:Class .

<http://rdfs.org/ns/void#linkPredicate> a rdf:Property ;
  rdfs:label "a link predicate" ;
  rdfs:comment "It specifies the RDF predicate in a given dataset that relates to another dataset. In other words, the link predicate is the RDF property in the predicate position of an RDF triple that links two datasets." ;
  rdfs:domain <http://rdfs.org/ns/void#Linkset> ;
  rdfs:range rdf:Property .

<http://rdfs.org/ns/void#DatasetDescription> a rdfs:Class ;
  rdfs:label "dataset description" ;
  rdfs:comment "A web resource whose foaf:primaryTopic or foaf:topics include void:Datasets." ;
  rdfs:subClassOf <http://xmlns.com/foaf/0.1/Document> .

<http://rdfs.org/ns/void#inDataset> a rdf:Property ;
  rdfs:label "in dataset" ;
  rdfs:comment "Points to the void:Dataset that a document is a part of." ;
  rdfs:domain <http://xmlns.com/foaf/0.1/Document> ;
  rdfs:range <http://rdfs.org/ns/void#Dataset> .

<http://purl.org/dc/terms/ProvenanceStatement> a rdfs:Class ;
  rdfs:label "Provenance Statement" .

<http://xmlns.com/foaf/0.1/Person> a rdfs:Class .

<http://rdfs.org/ns/void#TechnicalFeature> a rdfs:Class ;
  rdfs:label "technical feature" ;
  rdfs:comment "A technical feature of a void:Dataset, such as a supported RDF serialization format." .

<http://purl.org/dc/terms/Agent> a rdfs:Class .

rdfs:Class a rdfs:Class .

<http://xmlns.com/foaf/0.1/Document> a rdfs:Class .

<http://www.w3.org/ns/sparql-service-description#Dataset> a rdfs:Class ;
  rdfs:subClassOf <http://rdfs.org/ns/void#Dataset> .

voidext:VirtualLinkSet a rdfs:Class ;
  rdfs:label "Virtual link set"@en ;
  rdfs:comment "A set of virtual links between two datasets. A virtual link is a connection between resources such as literals and instances with some commonality. Each of these resources is from a different RDF dataset. A resource mapping can be also considered when defining common resources between datasets. For example, the datasets uses different prefix namespaces for similar instances in a given domain scope. A virtual link can be interpreted as an intersection data point between two datasets. In addition, a virtual link is not concretely stored. The link may be physically established during a federated query execution, for example. This class must only have instances of its subclasses. It is recommendable to comment (rdfs:comment) the scope of the virtual link set."@en .

<http://mex.aksw.org/mex-perf#PerformanceMeasure> a rdfs:Class ;
  rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> .

<http://www.w3.org/ns/sparql-service-description#Graph> a rdfs:Class ;
  rdfs:subClassOf <http://rdfs.org/ns/void#Dataset> .

voidext:ComplexLinkSet a rdfs:Class ;
  rdfs:label "Complex link set"@en ;
  rdfs:comment "It is a complex virtual link set. A complex link set is composed of exactly two link sets xor two shared instance sets where xor is the exclusive or. For example, two link sets that intersects at some graph node (e.g. the object nodes of link predicates)."@en ;
  rdfs:subClassOf voidext:VirtualLinkSet .

voidext:intersectionType a rdf:Property ;
  rdfs:label "intersection type"@en ;
  rdfs:comment "This property assigns the intersection type of two RDF triples in different datasets (void:Dataset). In other words, if the intersection occurs at the subject xor the object node of a link predicate."@en ;
  rdfs:domain voidext:ComplexLinkSet ;
  rdfs:range voidext:LinkSetIntersection .

voidext:intersectAt a rdf:Property ;
  rdfs:label "intersects at"@en ;
  rdfs:comment "This property is used to assign exactly either two shared instance sets (voidext:SharedInstanceSet) or two link sets (void:Linkset) to compose a complex link set (voidext:ComplexLinkSet). For each void:Linkset, either the subject or the object node of its link predicate intersects an RDF node of the link predicate from the other link set. In other words, the subject xor the object of a link predicate matches the subject xor the object of the other link predicate, where xor is the exclusive or. These link predicates must be from different datasets."@en ;
  rdfs:domain voidext:ComplexLinkSet ;
  rdfs:range voidext:LINK_SHAREDINSTANCE_SET .

voidext:recommendedMapping a rdf:Property ;
  rdfs:label "recommended mapping from"@en ;
  rdfs:comment "If more than one mapping is defined in the different void:Linkset(s) that are part of a voidext:ComplexLinkSet, one of the resource mappings may be recommended by asserting this property. The recommended mapping is the one stated to the void:Linkset assigned as the value of this property. If no mapping is explicitly recommended, solely one of them must arbitrarily be applied to establish a virtual link. At most one mapping function can be defined either per linkset or per shared instance set."@en ;
  rdfs:domain voidext:ComplexLinkSet ;
  rdfs:range voidext:LINK_SHAREDINSTANCE_SET .

<http://mex.aksw.org/mex-perf#ClassificationMeasure> a rdfs:Class ;
  rdfs:subClassOf <http://mex.aksw.org/mex-perf#PerformanceMeasure> .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object" .

rdf:Property a rdfs:Class .

voidext:queryLinkset a rdf:Property ;
  rdfs:label "query for linkset"@en ;
  rdfs:comment "This property must only assign one standard SPARQL query per category (i.e. subclass) of VirtualLinkSet to retrieve the formal definition of linkset (i.e. query projection) as presented in the voidext specification."@en ;
  rdfs:range xsd:string .

voidext:querySharedInstanceSet a rdf:Property ;
  rdfs:label "query for shared instance set"@en ;
  rdfs:comment "This property must only assign one standard SPARQL query per category (i.e. subclass) of VirtualLinkSet to retrieve the formal definition of shared instance set (i.e. query projection) as presented in the voidext specification."@en ;
  rdfs:range xsd:string .

voidext:LinkSetIntersection a rdfs:Class ;
  rdfs:label "Linkset intersection"@en ;
  rdfs:comment "The possible intersection types between the RDF graph nodes in different void:Dataset(s) (i.e. either the subject or the object node of a link predicate). The instances of this class are exclusively voidext:OBJECT_OBJECT, voidext:OBJECT_SUBJECT, and voidext:SUBJECT_SUBJECT."@en .

voidext:SUBJECT_OBJECT a voidext:LinkSetIntersection ;
  rdfs:label "Subject-object intersection"@en ;
  rdfs:comment "The intersection between two void:Dataset(s) (i.e. knowledge graphs) occurs at the object node of one data set (graph) and the subject node of another data set (graph)."@en .

voidext:OBJECT_OBJECT a voidext:LinkSetIntersection ;
  rdfs:label "Object-object intersection"@en ;
  rdfs:comment "The intersection between two void:Dataset(s) (i.e. knowledge graphs) occurs at the object node in both datasets."@en .

voidext:SUBJECT_SUBJECT a voidext:LinkSetIntersection ;
  rdfs:label "Subject-subject intersection"@en ;
  rdfs:comment "The intersection between two void:Dataset(s) (i.e. knowledge graphs) occurs at the subject node in both datasets."@en .
