Найдите перекрытое время и местоположение с помощью SPARQL - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу перечислить людей, чей отпуск совпадает по дате и месту.Например,

  • Джон Доу оставался в Hilton NY с 10 по 20 февраля
  • Джейн Доу оставался в Hilton NY с 18 февраля по 20

, поэтомуЯ хочу создать триплет типа

JohnDoe mightSeeTo JaneDoe

Каков наилучший способ разработки онтологии для упрощения запросов, связанных со временем?Как с помощью SPARQL решить эту (примерную) проблему запроса?

@prefix :   <http://www.localhost/ns#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix time: <http://www.w3.org/2006/time#> . 

<http://www.localhost/ns> a owl:Ontology;
  rdfs:label "Sample Ontology".

:Person rdf:type owl:Class. 
:Hotel rdf:type owl:Class . 

:book rdf:type owl:ObjectProperty ;
        rdfs:domain     :Person ;
        rdfs:range      :Hotel .

:vacationStartDate rdf:type  owl:DatatypeProperty ;
        rdfs:domain  :Person ;
        rdfs:range   xsd:date .

:vacationEndDate rdf:type  owl:DatatypeProperty ;
        rdfs:domain  :Person ;
        rdfs:range   xsd:date .

###Dis

:Person owl:disjointWith :Hotel .  

###INDIV

:P1 a :Person .
:P2 a :Person .
:P3 a :Person . 
:L1 a :Hotel .
:L2 a :Hotel .
:L3 a :Hotel . 

:P1 :vacationStartDate "2019-09-10" .
:P1 :vacationEndDate "2019-09-25" .
:P1 :book :L1 . 

:P2 :vacationStartDate "2019-09-10" .
:P2 :vacationEndDate "2019-09-25" .
:P2 :book :L1 . 

:P3 :vacationStartDate "2019-09-01" .
:P3 :vacationEndDate "2019-09-30" .
:P3 :book :L2 . 
...