コード例 #1
0
        public void TestEdgeIsInferibleTrue()
        {
            var edge      = new Edge(0, "?prop0", 0, 1, new[] { "http://www.wikidata.org/prop/direct/P25" });
            var queryEdge = new QueryEdge(edge);

            Assert.True(queryEdge.IsInferible());
        }
コード例 #2
0
        public void TestEdgeIsInferibleFalse()
        {
            var edge      = new Edge(0, "?prop0", 0, 1);
            var queryEdge = new QueryEdge(edge);

            Assert.False(queryEdge.IsInferible());
        }
コード例 #3
0
        public void TestEdgeIsInferibleFalseInstanceOf()
        {
            var edge      = new Edge(0, "?prop0", 0, 1, new[] { "http://www.wikidata.org/prop/direct/P31" });
            var queryEdge = new QueryEdge(edge);

            Assert.False(queryEdge.IsInferible());
        }
コード例 #4
0
        public void TestEdgeHasInstanceOfTrue()
        {
            var edge      = new Edge(0, "?prop0", 0, 1, new[] { "http://www.wikidata.org/prop/direct/P31" });
            var queryEdge = new QueryEdge(edge);

            Assert.True(queryEdge.HasInstanceOf());
        }
コード例 #5
0
        public void TestEdgeHasInstanceOfFalse()
        {
            var edge      = new Edge(0, "?prop0", 0, 1);
            var queryEdge = new QueryEdge(edge);

            Assert.False(queryEdge.HasInstanceOf());
        }
コード例 #6
0
        private static QueryEdge CreateEdge(GraphImplementations.Schema.Edge schemaEdge, IEnumerable <QueryVertex> queryVertices)
        {
            var queryEdge = new QueryEdge(
                queryVertices.First(v => v.Value.TypeId == schemaEdge.From.Value.TypeId),
                queryVertices.First(v => v.Value.TypeId == schemaEdge.To.Value.TypeId),
                schemaEdge.Value);

            return(queryEdge);
        }
コード例 #7
0
        public static SparqlQuery ToSparql(this QueryEdge edge, QueryGraph graph)
        {
            var queryBuilder = QueryBuilder.SelectAll().Distinct();

            var source = edge.GetSourceNode(graph);
            var target = edge.GetTargetNode(graph);

            source.TraverseNodeToSparql(queryBuilder, graph);
            target.TraverseNodeToSparql(queryBuilder, graph);

            queryBuilder.Limit(100);

            return(queryBuilder.BuildQuery());
        }
コード例 #8
0
 private static TriplePatternObjectPart ToPredicate(this TriplePatternPredicatePart subject, QueryEdge edge)
 {
     return(edge.IsConstant
         ? subject.PredicateUri(new Uri(edge.uris.First().ToPropertyIri()))
         : subject.Predicate(edge.name));
 }
コード例 #9
0
 public static bool IsInferible(this QueryEdge edge)
 {
     return(edge.uris.Any() && !edge.HasInstanceOf());
 }
コード例 #10
0
 /// <summary>
 /// Given an Edge, checks if the Edge.uris has any value ending with "P31" (InstanceOf)
 /// </summary>
 public static bool HasInstanceOf(this QueryEdge edge)
 {
     return(edge.uris.HasInstanceOf());
 }
コード例 #11
0
 /// <summary>
 /// Given an Edge, get the Graph's Node, where Node.Id equals Edge.TargetId
 /// </summary>
 public static QueryNode GetTargetNode(this QueryEdge edge, QueryGraph graph)
 {
     return(graph.Nodes.FirstOrDefault(x => x.Key.Equals(edge.targetId)).Value);
 }